Hướng dẫn dùng nginx snippets/fastcgi-php.conf trong PHP

TLDR:

Phiên bản cuối cùng là:

location ~ \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    include fastcgi_params;                
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

tôi nghĩ rằng nó phụ thuộc vào phiên bản Nginx bạn đang sử dụng.

Đối với câu trả lời của Nate, nginx-fullsẽ cài đặt 1.10.3 cho bạn.

Tôi đang sử dụng Nginx 1.12.2 trên Ubuntu 16.04, với phiên bản này, nó không có sites-enabledsites-availablevới nó; và nó cũng có một thiết lập PHP CGI khác.

Bạn có thể sử dụng giải pháp của Ulad Kasach hoặc bắt đầu sử dụng cách mới.

Đây là tài liệu chính thức về cách thực hiện: //www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

BTW, trong bài trên, bạn cũng nên thay thế fastcgi.confbằng fastcgi_params.

Và thêm một dòng nữa theo mặc định ban đầu:

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

Đây là tất cả những thay đổi mới với Nginx 1.12.2 :[

Phiên bản cuối cùng là:

location ~ \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    include fastcgi_params;                
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

30 hữu ích 2 bình luận chia sẻ

Giới thiệu

Nginx là một webserver mã nguồn mở mạnh mẽ và nổi tiếng phục vụ web HTTP. Sử dụng kiến thức đơn luồng [event-driven], không đồng bộ [asynchronous] để website có hiệu suất và sự ổn định tối đa.

MariaDB là hệ quản trị cơ sở dữ liệu mã nguồn mở [DBMS] được phát triển bởi các nhà sáng lập MySQL. Được phát hành lần đầu vào năm 2009.

PHP [Hypertext Preprocessor] là ngôn ngữ lập trình hướng đối tượng được sử dụng cho máy chủ web.

Bài viết này sẽ hướng dẫn cài đặt Nginx, MariaDB và PHP [viết tắt là LEMP] trên Debian 11.

Yêu cầu thiết yếu

Để thực hiện được các hướng dẫn này, chúng ta cần các yêu cầu sau:

  • Máy chủ sử dụng: Debian 11
  • Tài khoản người dùng: Có quyền truy cập sudo hoặc root

Chúng ta cần cập nhật hệ điều hành Debian 11 để đảm bảo các gói hiện có được cập nhật lên phiên bản mới nhất:

Sau khi cập nhật xong các gói tin cần thiết trên Debian 11 chúng ta thực thi lệnh bên dưới để cài đặt nginx:

Sau khi lệnh cài đặt hoàn thành chúng ta có thể thực thi lệnh sau để kiểm tra xem nginx đã được cài đặt thành công trên Debian 11 hay chưa:

Phiên bản hiện tại của nginx tại thời điểm mình viết bài này là 1.18.0:

Kết quả

Truy cập trình duyệt bằng IP máy chủ của chúng ta để kiểm tra:

Bước 2: Cài đặt và Cấu hình firewall

Đầu tiên, chúng ta cài đặt các phụ thuộc cần thiết cho csf:

Bây giờ, hãy đảm bảo rằng không có tường lửa nào khác đang chạy trên hệ thống của chúng ta. Vì vậy, hãy tắt tường lửa đang chạy trên hệ thống [nếu có]:

Tiếp theo, chúng ta tải xuống source code csf bằng wget:

Bây giờ chúng ta hãy giải nén file vừa tải về bằng lệnh sau:

Sau khi quá trình giải nén hoàn thành, chúng ta di chuyển vào thư mục csf vừa giải nén:

Tiến hành cài đặt csf bằng lệnh:

Sau khi kết thúc lệnh cài đặt, chúng ta hãy khởi động dịch vụ csf:

Ngoài ra, chúng ta cũng nên chạy perl để kiểm tra xem csf đã được cài đặt thành công chưa:

Kết quả

Bây giờ, chúng ta hãy kích hoạt csf khởi động cùng hệ thống bằng lệnh:

Chỉnh sửa file csf.conf tại /etc/csf/csf.conf:

  • Thay TESTING = "1" thành "0"
  • Thay RESTRICT_SYSLOG = "0" thành "1"
  • Thêm các port TCP_INTCP_OUT cần thiết cho server. Ở bài hướng dẫn này chúng ta cần có các ports 80, 443

Sau khi hoàn tất cấu hình mọi thứ, chúng ta hãy thực hiện lệnh sau để áp dụng các thay đổi:

Bước 3: Tạo virtualhost cho Nginx

Đầu tiên, chúng ta cần tạo user cho mỗi trang web của chúng ta, phân quyền và chỉ định nhóm người dùng tương ứng cho các user:

Tiếp theo, chúng ta cần tạo 2 thư mục chứa mã nguồn cho 2 website của mình bằng lệnh:

Sau khi tạo xong user và thư mục chứa mã nguồn cho website, chúng ta phân quyền user cho thư mục web tương ứng:

Phân quyền này sẽ làm user website1 không thể xem hay can thiệp được vào dữ liệu user website2 [không có quyền]

Bây giờ, chúng ta hãy tạo trang index.html đầu tiên cho 2 website:

Thêm nội dung sau đây vào file index.html:

/home/website1/public_html/index.html

Thêm nội dung sau đây vào file index.html:

/home/website2/public_html/index.html

Tiếp theo, chúng ta cần cấu hình virtualhosts cho 2 website vừa tạo. Để có nội dung file virtualhosts mặc định cho 2 site your-domain-1.com.vnyour-domain-2.com.vn, chúng ta cần coppy nội dung virtualhosts từ file default :

Và bây giờ, chúng ta chỉnh sửa nội dung cấu hình virtualhosts cho 2 website bằng cách sử dụng trình soạn thảo linux bất kì để chỉnh sửa file /etc/nginx/sites-available/your-domain-1.com.vn.conf/etc/nginx/sites-available/your-domain-2.com.vn.conf như sau:

  • Chỉnh sửa file /etc/nginx/sites-available/your-domain-1.com.vn.conf

/etc/nginx/sites-available/your-domain-1.com.vn.conf

  • Chỉnh sửa file /etc/nginx/sites-available/your-domain-2.com.vn.conf

/etc/nginx/sites-available/your-domain-2.com.vn.conf

Trong đó:

  • listen: port máy chủ đang sử dụng
  • root: đường dẫn chứa mã nguồn
  • server_name: Tên website
  • fastcgi_pass: Đường dẫn của file sock php-fpm

Sau khi chỉnh sửa xong nội dung file virtualhosts của 2 website your-domain-1.com.vnyour-domain-2.com.vn, chúng ta hãy tạo liên kết tượng trưng file virtualhosts này sang /etc/nginx/sites-enable bằng lệnh:

Tiếp theo, chúng ta hãy kiểm tra để đảm bảo rằng không có lỗi cú pháp trong bất kì file nào trên service bằng lệnh:

Kết quả

Nếu không có bất kì lỗi nào được thông báo, chúng ta hãy khởi động lại nginx để kích hoạt các thay đổi:

Truy cập trình duyệt để kiểm tra xem website của chúng ta đã hoạt động chưa [chúng ta có thể trỏ file host website của mình về địa chỉ IP VPS để kiểm tra bằng cách làm theo hướng dẫn tại đây]:

Bước 4: Cài đặt MariaDB

Đầu tiên, chúng ta cần cập nhật hệ điều hành Debian 11 để đảm bảo các gói hiện có đều được cập nhật lên phiên bản mới nhất:

Nhập kho lưu trữ MariaDB 10.7:

Cài đặt MariaDB 10.7:

Sau khi lệnh cài đặt hoàn thành, chúng ta có thể sử dụng lệnh sau để kiểm tra MariaDB đã được cài đặt thành công chưa:

Kết quả

Bước 5: Cấu hình bảo mật cho MariaDB

Sau khi đã cài đặt thành công MariaDB, chúng ta có thể cấu hình bảo mật cho MariaDB:

Kết quả

Bây giờ, chúng ta có thể đăng nhập vào MariaDB để tạo cơ sở dữ liệu cho riêng mình bằng lệnh sau:

Bước 6: Cài đặt PHP

Đầu tiên, chúng ta cần cài đặt kho lưu trữ PHP và cập nhật kho lưu trữ APT:

Sau khi cài đặt kho lưu trữ xong bây giờ chúng ta có thể cài đặt PHP bằng lệnh sau:

Bây giờ, chúng ta có thể kiểm tra xem PHP đã được cài đặt thành công chưa bằng lệnh:

Kết quả

6.1. Cấu hình php-fpm

Bây giờ, chúng ta coppy pool php mặc định cho 2 website của mình:

Tiếp theo, chúng ta cần truy cập vào file fpm-your-domain-1.com.vn.conf [tại /etc/php/8.1/fpm/pool.d/fpm-your-domain-1.com.vn.conf] và fpm-your-domain-2.com.vn.conf [tại /etc/php/8.1/fpm/pool.d/fpm-your-domain-2.com.vn.conf] để chỉnh sửa các thông tin sau:

/etc/php/8.1/fpm/pool.d/fpm-your-domain-1.com.vn.conf

/etc/php/8.1/fpm/pool.d/fpm-your-domain-2.com.vn.conf

Sau khi hoàn thành các bước cấu hình, chúng ta khởi động lại php-fpm và kiểm tra trạng thái php-fpm

Kết quả

Bây giờ, chúng ta hãy khởi động lại nginx và truy cập trình duyệt web kiểm tra kết quả:

Website 1: ![website1][//123host.vn/uploads/tutorial/5378538416.png Website 2:

6.2. Hướng dẫn tạo file info.php để kiểm tra thông tin PHP

Đầu tiên, chúng ta cần di chuyển đến thư mục public_html của mã nguồn website1:

Chúng ta sử dụng trình soạn thảo bất kì để tạo file info.php và thêm nội dung sau vào file info.php:

/home/website1/public_html/info.php

Tiếp theo, chúng ta di chuyển đến thư mục public_html của mã nguồn website2:

Chúng ta sử dụng trình soạn thảo bất kì để tạo file info.php và thêm nội dung sau vào file info.php:

/home/website2/public_html/info.php

Bây giờ, chúng ta hãy khởi động lại nginx và truy cập trình duyệt web kiểm tra kết quả:

Bây giờ chúng ta truy cập trình duyệt và kiểm tra trang PHP information cho mỗi trang web. Tại phần PHP Variables, $ _SERVER ['USER'] phải là website1 cho website1 và website2 cho website2 và đường dẫn thư mục gốc của website1 là $ _SERVER ['HOME']: /home/website1, của website2 là $ _SERVER ['HOME']: /home/website2:

Thông tin php info website 1:

Thông tin php info website 2:

Bước 7: Cài đặt và cấu hình Let's Encrypt

Đầu tiên, chúng ta cần cài thư viện certbot cho nginx để có thể cài đặt và cấu hình Let's Encrypt bằng lệnh sau:

Sau khi cài đặt certbot thành công, chúng ta hãy cài đặt và cấu hình Let's Encrypt cho website bằng lệnh sau:

Kết quả

Tổng kết

Như vậy, qua bài viết này chúng ta đã biết cách cài đặt Nginx, MariaDB, PHP,cấu hình Virtualhost cho Nginx, cài đặt Let's Encrypt trên Debian 11 hoàn tất một cách đầy đủ nhất. Hy vọng bài viết này sẽ giúp bạn cài đặt thành công!

Chủ Đề