Instalasi Nginx, dan php di Slackware

Mungkin diantara teman-teman yang baru memakai Slackware agak bingung juga dengan cara penginstalan Nginx (engine x) di Slackware, karena selain tutorialnya yang sedikit, dan caranya pun tak 100% berhasil, gak segampang distro lainnya yang tinggal apt-get atau yum aja. Lalu apa si nginx itu?
Menurut pengetahuan saya, nginx (engine x) itu adalah sebuah web server seperti apache atau lighttpd, akan tetapi nginx itu mempunyai kelebihan disisi pemakaian resource memorinya. Untuk penjelasan lebih lanjut, mungkin om Google bisa membantu.

Nah sekarang disini saya akan menjelaskan cara penginstalan nginx pada Slackware (dalam contoh ini saya menggunakan Slackware 13.37).
Pertama yang harus kita butuhkan disini adalah nginx-nya itu sendiri yang bisa di download di www.slackbuilds.org dan paket pendukungnya yaitu Zlib yang bisa didapatkan di situs www.pkgs.org, atau bisa mendapatkannya di repository Slackware
Sudah pada tahu kan untuk penginstalan melalui Slackbuilds? Kalau belum maka ini caranya:
Setelah di Download buat direktori nginx di Desktop anda dan simpan file-nya. Setelah di simpan saatnya melakukan penginstalan. Pertama yang harus di lakukan adalah buka terminal dan menuju direktory nginx anda yang sudah di save tadi di desktop dengan cara:

# cd /home/user-anda/Desktop/nginx

Lalu ketik ls pada terminal:

# ls

README nginx-1.0.9.tar.gz nginx.info nginx.tar.gz.asc slack-desc
doinst.sh nginx.SlackBuild nginx.logrotate rc.nginx

Kira-kira punya saya tampilan list dari folder nginx itu seperti di atas.
Setelah itu maka saatnya membuat file tgz/txz-nya dengan cara:

# ./nginx.SlackBuild

Nah maka dengan perintah di atas, maka akan terbuat sebuah file nginx berekstensi tgz/txz yang terletak pada direktory /tmp. Sekarang install file nginx itu:

# installpkg /tmp/nginx*

Maka dari perintah-perintah di atas itu, kita telah selesai menginstall nginx pada Slackware kita. Langkah selanjutnya adalah dengan mengedit file nginx.conf yang terletak di direktory /etc/nginx/nginx.conf

# nano /etc/nginx/nginx.conf

Lalu ubah isinya menjadi seperti ini:

user nobody;
worker_processes 1;

error_log  /var/log/nginx/error.log;

pid        /var/log/nginx/nginx.pid;

events {
worker_connections 768;

http {
include mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx/access.log;

sendfile on;

keepalive_timeout 65;

gzip on;
gzip_disable “msie6”;

map $scheme $server_https {
default off;
https on;
}

server {
listen 80;
server_name localhost;
autoindex on;

location / {
root /srv/httpd/htdocs;
index index.php index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /srv/httpd/htdocs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME script$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
location ~ /\.ht {
deny all;
}
}
}

Tapi apabila ada yang mempunyai settingan nginx.conf lain, silahkan aja pake yang punya anda itu, yang di atas adalah contoh punya saya.
Setelah itu sekarang kita coba jalankan nginx-nya.

# chmod 755 /etc/rc.d/rc.nginx
# chmod /etc/rc.d/rc.nginx start

Apabila ada error, maka coba cek kembali setting dari nginx.conf tersebut. Oya apabila yang belum ada rc.nginx-nya, maka ini isi script rc.nginx punya saya:

#!/bin/sh
#
# Nginx daemon control script.
# Written for Slackware Linux by Cherife Li .

BIN=/usr/sbin/nginx
CONF=/etc/nginx/nginx.conf
PID=/var/run/nginx.pid
nginx_start() {
# Sanity checks.
if [ ! -r $CONF ]; then # no config file, exit:
echo “$CONF does not appear to exist. Abort.”
exit 1
fi

if [ -s $PID ]; then
echo “Nginx appears to already be running?”
exit 1
fi

echo “Starting Nginx server daemon…”
if [ -x $BIN ]; then
$BIN -c $CONF
fi
}

nginx_test_conf() {
echo “Checking configuration for correct syntax and”
echo “then trying to open files referenced in configuration…”
$BIN -t -c $CONF
}

nginx_term() {
echo “Shutdown Nginx quickly…”
kill -TERM $(cat $PID)
}

nginx_stop() {
echo “Shutdown Nginx gracefully…”
kill -QUIT $(cat $PID)
}

nginx_reload() {
echo “Reloading Nginx configuration…”
kill -HUP $(cat $PID)
}

nginx_upgrade() {
echo “Upgrading to the new Nginx binary.”
echo “Make sure the Nginx binary has been replaced with new one”
echo “or Nginx server modules were added/removed.”
kill -USR2 $(cat $PID)
sleep 3
kill -QUIT $(cat $PID.oldbin)
}

nginx_rotate() {
echo “Rotating Nginx logs…”
kill -USR1 $(cat $PID)
}

nginx_restart() {
nginx_stop
sleep 3
nginx_start
}

case “$1” in
check)
nginx_test_conf
;;
start)
nginx_start
;;
term)
nginx_term
;;
stop)
nginx_stop
;;
reload)
nginx_reload
;;
restart)
nginx_restart
;;
upgrade)
nginx_upgrade
;;
rotate)
nginx_rotate
;;
*)
echo “usage: `basename $0` {check|start|term|stop|reload|restart|upgrade|rotate}”
esac

Oke setelah nginx berhasil di jalankan, maka langkah selanjutnya adalah menguji cobanya.Hehe
Buat dulu sebuah file index.html dengan isinya misal:

# nano /srv/httpd/htdocs/index.html

Dan isi seperti ini:

Welcome to Nginx

Setelah itu jangan lupa disimpan.
Setelah disimpan, sekarang saatnya membuka browser anda (misal chrome) dan buka alamat ini http://localhost/index.html”
Apabila tampilannya seperti di bawah ini, maka penginstalan nginx anda telah berhasil:

Oke setelah penginstalan nginx berhasil, sekarang saatnya mengkonfigurasi php, agar php itu dapat di baca oleh nginx maka kita perlu mengkonfigurasi nginx-nya. Sebelum saya menjelaskan caranya, saya akan bercerita dulu sedikit.Hehe

Sebenarnya rata-rata para pengguna Linux untuk menjalankan php pada nginx itu, mereka menambahkan php-fpm. Akan tetapi pada pengalaman saya selama 2 hari ini berkuting dengan nginx, sampai Slackware 13.37 saya error dengan php-fpm itu membawa masalah sampai-sampai beberapa perintah command di Slackware error semua. Misal seperti ls, installpkg, removepkg, dan masih banya perintah-perintah lainnya. Dan cara untuk mengatasi itu adalah install ulang. Tapi tenang dulu.He saya punya cara lain, dan nanti di lain posting akan saya bahas. Oya balik lagi ke php-fpm, karena php-fpm ini membuat error pada slackware saya, maka untuk mengatasi itu saya menggunakan php-cgi langsung.

Sekarang saatnya mengkonfigurasi nginx.conf agar bisa mengeksekusi file dengan ekstensi .php

# nano /etc/nginx/nginx.conf

Lalu ubah di bagian php menjadi seperti ini:

location ~ \.php$ {
root /srv/httpd/htdocs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME script$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Oke setelah itu saatnya menjalankan php-cgi dengan address 127.0.0.1 dengan port 9000. Tapi sebelum itu kita cek dulu php-cgi-nya di Slackware kita, sebenarnya php-cgi ini di Slakcware saya sudah tersedia sebelumnya pas saat pertama kali install Slackware, jadi tinggal pake saja. Coba cek dengan perintah ini:

bash-4.1# locate php | grep php-cgi
/usr/bin/php-cgi

Dari perintah di atas, maka php-cgi telah ada dan terletak di direktory /usr/bin/php-cgi. Oya sebenarnya untuk pengganti php-cgi, yaitu php-fpm juga bisa digunakan untuk mengeksekusi file php. Tapi ada kebingungan tersendiri buat saya karena php-fpm tidak bisa mengeksekusi file yang menyangkut ke mysql. Entah saya harus ubah dimananya agar php-fpm itu bisa mengeksekusi mysql itu. Maka dari itu, kita langsung aja menggunakan php-cgi dan gak usah pake php-fpm.
Setelah di ketahui php-cgi ada dimana, sekarang saatnya membuat skrip untuk menjalankan php-cgi pada port yang saya sebutkan di atas dan menyimpannya di /etc/rc.d/ dengan nama rc.php-cgi.

# nano /etc/rc.d/rc.php-cgi

Lalu isi dengan:

#!/bin/sh
#
# /etc/rc.d/rc.php-cgi
#
# Start/stop/restart
#
# To make php-cgi start automatically at boot, make this
# file executable:  chmod 755 /etc/rc.d/rc.php-cgi
#
#created by Imron Rosdiana
case “$1” in
  ‘start’)
   echo “Starting php-cgi”
   /usr/bin/php-cgi -b 127.0.0.1:9000 &
  ;;
‘stop’)
    echo “Shutdown php-cgi”
    killall php-cgi
  ;;
  ‘restart’)
    echo “Shutdown php-cgi…..”
    killall php-cgi
    sleep 3
    echo “Starting php-cgi…”
    /usr/bin/php-cgi -b 127.0.0.1:9000 &
  ;;
  *)
    echo “Usage: $0 {start|stop|restart}”
  ;;
esac

Sebenarnya skrip di atas saya boleh utak-atik sendiri selama 4jam dan ketemulah skrip itu.Hehe maklum nubi banget..
Selanjutnya beri akses file itu dengan chmod 755:

# chmod 755 /etc/rc.d/rc.php-cgi

Oke setelah di beri hak akse, maka jalankan php-cgi itu dengan perintah:

# /etc/rc.d/rc.php-cgi start

Setelah php-cgi berhasil berjalan pada alamat 127.0.0.1 port 9000, sekarang coba kita buat file info.php dan disimpan di /srv/httpd/htdocs yang isinya:

# nano /srv/httpd/htdocs/info.php

Lalu isi dengan:
<?php
phpinfo();
?>

Setelah itu sekarang coba buka browser anda dan ketik url berikut ini: http://localhost/info.php. Apabila tampilannya seperti di bawah ini, maka anda telah berhasil..

Oya ada sedikit tambahan dari saya, agar si nginx dan php-cgi itu terkesekusi otomatis saat kita menghidupkan komputer besok-besoknya.. Maka tambahkan skrip di bawah ini pada /etc/rc.d/rc.M:

# Start Nginx Web server;
if [ -x /etc/rc.d/rc.nginx ]; then
  . /etc/rc.d/rc.nginx start
fi

# Start php-cgi;
if [ -x /usr/bin/php-cgi ]; then
  . /etc/rc.d/rc.php-cgi start
fi

Lalu simpan..
Oke selamat menikmati nginx-nya.Hehe Orang kreatif itu adalah orang yang bisa memecahkan masalah dengan cara menggabungkan beberapa jawaban, menjadi jawaban yang lebih sederhana

4 comments

  1. sekedar saran untuk keamanan saja,
    jika php-cgi hanya digunakan secara local alias secara fisik tidak terpisah dengan web servernya sebaiknya gunakan soket php saja karena selain lebih aman, proses kompilasi kode php akan lebih cepat. saya menggunakan wrapper `spawn-fcgi' untuk menjalankan php-cgi. misalnya seperti ini:

    /usr/bin/spawn-fcgi -U nobody -G nobody -d /var/run/fcgi -s /tmp/fcgi.sock -M 0777 -F 2 -P /var/run/fcgi/fcgi.pid — /usr/bin/php-cgi

    tinggal set program/apps php untuk menggunakan soket tersebut atau bisa diset menggunakan php.ini.

  2. Om Walecha99 adakah tutorial secara lengkapnya? Biar saya lebih paham maksudnya.. Maklum baru belajar tentang web ni.. 🙂

    Oya sebelumnya untuk php-fpm juga itu saya bermasalah dengan php.ini dan saya tidak tahu harus mengkonfigurasinya, maklum untuk tutorial Slackware ini masih sangat minim sekali di Om Google..

  3. php-fpm ane baca di google ya sejenis spawn-cgi itu, buat ngejalanin php pada nginx. Pada distro-distro seperti ubuntu pake itu. Saya pernah tu pake php-fpm juga, tapi kendala saat koneksi ke mysql dan saya jg gak tau harus ngerubahnya di mana..
    Oya untuk tulisan om Walecha saya juga udah baca kok, tapi kalo di saya ya gitu, koneksi ke mysql gagal jg.. Untuk baca file php si bisa, tapi ya itu koneksi php ke mysql selalu gagal. Dan tetep intinya gak tau harus ngerubah dimananya.. Hehe
    Jadi untuk sementara ini, ya memakai cara tutorial di atas itu..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s