Cách cài đặt Laravel PHP Framework với Nginx và Free Let's Encrypt SSL trên AlmaLinux 8

theanh

Administrator
Nhân viên
Laravel là một framework web PHP miễn phí, mã nguồn mở và nhẹ được sử dụng để xây dựng các ứng dụng web dựa trên PHP. Nó phổ biến vì cú pháp thanh lịch, các tính năng nâng cao và bộ công cụ mạnh mẽ. Nó dựa trên framework Symfony và giúp các nhà phát triển đơn giản hóa quá trình phát triển ứng dụng web. Nó cũng cung cấp giao diện dòng lệnh Artisan để thực hiện các thao tác cho ứng dụng của bạn. Nó cung cấp các tính năng mạnh mẽ bao gồm Artisan, Kiến trúc MVC, Ánh xạ quan hệ đối tượng, Công cụ mẫu, Kiểm thử đơn vị và Hệ thống di chuyển cơ sở dữ liệu.

Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách cài đặt Laravel với Nginx trên Alma Linux 8.

Điều kiện tiên quyết​

  • Một máy chủ chạy Alma Linux 8.
  • Một tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
  • Một mật khẩu gốc được cấu hình trên máy chủ của bạn.

Cài đặt LEMP Server​

Trước tiên, bạn sẽ cần cài đặt Nginx, MariaDB, PHP và các tiện ích mở rộng PHP cần thiết khác trên máy chủ của mình. Bạn có thể cài đặt tất cả chúng bằng cách chạy lệnh sau:
Mã:
dnf install nginx mariadb-server php php-fpm php-common php-xml php-mbstring php-json php-zip php-mysqlnd curl unzip -y
Sau khi cài đặt tất cả các gói, hãy chỉnh sửa tệp cấu hình php-fpm và cấu hình để sử dụng Nginx:
Mã:
nano /etc/php-fpm.d/www.conf
Thay đổi các dòng sau:
Mã:
listen.owner = nginxlisten.group = nginx
Lưu và đóng tệp, sau đó chỉnh sửa tệp cấu hình PHP và thay đổi các giá trị mặc định:
Mã:
nano /etc/php.ini
Thay đổi các dòng sau:
Mã:
date.timezone = Asia/Kolkatacgi.fix_pathinfo=1
Lưu và đóng tệp, sau đó khởi động và kích hoạt dịch vụ Nginx, MariaDB và PHP-FPM bằng lệnh sau:
Mã:
systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpm
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt Composer​

Trong bài đăng này, chúng ta sẽ cài đặt Laravel bằng Composer. Vì vậy, bạn sẽ cần cài đặt Composer trên hệ thống của mình. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
curl -sS https://getcomposer.org/installer | php
Bạn sẽ nhận được kết quả sau:
Mã:
Tất cả các thiết lập đều đúng khi sử dụng ComposerĐang tải xuống...Composer (phiên bản 2.2.3) đã được cài đặt thành công vào: /root/composer.pharSử dụng: php composer.phar
Tiếp theo, di chuyển tệp nhị phân Composer đến đường dẫn hệ thống và đặt quyền thích hợp bằng lệnh sau:
Mã:
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
Tiếp theo, xác minh phiên bản Composer bằng lệnh sau:
Mã:
composer --version
Bạn sẽ nhận được kết quả sau:
Mã:
Composer phiên bản 2.2.3 2021-12-31 12:18:53

Cài đặt Laravel trên Alma Linux 8​

Tiếp theo, hãy thay đổi thư mục thành thư mục gốc web Nginx và cài đặt Laravel bằng Composer:
Mã:
cd /var/www/html/
composer create-project --prefer-dist laravel/laravel laravel
Bạn sẽ nhận được kết quả sau:
Mã:
Gói đã khám phá: facade/ignitionGói đã khám phá: fideloper/proxyGói đã khám phá: fruitcake/laravel-corsGói đã khám phá: laravel/tinkerGói đã khám phá: nesbot/carbonGói đã khám phá: nunomaduro/collisionGói manifest đã được tạo thành công.69 gói bạn đang sử dụng đang tìm kiếm nguồn tài trợ.Sử dụng lệnh `composer fund` để tìm hiểu thêm!> @php artisan key:generate --ansiKhóa ứng dụng đã được thiết lập thành công.
Tiếp theo, thiết lập quyền sở hữu và quyền hạn phù hợp cho Laravel:
Mã:
chown -R nginx:nginx /var/www/html/laravel/
chown -R nginx:nginx /var/www/html/laravel/storage/
chown -R nginx:nginx /var/www/html/laravel/bootstrap/cache/
chmod -R 0777 /var/www/html/laravel/storage/
chmod -R 0775 /var/www/html/laravel/bootstrap/cache/
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Tạo Nginx Virtual Host cho Laravel​

Tiếp theo, bạn sẽ cần tạo một tệp cấu hình Nginx cho Laravel. Bạn có thể tạo tệp này bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/laravel.conf
Thêm các dòng sau:
Mã:
server { lắng nghe 80; server_name laravel.exampledomain.com; root /var/www/html/laravel/public; index index.php; charset utf-8; gzip on; gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php { include fastcgi.conf; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php-fpm/www.sock; } location ~ /\.ht { deny all; }}
Lưu và đóng tệp, sau đó xác minh Laravel xem có lỗi cấu hình nào không:
Mã:
nginx -t
Bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Tiếp theo, khởi động lại dịch vụ Nginx và PHP-FPM để áp dụng các thay đổi:
Mã:
systemctl restart php-fpm
systemctl restart nginx
Bạn cũng có thể xác minh trạng thái Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Bạn sẽ nhận được kết quả sau:
Mã:
? nginx.service - Máy chủ proxy ngược và HTTP nginx Đã tải: đã tải (/usr/lib/systemd/system/nginx.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Drop-In: /usr/lib/systemd/system/nginx.service.d ??php-fpm.conf Đang hoạt động: đang hoạt động (đang chạy) từ Thứ sáu 2022-01-07 08:29:11 UTC; 4 giây trước Tiến trình: 8186 ExecStart=/usr/sbin/nginx (mã=thoát, trạng thái=0/THÀNH CÔNG) Tiến trình: 8184 ExecStartPre=/usr/sbin/nginx -t (mã=thoát, trạng thái=0/THÀNH CÔNG) Tiến trình: 8182 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (mã=thoát, trạng thái=0/THÀNH CÔNG) PID chính: 8188 (nginx) Nhiệm vụ: 2 (giới hạn: 11411) Bộ nhớ: 3,7M CGroup: /system.slice/nginx.service ??8188 nginx: tiến trình chính /usr/sbin/nginx ??8189 nginx: tiến trình công nhân07/01 08:29:11 linux systemd[1]: nginx.service: Thành công.07/01 08:29:11 linux systemd[1]: Đã dừng máy chủ proxy ngược và HTTP nginx.07/01 08:29:11 linux systemd[1]: Đang khởi động máy chủ proxy ngược và HTTP nginx...07/01 08:29:11 linux nginx[8184]: nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là ok07/01 08:29:11 linux nginx[8184]: nginx: tệp cấu hình /etc/nginx/nginx.conf đã kiểm tra thành công07/01 08:29:11 linux systemd[1]: nginx.service: Không phân tích được PID từ tệp /run/nginx.pid: Đối số không hợp lệ07/01 08:29:11 linux systemd[1]: Đang khởi động máy chủ proxy ngược và HTTP nginx.

Cấu hình tường lửa cho Laravel​

Tiếp theo, bạn sẽ cần để cho phép các cổng 80 và 443 đi qua tường lửa firewalld. Bạn có thể cho phép chúng bằng lệnh sau:
Mã:
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
Tiếp theo, tải lại firewalld để áp dụng các thay đổi:
Mã:
firewall-cmd --reload

Truy cập Laravel Web UI​

Bây giờ, hãy mở trình duyệt web của bạn và truy cập Laravel web UI bằng URL . Bạn sẽ thấy trang mặc định của Laravel trên màn hình sau:


Bật SSL trên Trang web Laravel​

Bạn nên bật SSL trên trang web Laravel để bảo mật kết nối. Let's Encrypt cung cấp SSL miễn phí để lấy, gia hạn và quản lý chứng chỉ SSL/TLS cho tên miền của bạn. Trước tiên, hãy cài đặt ứng dụng khách Certbot bằng lệnh sau:
Mã:
dnf install epel-release -y
dnf install certbot -y
Tiếp theo, hãy chạy lệnh sau để tải xuống Let's Encrypt SSL cho tên miền Laravel của bạn:
Mã:
certbot --nginx -d laravel.exampledomain.com
Bạn sẽ được yêu cầu cung cấp email hợp lệ và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator nginx, Installer nginxNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuận phát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho laravel.exampledomain.comĐang chờ xác minh...Dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/conf.d/laravel.conf
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không:
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Nhập 2 và nhấn enter để bắt đầu quy trình. Sau khi chứng chỉ được cài đặt, bạn sẽ thấy kết quả sau:
Mã:
Đang chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/conf.d/laravel.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://laravel.exampledomain.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=laravel.exampledomain.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/laravel.exampledomain.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/laravel.exampledomain.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 2022-04-11. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot renew" - Thông tin đăng nhập tài khoản của bạn đã được lưu trong thư mục cấu hình Certbot tại /etc/letsencrypt. Bây giờ bạn nên sao lưu an toàn thư mục này. Thư mục cấu hình này cũng sẽ chứa các chứng chỉ và khóa riêng do Certbot thu thập, do đó, việc sao lưu thường xuyên thư mục này là lý tưởng. - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le - Chúng tôi không thể đăng ký cho bạn vào danh sách gửi thư EFF vì địa chỉ email của bạn có vẻ không hợp lệ. Bạn có thể thử lại sau bằng cách truy cập https://act.eff.org.
Lúc này, trang web Laravel của bạn được bảo mật bằng Let's Encrypt SSL. Bây giờ bạn có thể truy cập trang web một cách an toàn bằng URL .

Kết luận​

Xin chúc mừng! bạn đã cài đặt thành công Laravel với Nginx và Let's Encrypt SSL trên Alma Linux 8. Bây giờ bạn có thể bắt đầu phát triển các ứng dụng dựa trên PHP bằng cách sử dụng Laravel framework. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên