Sharing seputar Dunia Tkj dan Blogging ^^

Thursday, August 18, 2016

Multiuser PHP Pada Saat Menjalankan Nginx Layaknya SuExec pada Apache di Ubuntu


 
Artikel lalu kita telah membahas bagaimana cara memanfaatkan SuExec untuk keperluan multiuser yang mana pada saat menjalankan Apache bukan menggunakan user www-data dan group www-data pula. Akan tetapi, menggunakan user dan group yang telah kita set sebagai client. Tujuannya tidak lain adalah untuk mengetahui user mana yang ber-traffic tinggi.

Di Apache kita mengenal SuExec untuk menagani masalah multiuser, sayangnya module tersebut hanya untuk Apache. Lalu bagaimana dengan Nginx? Seperti yang telah diketahui bahwasanya Nginx menjalankan PHP menggunakan php-fpm bukan dengan module layaknya Apache. Jadi untuk memanafaatkan fitur layaknya SuExec kita memanfaatkan php-fpm juga tentunya.

Perhatian

Artikel ini diperuntukan bagi Anda pengguna Ubuntu 14.04 dan Ubuntu 16.04, disesuaikan dengan apa yang penulis praktekan pada mesin penulis. Jika Anda pengguna Debian, mungkin ada sebagian konfigurasi yang sama di antara kedua versi Ubuntu di sini. Jika benar sama artinya Anda tetap dapat mengikuti tutorial ini.

Tahap Instalasi

Pertama-tama Anda hanya perlu memasang Nginx dan php-fpm pada Server.
sudo apt-get install nginx 
Untuk php-fpm Bisa Anda ikuti tulisan sebelumnya di sini, yakni:
http://www.linuxku.com/2016/05/menjalankan-php-menggunakan-nginx.html

Tahap Implementasi

Mengikuti artikel lama (http://www.linuxku.com/2016/07/menerapkan-suexec-dan-modfcgid-pada.html), kita asumsikan memiliki 2 klien dengan nama Wati dan Suci, masing-masing domainnya menggunkan dot com.

Pertama-tama buat terlebih dahulu user, group nya dan direktori public_html:
$ sudo groupadd situs1
$ sudo groupadd situs2
$ sudo useradd -s /bin/false -m -g situs1 suci
$ sudo useradd -s /bin/false -m -g situs2 wati
$ sudo mkdir /home/suci/public_html
$ sudo mkdir /home/wati/public_html
$ sudo chmod 711 /home/suci
$ sudo chmod 711 /home/wati
Kemudian kita buat pengaturan pool nya. Perlu diketahui ada perbedaan letak konfigurasi php-fpm ini di Ubuntu 14.04 dan Ubuntu 16.04. Ingat hanya beda letak berkasi konfigurasinya saja, selebihnya sama.

Pengguna Ubuntu 14.04
$ sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/suci.conf
$ sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/wati.conf
Pengguna Ubuntu 16.04
$ sudo cp /etc/php/7.0/fpm/pool.d/www.conf /etc/php/7.0/fpm/pool.d/suci.conf
$ sudo cp /etc/php/7.0/fpm/pool.d/www.conf /etc/php/7.0/fpm/pool.d/wati.conf
Kemudian sunting konfigurasi suci.conf dan wati.conf tersebut.

Pengguna Ubuntu 14.04
$ sudo nano /etc/php5/fpm/pool.d/suci.conf
$ sudo nano /etc/php5/fpm/pool.d/wati.conf
Pengguna Ubuntu 16.04 
$ sudo nano /etc/php/7.0/fpm/pool.d/suci.conf
$ sudo nano /etc/php/7.0/fpm/pool.d/wati.conf
Kemudian rubah konfigurasi berikut:
; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[suci]
 ; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[wati]
Lalu untuk user dan groupnya, sesuaikan juga dengan yang sebelumnya kita buat.
user = suci
group = situs1
user = wati
group = situs2

Dan yang terakhir, kita rubah pada listen socketnya. Oiya, perlu diketahui untuk socket ini juga ada perbedaan letak direktori pada Ubuntu 14.04 dan Ubuntu 16.04, jadi sesuaikanlah.

Pengguna Ubuntu 14.04
listen = /var/run/suci.sock
listen = /var/run/wati.sock
Pengguna Ubuntu 16.04
listen = /var/run/php/suci.sock
listen = /var/run/php/wati.sock

Setelah itu kita restart php-fpm.
Pengguna Ubuntu 14.04
$ sudo service php5-fpm restart
Pengguna Ubuntu 16.04
$ sudo service php7.0-fpm restart
Kemudian masuk ke pengaturan Nginx. Pastikan Anda sudah membuat Virtualhost silahkan baca http://www.linuxku.com/2016/05/menerapkan-virtualhost-untuk-keperluan.html.

Sunting virtualhost Anda:
$ sudo nano /etc/nginx/sites-available/suci
$ sudo nano /etc/nginx/sites-available/wati
Kemudian ikuti skrip berikut:
Untuk Suci:
  root /home/suci/public_html;
  index index.php index.html index.htm;
  server_name suci.com www.suci.com;

        location ~ \.php$ {
                fastcgi_pass unix:/var/run/suci.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
Untuk Wati:
  root /home/wati/public_html;
  index index.php index.html index.htm;
  server_name wati.com www.wati.com;
       
location ~ \.php$ {
                fastcgi_pass unix:/var/run/wati.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
Lalu cek terlebih dahulu pengeturan nginx kita apa sudah benar atau belum, dengan cara berikut:
$ sudo nginx -t
Jika sudah benar, langkah selanjutnya yakni kita buat symbolic link agar Nginx dapat menjalankan virtualhost kita.
$ sudo ln -s /etc/nginx/sites-available/suci /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/wati /etc/nginx/sites-enabled/
Dan yang terkakhir, langsung saja di restart Nginx-nya.
$ sudo service nginx restart

Tahap Checking

Untuk memastikan Anda sudah benar atau belum, langkah pertama yakni kita buat berkas dummy yakni:

Buat berkas bernama cek.php:
$ sudo nano /home/suci/public_html/cek.php
$ sudo nano /home/wati/public_html/cek.php
Lalu masukan skrip berikut:
<?php
  system("id");
Cek hasilnya:
Jika sudah seperti gambar di atas, artinya Anda telah sukses. Semoga bermanfaat :)

Website ini menganut paham demokrasi wkwk
Jangan lupa gunakan emot biar akrab gan (/ ^.^)/
EmoticonEmoticon