Deploy Laravel 9 Nginx Mysql trên Ubuntu 20.04 kết nối Sql Server

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.

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
Cài đặt Nginx Ubuntu 20.04
Cài đặt Nginx Ubuntu 20.04

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
Đăng nhập vào Mysql với người dùng root
Đăng nhập vào Mysql với người dùng root

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!

Viết một bình luận