Đã đăng vào thg 11 18, 2019 9:34 SA 6 phút đọc 6 phút đọc
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à:
//www.vultr.com/
//www.digitalocean.com/
Hướng dẫn deploy
Đăng nhập
- Mở Terminal trên Ubuntu lên và gõ lệnh:
ssh username@ip
[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
sudo apt install nginx
Install PHP + PHP-FPM
sudo add-apt-repository ppa:ondrej/php
sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
install MySQL
sudo apt-get update
sudo apt-get install mysql-server
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
sudo apt install nginx
9 cùng với sudo add-apt-repository ppa:ondrej/php
sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
0, các bạn gõ lệnhsudo nano /etc/nginx/sites-available/default
nó hiện ra như này
rồi tìm đến đoạn
sudo add-apt-repository ppa:ondrej/php
sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
1 và chỉnh sửa lại đoạn đấy lại như sau:location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.3-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php7.3-fpm:
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
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]
sudo adduser deploy
/// cấp quyền sudo cho user deploy
sudo usermod –aG sudo deploy
/// permission cho user deploy
sudo nano /etc/sudoers
/// Thêm đoạn này vào
%deploy ALL=[ALL]: ALL
/// Generate ssh key cho user deploy
sudo su deploy /// switch user deploy
ssh-keygen -t rsa /// generate ssh key
cat .ssh/id_rsa.pub /// lấy public ssh key
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"
sudo nano /etc/nginx/ngnix.conf
đổi user www-data thành user deploy
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"
sudo nano /etc/php/7.3/fpm/pool.d/www.conf
đổi
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
thành
user = deploy
group = deploy
listen.owner = deploy
listen.group = deploy
Sau khi config change user thì restart nginx và php-fpm
sudo /etc/init.d/nginx restart
sudo /etc/init.d/php-fpm7.3 restart
Add deploy key vào repository
- Vào repository trên github add deploy key
Deployment
ssh lên server
ssh username@ip
su deploy
sudo apt-get install git
Pull code trên repo github của bạn
sudo apt install nginx
0Cài đặt thêm các package phục vụ việc setup
- install
2sudo add-apt-repository ppa:ondrej/php sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
sudo apt install nginx
1- install
3sudo add-apt-repository ppa:ondrej/php sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
sudo apt install nginx
2- install
4sudo add-apt-repository ppa:ondrej/php sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
sudo apt install nginx
3Setup các package và config file
sudo add-apt-repository ppa:ondrej/php
sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
5- Di chuyển vào project
sudo apt install nginx
4Chạy migrate
sudo apt install nginx
5Bướ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ó
sudo apt install nginx
6- Vì mặc định nginx nó đang đọc
6 nên cần xóa filesudo add-apt-repository ppa:ondrej/php sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
7 rồi symlinkssudo add-apt-repository ppa:ondrej/php sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
8 đếnsudo add-apt-repository ppa:ondrej/php sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
9 để defaul đọc config ở deploy.confsudo add-apt-repository ppa:ondrej/php sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql
sudo apt install nginx
7- Restart nginx, php-fpm:
sudo apt install nginx
8Lên trình duyệt gõ địa chỉ ip và xem kết quả nhé
All rights reserved