Trong phạm vi bài viết này mình sẽ trình bày chi tiết các bước để deploy một con server dùng cho việc test cũng như chạy thực tế. Giả sử bạn cần build một ứng dụng Laravel sử dụng DB là Mysql và kết nối lấy dữ liệu từ một server DB khác là Sql server thì bài viết dưới đây sẽ hữu ích.
- 1. Cài đặt Server Ubuntu 20.04
- 2. Cài đặt Nginx web server
- 3. Cài đặt các PHP 8.1 và Module cần thiết cho PHP
- 4. Cài đặt Mysql và tạo CSDL
- 4. Cài đặt trình điều khiển Sql Server
- 5. Cài đặt Composer để cài đặt các gói PHP
- 6. Cài đặt Git để clone Source code về server
- 7. Cấp quyền thư mục và cài đặt các package của composer
- 8. Tạo file cấu hình cho Laravel và thiết lập thông tin kết nối DB
- 9. Config thông tin web vào file cấu hình của Nginx
- 10. Một số command cần dùng khác
Trong bài viết sẽ cài đặt Nginx trên Ubuntu 20.04 và kết nối DB đến Sql server và Migration là Mysql. Các bài viết hướng dẫn thì cũng khá nhiều rồi, tuy nhiên Laravel 9 vừa ra mắt nên sẵn build luôn cũng PHP 8.1 cho mới.
1. Cài đặt Server Ubuntu 20.04
Đầu tiên thì anh em cần chuẩn bị một con server. Với mình thì hiện đang dùng của Vultr 10$/ tháng là vọc thoải mái rồi. Khi mua server xong thì trong cài đặt của server sẽ cho mình chọn hệ điều hành cần dùng luôn.
Cách hai thì build một con máy ảo sử dụng Virtual Box và tiến hành tải file ISO và cài đặt.
2. Cài đặt Nginx web server
Sau khi đã chuẩn bị ubuntu 20.04 thì các bước để cài đặt Nginx như sau:
Cập nhật hệ thống
sudo apt-get update
sudo apt-get upgrade
Cài đặt Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Sau khi start Nginx thì ta thực hiện kiểm tra trạng thái hoạt động của Nginx đã cài đặt oke chưa nhé.
systemctl status nginx

Hiện active (running) màu xanh ở trên là ngon rồi, nhấn Ctrl C để thoát khỏi câu lệnh trên.
3. Cài đặt các PHP 8.1 và Module cần thiết cho PHP
Để cài đặt PHP trên Ubuntu thì chạy 2 câu lệnh bên dưới. Câu đầu là add repository cần cài, câu thứ 2 là tải và cài đặt các thư viện PHP nằm trong repository này.
sudo add-apt-repository ppa:ondrej/php -y
sudo apt install -y php8.1 php8.1-{cli,gd,curl,mysql,ldap,zip,fileinfo,fpm,xml,mbstring,exif,pspell,imagick,bcmath}
Trường hợp cài đặt gặp lỗi thì anh em thử cài riêng lẻ từng thư viện nhé. Ví dụ:
sudo apt install -y php8.1 php8.1-curl php8.1-mysql
4. Cài đặt Mysql và tạo CSDL
Cài đặt Mysql-server
sudo apt install mysql-server
Khởi chạy chế độ cài đặt của mysql
sudo mysql_secure_installation
Sau khi hoàn thành các thiết lập ban đầu, đăng nhập vào Mysql bằng lệnh sau và tạo cơ sở dữ liệu và người dùng.
sudo mysql -u root -p

Tạo một người dùng mới với tên là *vooclaptrinh* và mật khẩu là 123456
CREATE USER 'vooclaptrinh_user'@'localhost' IDENTIFIED BY '123456';
Tạo mới một database tên là vooclaptrinh
CREATE DATABASE vooclaptrinh;
Thực hiện cấp quyền truy cập vào database cho người dùng vừa tạo bằng lệnh:
Trong đó vooclaptrinh là tên database tạo ở trên và *vooclaptrinh_user* là tên user sử dụng DB.
GRANT ALL PRIVILEGES ON vooclaptrinh.* TO 'vooclaptrinh_user'@'localhost';
Tiếp theo gõ quit hoặc exit để thoát khỏi trình nhắc lệnh của mysql.
4. Cài đặt trình điều khiển Sql Server
Đối với ứng dụng PHP có kết nối đến Sql Server chúng ta cần cài đặt thêm Driver của Microsoft. Cụ thể như sau.
Cài đặt trình điều khiển Microsoft ODBC. (Yêu cầu cài đặt trình điều khiển PHP SQL Server)
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
sudo apt-get install -y unixodbc-dev
Cài đặt trình điều khiển cho PHP cho Microsoft SQL Server
sudo apt install php-pear
sudo apt install php-dev
sudo pecl config-set php_ini /etc/php/8.1/fpm/php.ini
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
ls /etc/php/8.1/fpm/conf.d/*sqlsrv.ini
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
Trường hợp gặp vấn đề khi cài đặt thư viện Sql server cho PHP ở trên thì bạn có thể tham khảo tại trang chủ khá chi tiết.
5. Cài đặt Composer để cài đặt các gói PHP
Đến bước này thì hẳn anh em nào cũng phải cài đặt qua rồi.
sudo wget -O composer-setup.php https://getcomposer.org/installer
sudo php composer-setup.php --install-dir=/usr/bin --filename=composer
6. Cài đặt Git để clone Source code về server
Cài git và di chuyển vào thư mục sẽ chứa source code của server
sudo apt install git
cd /var/www/html
sudo git clone https://github.com/votanlanh94/reponame.git
7. Cấp quyền thư mục và cài đặt các package của composer
Cấp quyền user www-data trong thư mục /var/www/html/
Thêm user vào www-data group
Cấp quyền cho user www-data vào thư mục storage của source code …
sudo chown -R $USER:www-data /var/www/html/
sudo usermod -a -G www-data $USER
sudo chown -R www-data:www-data storage
sudo chmod -R 775 storage
sudo chmod -R 775 bootstrap/cache
composer install
8. Tạo file cấu hình cho Laravel và thiết lập thông tin kết nối DB
Ở bước này thì ai cũng biết rồi nhé. Tạo file .env bằng lệnh copy tệp .env.example sau đó dùng Nano để thay đổi thông tin kết nối cơ sở dữ liệu
cp -a .env.example .env
nano .env
Sau khi điền đẩy đủ các thông tin kết nối DB đã tạo ở bước 4 thì chạy generate key cho ứng dụng Laravel.
php artisan key:generate
Cuối cùng thì chạy migrate
php artisan migrate
Bước này có tạo Seeder thì chạy luôn nhé.
php artisan db:seed
9. Config thông tin web vào file cấu hình của Nginx
Mở file cấu hình Nginx bằng trình Nano. Thông tin sitename bôi đen thay đổi theo tên server của bạn nhé. localhost thì thay bằng IP hoặc tên miền.
sudo nano /etc/nginx/sites-available/vooclaptrinh
Copy và paste thông tin như bên dưới
server {
listen 80;
server_name localhost;
root /var/www/html/vooclaptrinh/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 3600;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Để kiểm tra file cấu hình đã đúng chưa bạn chạy lệnh
nginx -t
Tạo một đường link liên kết file vừa tạo ở trên mới mục các site được kích hoạt bằng lệnh
sudo ln -s /etc/nginx/sites-available/vooclaptrinh /etc/nginx/sites-enabled/
10. Một số command cần dùng khác
Thay đổi thông tin php.ini ví dụ như max_execution_time …
sudo nano /etc/php/8.1/fpm/php.ini
Khởi động lại Nginx và php-fpm sau khi hoàn tất cài đặt.
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm
Load lại cấu hình của Nginx sau khi thay đổi dữ liệu cấu hình.
sudo systemctl reload nginx
Trên đây là tất cả các bước chi tiết để thiết lập ứng dụng Laravel 9 với Nginx trên Ubuntu 20.04 và có kết nối đến dữ liệu từ server Sql Server. Nếu có thắc mắc bạn có thể để lại comment bên dưới nhé.
Chúc bạn thành công!