LEMP cho VPS [Phần 7] – Sử dụng nhiều user cho PHP-FPM

LEMP cho VPS [Phần 7] – Sử dụng nhiều user cho PHP-FPM

Ở bài này, mình sẽ hướng dẫn bạn cách cấu hình tất cả các website sử dụng chung một user để chạy worker_process nhưng sẽ dùng user riêng để thực thi PHP-FPM cho nhiều website khác nhau.

Trong các bài trước, các bạn có thể thấy mỗi khi tạo VirtualHost thì phải dùng lệnh chown để cho user nginx và group nginx sở hữu thư mục đó, đồng thời chỉnh lại user và group có quyền thực thi PHP-FPM trong file www.conf.

Việc này vô tình gây bất lợi cho bạn nếu như VPS của bạn có nhiều website bởi vì nếu làm như vậy, toàn bộ website sẽ sử dụng chung một user để thực thi PHP-FPM nên nếu user nginx có vấn đề gì về bảo mật thì toàn bộ các website có dùng chung user nginx đều bị ảnh hưởng.

Mình sẽ hướng dẫn bạn cách cấu hình tất cả các website sử dụng chung một user để chạy worker_process nhưng sẽ dùng user riêng để thực thi PHP-FPM cho nhiều website khác nhau.

Cách thức hoạt động

Trước tiên, bạn hãy mở file php.conf trong thư mục /etc/nginx/conf.d/ lên thì sẽ thấy đoạn sau:

Điều này có nghĩa là chúng ta sẽ truyền các file .php vào một proxy của CGI thông qua cổng 9000, và hiện tại chúng ta đang áp dụng cổng 9000 trên toàn bộ website có trên VPS.

Tham số này sẽ trùng với tham số listen = 127.0.0.1:9000 trong file /etc/php-fpm.d/www.conf.

Như vậy, để sử dụng user riêng cho từng website để thực thi file PHP thì chúng ta phải thiết lập mỗi website sẽ sử dụng một proxy khác nhau (ví dụ như 9001, 9002, 9003,…) và mỗi user sẽ đảm nhận quản lý 1 proxy (mặc định chúng ta đã thiết lập user nginx và group nginx quản lý proxy 9000).

Bạn tiếp tục mở file cấu hình chính của PHP-FPM là /etc/php-fpm.conf và nhìn gần đầu file sẽ thấy đoạn này:

Điều đó có nghĩa là PHP-FPM cho phép chúng ta sử dụng các file cấu hình riêng được đặt trong thư mục /etc/php-fpm.d/ như file www.conf là file cấu hình riêng mặc định nó tự tạo cho.

Vậy thì chúng ta sẽ làm sao? Đó là chúng ta sẽ tạo ra các file cấu hình riêng đặt trong thư mục /etc/php-fpm.d/ có nội dung giống như file www.conf và chỉ cần sửa lại cổng proxy và user/group sở hữu mà thôi.

Lưu ý trước khi thiết lập

Ở bài này, chúng ta chỉ tạo thêm user/group sở hữu proxy của PHP-FPM.

Để xem user nào mà NGINX đang sở hữu, thì mở file nginx.conf ở dòng đầu tiên bạn sẽ thấy user nginx, tức là user nginx đang sở hữu NGINX.

Hướng dẫn thiết lập

Tạo một user mới

Trước tiên để làm được thì bạn cần tạo ra một user mới. Mặc định khi tạo ra nó sẽ nằm trong group của chính nó (trùng tên).

Chẳng hạn bây giờ mình muốn tạo ra 1 user tên là thachpham thì sẽ gõ lệnh sau:

Do user này sẽ xử lý PHP nên chúng ta không cần thiết lập password cho nó đâu.

Xem thêm: Quản lý user trên VPS Linux.

Thêm Virtual Host

Trước tiên, chúng ta tạo thêm một Virtual Host cho VPS, cách thêm Virtual Host mình đã nói ở bài trước rồi nhưng mình cũng sẽ làm lại.

Ở đây mình muốn thêm một Virtual Host với domain là botay.com thì đầu tiên là tạo thư mục cho Virtual Host.

Kế tiếp là copy file cấu hình VirtualHost của một domain nào đó mà bạn đang có trong /etc/nginx/domains/. Chẳng hạn mình đang có sẵn file cấu hình abcxyz.com.conf thì sẽ copy từ file này và đổi tên nó thành botay.com.conf.

Hãy kiểm tra lại ai đang sở hữu thư mục đó bằng cách chạy lệnh sau:

chown-userfolder

Tạo thêm PHP-FPM Proxy

Như mình đã nói ở trên, mặc định file /etc/php-fpm.conf tự nạp cấu hình của toàn bộ file có đuôi là .conf trong thư mục /etc/php-fpm.d/ nên bây giờ bạn chỉ cần tạo một file .conf tên bất kỳ trong đó. Chẳng hạn mình sẽ tạo một file là/etc/php-fpm.d/botay.conf.

Nội dung file đó bạn đặt đoạn này vào:

Những dòng mình in đậm là cần các bạn sửa lại. Cụ thể:

  • listen: Bạn chỉ cần đổi cái port của nó, bạn có thể đổi sang 1 port bất kỳ, miễn là không va chạm với các port của những ứng dụng khác. Ví dụ mình thiết lập port proxy cho nó là 9001.
  • user: tên user sở hữu proxy này.
  • group: tên group sở hữu proxy này.

Lưu lại file này.

Cấu hình lại file VirtualHost

Bây giờ hãy mở file botay.com.conf ra, tìm dòng:

Thay thành

Chỗ mình in đậm là cần bạn sửa, hãy sửa lại port cho trùng với port mà bạn đã thiết lập cho file /etc/php-fpm.d/botay.conf.

Đừng quên sửa luôn 2 đoạn server_nameroot để thiết lập đường dẫn cho VirtualHost này nhé.

Bây giờ file /etc/nginx/domains/botay.com.conf của mình là như thế này (nếu hỏi tại sao mình đặt listen là port 8080 cho VirtualHost thì xem lại bài Varnish):

Bây giờ thì hãy restart lại NGINX và PHP-FPM.

Để kiểm tra xem nó có hoạt động hay không, bạn cứ thử đặt 1 file .php đơn giản vào thư mục public_html của domain này rồi chạy. Nếu nó xử lý được thì oke.

Đây là 1 mẫu file PHP cực đơn giản.

Và một việc vô cùng quan trọng, đó là cấp quyền sở hữu thư mục /home/nginx/botay.com/ cho user thachpham và group thachpham.

Sau đó chạy file này, nếu file PHP này xử lý thành công thì bạn đã làm thành công. Đồng thời gõ lệnh netstat -ntlup để kiểm tra các port đang được thực thi, bạn sẽ thấy port 9002 đang chạy.

Và sau này để tránh bị lỗi phân quyền, nếu cần sửa hay thao tác tập tin trong này thì bạn hãy đăng nhập bằng user mà nó đang sổ hữu thư mục này (ví dụ trong bài này là thachpham). Chỉ vậy thôi, cũng dễ mà đúng không?

LEMP cho VPS [Phần 7] – Sử dụng nhiều user cho PHP-FPM

( Serie LEMP cho VPS)


WordPress FAQ  » Học WordPress >> Hosting


 WordPress FAQ   |   Hoc WordPress   |   Su dung WordPress   |   Lap trinh WordPress |   Plugin WordPress  |  Thuat ngu WordPress   |  Theme WordPress  |  Lap trinh Themes  |  Lap trinh plugin  |  WordPress API  |  Hosting

Chia sẻ bài viết

Bình luận