Hướng dẫn deploy Application PHP lên VPS Ubuntu

Tram Ho

Mở đầu

  • Khi hoàn thành một project thì công việc tiếp theo là deploy nó để mọi người có thể xem app của bạn. Với những project mang tính chất học tập thì các bạn có thể deply nó lên các server miễn phí (ví dụ Heroku).Tuy nhiên vì nó miễn phí nên nó còn gặp nhiều vấn đề.Chính vì vậy, hôm nay mình sẽ hướng dẫn các bạn deploy một project Laravel sử dụng VPS Ubuntu.

VPS là gì?

  • VPS (Virtual Private Server) là một dạng máy chủ ảo được tạo ra từ phương pháp phân chia một máy chủ vật lý thành nhiều các máy chủ khác nhau có tính năng tương tự như máy chủ riêng. Và chạy dưới dạng chia sẻ tài nguyên từ máy chủ vật lý ban đầu. Và mỗi VPS sẽ có một phần CPU, dung lượng RAM, dung lượng ổ HDD, địa chỉ IP và hệ điều hành riêng biệt, người dùng có toàn quyền quản lý root và có thể khởi động lại hệ thống bất cứ lúc nào họ muốn.

Thông số cần biết khi thuê máy chủ ảo VPS là gì?

  • RAM của máy chủ: Để giúp server VPS hoạt động mượt và ổn định, nên chọn sản phẩm có càng nhiều RAM càng tốt. Hầu hết các loại RAM đều có điểm tương đồng về mặt hiệu năng. Khi mua hay thuê VPS, nên hỏi kĩ nhà cung cấp rằng RAM cho server vật lý hay server ảo.
  • SWAP máy chủ ảo VPS được hiểu là gì? :SWAP là bộ nhớ ảo lưu lại các hành động xử lý cũ nếu như bộ nhớ RAM bị đầy. Bản thân SWAP là một không gian lưu trữ trên ổ cứng chứ không phải là một bộ nhớ độc lập. Không phải VPS nào cũng hỗ trợ bộ nhớ SWAP mà chỉ có các XEN VPS mới hỗ trợ SWAP.
  • Ổ cứng (disk): Là không lưu trữ sẽ được sử dụng để lưu các file cài đặt của hệ điều hành và các file của mã nguồn website bạn lưu trên đó. Ổ đĩa hiện nay được chia làm 2 loại: HDD và SSD. Ổ cứng loại SSD thường giá sẽ đắt hơn loại ổ HDD.
  • Băng thông (Band Width): Hãy ví độ lớn của băng thông cũng như độ rộng của đường phố. Phố càng rộng, giao thông càng thuận lợi và ngược lại. Các nhà cung cấp băng thông thường cung cấp lượng băng thông tối thiểu 10 – 20 Mbps.
  • Thời gian Up-time của máy chủ ảo VPS là gì?: Một lưu ý nữa bạn cần biết khi chọn mua hoặc thuê server đó là thời gian Up-time của nó. Thời gian up-time của VPS thường được ước lượng từ thời gian hoạt động của nó. Thời gian hoạt động của VPS từ 99.95 đến 99.9% thì bạn đều có thể chấp nhận mua được.
  • Hệ điều hành máy chủ ảo VPS là gì?
    Máy chủ ảo VPS có 2 hệ điều hành phổ biến gồm: Linux và Window. Linux thân thiện người dùng, hỗ trợ ứng dụng nhiều hơn với chi phí ít hơn so với Window. Tuy nhiên, làm việc với Dot Net hoặc Visual Studio, bạn nên chọn VPS Window.

VPS lấy ở đâu ?

  • Chính vì xịn xò như thế nên đa phần VPS đều phải mua.Có một số nhà cung cấp nổi tiếng trên thế giới mà mình biết là:

https://www.vultr.com/

https://www.digitalocean.com/

Hướng dẫn deploy

Đăng nhập

  • Mở Terminal trên Ubuntu lên và gõ lệnh:

(với username và ip là các thông số sau khi đăng ký VPS cung cấp)

Sau đó nhập password (đăng ký VPS cung cấp)
Sau khi đăng nhập xong có giao diện thế này

Cài đặt các thành phần cần thiết để chạy PHP Application

Install nginx

Install PHP + PHP-FPM

install MySQL

Sau khi đã cài xong các thành phần cần thiết để chạy PHP Application thì ta cần config lại nginx cùng với php-fpm, các bạn gõ lệnh

nó hiện ra như này

rồi tìm đến đoạn location ~ .php$ và chỉnh sửa lại đoạn đấy lại như sau:

Tạo user deploy – Phục vụ auto deploy (Optional)

  • Để thực hiện các tác vụ deploy trên một user chuyên biệt. Cô lập với các tài khoản user khác.
  • Cần sinh ra SSH key để có thể pull source code thông qua SSH (phục vụ việc auto deploy)

Chuyển user chạy tiến trình nginx thành user deploy

  • Để tránh các vấn đề về file/folder permission sau khi deploy. Bởi các tiến trình của Nginx cần có quyền đọc, ghi và thực thi trên các thư mục “storage” và “bootstrap/cache”

Chuyển user chạy tiến trình php-fpm thành user deploy

  • Để tránh các vấn đề về file/folder permission sau khi deploy. Bởi các tiến trình của php-fpm cần có quyền đọc, ghi và thực thi trên các thư mục “storage” và “bootstrap/cache”

Add deploy key vào repository

  • Vào repository trên github add deploy key

Deployment

ssh lên server

Pull code trên repo github của bạn

Cài đặt thêm các package phục vụ việc setup

  • install composer

  • install node/npm

  • install yarrn

Setup các package và config file .env

  • Di chuyển vào project

Chạy migrate

Bước cuối cùng và quan trọng nhất là Setup virtual host để trỏ vào thư mục project

  • Tạo file config deploy trong nginx và config nó

  • Vì mặc định nginx nó đang đọc file /etc/nginx/sites-enabled/default nên cần xóa file /etc/nginx/sites-enabled/default rồi symlinks /etc/nginx/conf.d/deploy.conf đến /etc/nginx/sites-enabled
    để defaul đọc config ở deploy.conf

  • Restart nginx, php-fpm:

Lên trình duyệt gõ địa chỉ ip và xem kết quả nhé 😅

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo