Cách cài đặt Laravel 5.x với Nginx và PHP-FPM 7.1 trên CentOS 7

theanh

Administrator
Nhân viên
Laravel là một framework PHP mã nguồn mở tuân theo mô hình thiết kế MVC (Model-View-Controller). Nó được Taylor Otwell tạo ra vào năm 2011 như một nỗ lực cung cấp một giải pháp thay thế nâng cao cho framework CodeIgniter (CI). Vào năm 2011, dự án Laravel đã phát hành phiên bản 1 và 2, năm nay phiên bản 5.4 đã được phát hành với nhiều cải tiến như hỗ trợ Dòng lệnh (CLI) có tên là 'artisan', hỗ trợ tích hợp cho nhiều loại cơ sở dữ liệu hơn và định tuyến được cải thiện.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt Laravel Web Framework với máy chủ web Nginx, PHP-FPM 7.1 và MariaDB trên hệ thống CentOS 7. Tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình Laravel trong ngăn xếp LEMP trên máy chủ CentOS 7.

Hướng dẫn này cũng khả dụng cho Laravel trên Ubuntu.

Điều kiện tiên quyết:
  • Máy chủ CentOS 7.
  • Quyền root.

Bước 1 - Cài đặt kho lưu trữ EPEL​

EPEL hay Gói bổ sung cho Enterprise Linux là kho lưu trữ gói bổ sung cung cấp các gói phần mềm hữu ích không có trong kho lưu trữ chính thức của CentOS. Nó có thể được cài đặt trên các bản phân phối Linux dựa trên RPM như CentOS và Fedora.

Trong hướng dẫn này, chúng ta cần kho lưu trữ EPEL để cài đặt Nginx vì các gói Nginx không tồn tại trong kho lưu trữ CentOS chính thức. Cài đặt kho lưu trữ EPEL bằng lệnh yum bên dưới.
Mã:
yum -y install epel-release
Kho lưu trữ EPEL đã được cài đặt.

Bước 2 - Cài đặt Nginx​

Trong hướng dẫn này, chúng ta sẽ chạy Laravel trong LEMP Stack. Nginx là phần máy chủ web của ngăn xếp LEMP và có thể được cài đặt từ kho lưu trữ EPEL.

Cài đặt Nginx 1.10 từ kho lưu trữ EPEL bằng lệnh yum.
Mã:
yum -y install nginx
Khi quá trình cài đặt hoàn tất, hãy khởi động Nginx và thêm nó để bắt đầu khi khởi động.
Mã:
systemctl start nginx
systemctl enable nginx
Nginx đang chạy trên cổng 80, hãy kiểm tra bằng lệnh netstat bên dưới.
Mã:
netstat -plntu


Trong trường hợp bạn nhận được kết quả là 'Command not found', hãy cài đặt gói net-tools như hiển thị bên dưới.
Mã:
yum -y install net-tools

Bước 3 - Cài đặt và cấu hình PHP-FPM 7.1​

Laravel có thể được cài đặt trên máy chủ có phiên bản PHP >5.6.4. Trong hướng dẫn này, chúng ta sẽ sử dụng phiên bản PHP 7.1 mới nhất được Laravel hỗ trợ.

PHP 7.1 không tồn tại trong kho lưu trữ cơ sở CentOS, chúng ta cần cài đặt nó từ kho lưu trữ của bên thứ ba có tên là 'webtatic'.

Cài đặt kho lưu trữ webtatic bằng lệnh rpm này.
Mã:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Bây giờ chúng ta có thể cài đặt PHP-FPM với tất cả các tiện ích mở rộng cần thiết của Laravel chỉ bằng một lệnh yum.
Mã:
yum install -y php71w php71w-curl php71w-common php71w-cli php71w-mysql php71w-mbstring php71w-fpm php71w-xml php71w-pdo php71w-zip
PHP 7.1 đã được cài đặt trên CentOS của chúng tôi 7 system.

Tiếp theo, cấu hình PHP bằng cách chỉnh sửa tệp cấu hình php.ini bằng vim.
Mã:
vim /etc/php.ini
Bỏ chú thích dòng bên dưới và thay đổi giá trị thành 0.
Mã:
cgi.fix_pathinfo=0
Lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy chỉnh sửa tệp PHP-FPM www.conf.
Mã:
vim /etc/php-fpm.d/www.conf
PHP-FPM sẽ chạy dưới người dùng và nhóm 'nginx', hãy thay đổi giá trị của hai dòng bên dưới thành 'nginx'.
Mã:
user = nginx
group = nginx
Thay vì sử dụng cổng máy chủ, PHP-FPM sẽ chạy dưới tệp asocket. Thay đổi giá trị 'listen' thành đường dẫn '/run/php-fpm/php-fpm.sock' như hiển thị bên dưới.
Mã:
listen = /run/php-fpm/php-fpm.sock
Chủ sở hữu tệp socket sẽ là người dùng 'nginx' và chế độ cấp phép là 660. Bỏ chú thích và thay đổi tất cả các giá trị như sau:
Mã:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Đối với các biến môi trường, bỏ chú thích các dòng này và đặt các giá trị như hiển thị bên dưới.
Mã:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Lưu tệp và thoát khỏi vim, sau đó khởi động PHP-FPM và cho phép chạy khi khởi động.
Mã:
systemctl start php-fpm
systemctl enable php-fpm
PHP-FPM đang chạy dưới tệp socket, hãy kiểm tra bằng lệnh bên dưới.
Mã:
netstat -pl | grep php-fpm.sock


Quá trình cài đặt và cấu hình PHP và PHP-FPM 7.1 đã hoàn tất.

Bước 4 - Cài đặt MariaDB Server​

Bạn có thể sử dụng MySQL hoặc PostgreSQL cho dự án Laravel của mình. Tôi sẽ sử dụng máy chủ cơ sở dữ liệu MariaDB cho hướng dẫn này. Nó có sẵn trong kho lưu trữ CentOS. Cài đặt MariaDB-server bằng lệnh yum bên dưới.
Mã:
yum -y install mariadb mariadb-server
Khi quá trình cài đặt hoàn tất, hãy khởi động 'mariadb' và cho phép nó khởi động khi khởi động.
Mã:
systemctl start mariadb
systemctl enable mariadb
MariaDB đã được khởi động và đang chạy trên cổng 3306, hãy kiểm tra bằng lệnh netstat.
Mã:
netstat -plntu


Tiếp theo, cấu hình mật khẩu gốc cho MariaDB bằng lệnh 'mylsq_secure_installation' bên dưới.
Mã:
mysql_secure_installation
Nhập mật khẩu gốc mariadb của bạn, xóa người dùng ẩn danh, v.v.
Mã:
Đặt mật khẩu gốc? [Y/n] Y
Xóa người dùng ẩn danh? [Y/n] Y
Không cho phép đăng nhập root từ xa? [Y/n] Y
Xóa cơ sở dữ liệu thử nghiệm và truy cập vào cơ sở dữ liệu đó? [Y/n] Y
Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Cài đặt và cấu hình MariaDB đã hoàn tất.

Bước 5 - Cài đặt PHP Composer​

PHP composer là trình quản lý gói cho ngôn ngữ lập trình PHP. Nó được tạo ra vào năm 2011 và lấy cảm hứng từ 'npm' của Node.js và trình cài đặt 'bundler' của Ruby. Cài đặt composer bằng lệnh curl.
Mã:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Khi quá trình cài đặt hoàn tất, hãy thử sử dụng lệnh 'composer' và bạn sẽ thấy kết quả như bên dưới.
Mã:
composer


PHP Composer đã được cài đặt trên CentOS 7.

Bước 6 - Cấu hình Nginx Virtual Host cho Laravel​

Trong bước này, chúng ta sẽ tạo cấu hình nginx virtual host cho dự án Laravel. Chúng ta cần định nghĩa thư mục gốc web cho cài đặt Laravel này, tôi sẽ sử dụng thư mục '/var/www/laravel' làm thư mục gốc web.

Tạo thư mục này bằng lệnh mkdir bên dưới:
Mã:
mkdir -p /var/www/laravel
Tiếp theo, hãy đến thư mục nginx và tạo tệp cấu hình máy chủ ảo mới laravel.conf trong thư mục conf.d.
Mã:
cd /etc/nginx
vim conf.d/laravel.conf
Dán cấu hình bên dưới vào tệp:
Mã:
server {
 listen 80;
 listen [::]:80 ipv6only=on;
 
 # Tệp nhật ký để gỡ lỗi
 access_log /var/log/nginx/laravel-access.log;
 error_log /var/log/nginx/laravel-error.log;
 
 # Thư mục Webroot cho dự án Laravel
 root /var/www/laravel/public;
 index index.php index.html index.htm;
 
 # Tên miền của bạn
 server_name laravel.hakase-labs.co;
 
 location / {
 try_files $uri $uri/ /index.php?$query_string;
 }
 
 # Cấu hình PHP-FPM Nginx
 location ~ \.php$ {
 try_files $uri =404;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
}
Lưu tệp và thoát khỏi vim.

Kiểm tra cấu hình thenginx và đảm bảo không có lỗi, sau đó khởi động lại dịch vụ thenginx.
Mã:
nginx -t
systemctl restart nginx


Cấu hình máy chủ ảo nginx cho Laravel đã hoàn tất.

Bước 7 - Cài đặt Laravel​

Trước khi cài đặt Laravel, chúng ta cần cài đặt unzip trên máy chủ.
Mã:
yum -y install unzip
Bây giờ hãy đến thư mục gốc web laravel '/var/www/laravel'.
Mã:
cd /var/www/laravel
Laravel cung cấp hai cách để cài đặt khung trên server. Chúng ta có thể cài đặt Laravel bằng trình cài đặt Laravel và có thể cài đặt bằng PHP composer. Trong hướng dẫn này, tôi sẽ cài đặt Laravel bằng cách tạo một dự án mới bằng lệnh composer.

Chạy lệnh bên dưới để cài đặt Laravel.
Mã:
composer create-project laravel/laravel .


Chờ quá trình cài đặt Laravel hoàn tất. Quá trình này có thể mất một thời gian.



Khi quá trình cài đặt hoàn tất, hãy thay đổi chủ sở hữu của thư mục gốc web Laravel thành người dùng 'nginx' và thay đổi quyền của thư mục lưu trữ thành 755 bằng các lệnh bên dưới.
Mã:
chown -R nginx:root /var/www/laravel
chmod 755 /var/www/laravel/storage
Quá trình cài đặt Laravel đã hoàn tất.

Bước 8 - Cấu hình SELinux​

Trong hướng dẫn này, Laravel sẽ chạy ở chế độ 'Enforcing' của SELinux. Để kiểm tra trạng thái SELinux, hãy chạy lệnh bên dưới.
Mã:
sestatus


Kết quả là SELinux đang chạy ở chế độ 'Enforcing'.

Tiếp theo, chúng ta cần cài đặt công cụ quản lý SELinux cho CentOS 7.

Cài đặt 'policycoreutils-python' trên máy chủ.
Mã:
yum -y install policycoreutils-python
Bây giờ chúng ta cần thay đổi ngữ cảnh của các thư mục Laravel rồi áp dụng các thay đổi bằng lệnh restorecon. Chạy các lệnh quản lý SELinux như được hiển thị bên dưới.
Mã:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/public(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/storage(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/app(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/bootstrap(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/config(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/database(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/resources(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/routes(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/vendor(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/tests(/.*)?'
restorecon -Rv '/var/www/laravel/'
Cấu hình SELinux cho Laravel đã hoàn tất.


Bước 9 - Kiểm tra Laravel​

Mở trình duyệt web của bạn và nhập URL Laravel của máy chủ của bạn. Chúng tôi đã xác định tên miền cho Laravel trong tệp máy chủ ảo Nginx. Của tôi làlaravel.hakase-labs.co.

Khi bạn truy cập tên miền, bạn sẽ thấy trang chủ Laravel.



Cài đặt Laravel với Nginx, PHP-FPM7 và MariaDB trên CentOS 7 đã thành công.

Tham khảo​

 
Back
Bên trên