Jika anda menggunakan Nginx dan PHP nya menggunakan php-fpm, maka secara default PHP akan berjalan hanya dengan 1 user, hal ini mungkin sudah cukup bagi pengguna yang hanya menggunakan server nya untuk dirinya sendiri. Namun bagaimanakah caranya agar domain / subdomain lain yang berbeda home directory sekaligus berbeda pemilik file, berjalan dengan user berbeda (seperti Apache yang berpasangan dengan suphp nya)?
Berikut ini akan dijelaskan sedikit modifikasi / tambahan pada konfigurasi php-fpm dan juga virtualhost pada Nginx. Sebelum melanjutkan panduan ini, setidaknya di server anda sudah ter-install Nginx dan php-fpm, jika belum silahkan ikuti dahulu panduan berikut untuk meng-install Nginx sekaligus php-fpm nya http://artikel.magnet-id.com/aplikasi-linux/nginx-mysql-php-di-centos-52-64-bit/
- Versi nginx pada saat panduan ini dibuat adalah: 0.7.61
- Versi php-fpm pada saat panduan ini dibuat adalah: versi untuk php 5.2.10
- Operating System: Centos 5.2
(mungkin ada sedikit perbedaan pada php-fpm, nginx atau operating system selain diatas)
Konfigurasi php-fpm
- Pertama buka file konfigurasi php-fpm, (mungkin bisa berbeda path, tergantung dengan konfigurasi anda)
vi /usr/local/etc/php-fpm.conf
- Cari tag: <section name=”pool”> yang ada setelah tag: <workers>
- Copy tag: <section name=”pool”> sampai </section>
- Paste sepasang tag tersebut berikut isinya sebelum atau diatas tag: </workers>, kira-kira seperti ini:
sebelum:
<workers> <section name="pool"> ... ... </section> </workers>
sesudah:
<workers> <section name="pool"> ... ... </section> <section name="pool"> ... ... </section> </workers>
- Agar konfigurasi tidak bentrok, pastikan nama pool, port, dan user serta grup tidak ada yang sama, seperti ini:
<workers> <section name="pool"> <value name="name">nama-domain-0.tld</value> <value name="listen_address">127.0.0.1:9000</value> ... ... <value name="user">user0</value> <value name="group">user0</value> ... ... </section> <section name="pool"> <value name="name">nama-domain-1.tld</value> <value name="listen_address">127.0.0.1:9001</value> ... ... <value name="user">user1</value> <value name="group">user1</value> ... ... </section> </workers>
- Sesuaikan juga value “max_children” yang ada di dalam tag <value name=”pm”> dengan jumlah yang diinginkan, value disini menentukan jumlah process yg dijalankan atas nama user terkait, dengan catatan value “style” harus “static”.
- Jika value “style” menggunakan “apache-like” maka abaikan “max_children” dan silahkan sesuaikan jumlah pada value “StartServers”, “MinSpareServers” dan “MaxSpareServers” yang ada di dalam <value name=”apache_like”> (biasanya pengguna apache sudah paham mengenai konfigurasi tersebut)
- Setelah selesai save konfigurasi tersebut dan restart php-fpm anda
/etc/init.d/php-fpm restart
- Silahkan dilihat process php-fpm nya apakah user yang diinginkan sudah berjalan sebagaimana mestinya
ps aux | grep php-fpm
Jika pada restart php-fpm sudah berhasil tanpa error dan user yang diinginkan sudah berjalan, maka akan dilanjutkan dengan konfigurasi pada virtualhost nginx.
Konfigurasi virtualhost nginx
- Pada masing-masing virtualhost, silahkan diubah port php-fpm dengan port yang sudah didefinisikan pada konfigurasi php-fpm. Seperti ini:
virtualhost untuk nama-domain-0.tld:
... ... location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /usr/local/nginx/conf/fastcgi_params; } ... ...
virtualhost untuk nama-domain-1.tld:
... ... location ~ .php$ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; include /usr/local/nginx/conf/fastcgi_params; } ... ...
- Setelah itu restart nginx anda
/etc/init.d/nginx restart
- Jika tidak ada error pada saat restart nginx, maka php pada nama-domain-0.tld akan berjalan untuk user0 dan php pada nama-domain-1.tld akan berjalan untuk user1, silahkan diperiksa melalui phpinfo() masing-masing.
Selesai sudah sedikit contoh konfigurasi php-fpm dengan dengan multiple user. Silahkan ditambahkan lagi untuk user lainnya dengan jumlah user yang anda inginkan.