Nginx (diucapkan "engine x") adalah server HTTP gratis, open-source, berkinerja tinggi. Nginx dikenal dengan stabilitasnya, rangkaian fitur yang kaya, konfigurasi sederhana, dan konsumsi sumber daya yang rendah. Tutorial ini menunjukkan bagaimana Anda dapat menginstal Nginx di server Ubuntu 8.10 dengan dukungan PHP5 (melalui FastCGI) dan dukungan MySQL.
1 Catatan Awal
Dalam tutorial ini saya menggunakan hostname server1.example.com dengan alamat IP 192.168.0.100. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.
2 Menginstal MySQL 5.0
Untuk menginstal MySQL, kami menjalankan
apt-get install mysql-server mysql-client
Anda akan diminta untuk memberikan kata sandi untuk pengguna root MySQL - kata sandi ini berlaku untuk pengguna [dilindungi email] serta [dilindungi email], jadi kami tidak perlu menentukan kata sandi root MySQL secara manual nanti:
Kata sandi baru untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MySQL:<-- yourrootsqlpassword
3 Menginstal Nginx
Nginx tersedia sebagai paket untuk Ubuntu 8.10 yang dapat kita instal sebagai berikut:
apt-get install nginx
Mulai nginx setelahnya:
/etc/init.d/nginx start
Ketik alamat IP atau nama host server web Anda ke dalam browser (mis. http://192.168.0.100), dan Anda akan melihat halaman selamat datang nginx:
Untuk membuat nginx mulai saat boot, jalankan
update-rc.d nginx defaults
4 Menginstal PHP5
Kita dapat membuat PHP5 bekerja di nginx melalui FastCGI. Untungnya, Ubuntu menyediakan paket PHP5 berkemampuan FastCGI yang kami instal seperti ini (bersama dengan beberapa modul PHP5 seperti php5-mysql yang Anda perlukan jika Anda ingin menggunakan MySQL dari skrip PHP Anda):
apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Kemudian buka /etc/php5/cgi/php.ini dan tambahkan baris cgi.fix_pathinfo =1 tepat di akhir file:
vi /etc/php5/cgi/php.ini
[...] cgi.fix_pathinfo = 1
Tidak ada paket daemon FastCGI yang berdiri sendiri untuk Ubuntu, oleh karena itu kami menggunakan program spawn-fcgi dari lighttpd. Kami menginstal lighttpd sebagai berikut:
apt-get install lighttpd
Anda akan melihat pesan kesalahan yang mengatakan bahwa lighttpd tidak dapat memulai karena port 80 sudah digunakan. Begitulah seharusnya karena nginx sudah mendengarkan pada port 80. Jalankan
update-rc.d -f lighttpd remove
sehingga lighttpd tidak akan mulai saat boot.
Kami telah menginstal lighttpd karena kami hanya membutuhkan satu program yang disertakan dengan paket, /usr/bin/spawn-fcgi, yang dapat kami gunakan untuk memulai proses FastCGI. Lihat di
spawn-fcgi --help
untuk mempelajari lebih lanjut tentangnya.
Untuk memulai mendengarkan daemon FastCGI PHP pada port 9000 di localhost dan berjalan sebagai pengguna dan grup www-data, kami menjalankan perintah berikut:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
Tentu saja, Anda tidak ingin mengetikkan perintah itu secara manual setiap kali Anda mem-boot sistem, jadi agar sistem menjalankan perintah secara otomatis saat boot, buka /etc/rc.local...
vi /etc/rc.local
... dan tambahkan perintah di akhir file (sebelum baris keluar):
[...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid [...]
5 Konfigurasi nginx
Konfigurasi nginx ada di /etc/nginx/nginx.conf yang kita buka sekarang:
vi /etc/nginx/nginx.conf
Konfigurasinya mudah dipahami (Anda dapat mempelajarinya lebih lanjut di sini:http://wiki.codemongers.com/NginxFullExample dan di sini:http://wiki.codemongers.com/NginxFullExample2)
Pertama (ini opsional) tingkatkan jumlah proses pekerja dan setel keepalive_timeout ke nilai yang wajar:
[...] worker_processes 5; [...] keepalive_timeout 2; [...]
Host virtual didefinisikan dalam kontainer {} server. Vhost default didefinisikan dalam file /etc/nginx/sites-available/default - mari kita ubah sebagai berikut:
vi /etc/nginx/sites-available/default
[...] server { listen 80; server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; index index.php index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #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 /var/www/nginx-default; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...]
nama server _; menjadikannya vhost catchall default (tentu saja, Anda juga dapat menentukan nama host di sini seperti www.example.com).
Di lokasi / bagian, saya telah menambahkan index.php ke baris indeks. root /var/www/nginx-default; berarti root dokumen adalah direktori /var/www/nginx-default.
Bagian penting untuk PHP adalah lokasi ~ \.php$ {} bait. Batalkan komentar untuk mengaktifkannya. Harap pastikan bahwa Anda mengubah baris fastcgi_param menjadi fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; (ganti /var/www/nginx-default dengan root dokumen vhost Anda) karena jika tidak, interpreter PHP tidak akan menemukan skrip PHP yang Anda panggil di browser Anda.
Pastikan ada spasi antara include dan fastcgi_params; - dalam file default ini ditulis sebagai satu kata yang merupakan bug.
Sekarang simpan file dan mulai ulang nginx:
/etc/init.d/nginx restart
Sekarang buat file PHP berikut di root dokumen /var/www/nginx-default:
vi /var/www/nginx-default/info.php
<?php phpinfo(); ?>
Sekarang kita memanggil file itu di browser (mis. http://192.168.0.100/info.php):
Seperti yang Anda lihat, PHP5 bekerja, dan bekerja melalui FastCGI, seperti yang ditunjukkan pada baris Server API. Jika Anda menggulir lebih jauh ke bawah, Anda akan melihat semua modul yang sudah diaktifkan di PHP5, termasuk modul MySQL:
6 Tautan
- nginx:http://nginx.net/
- nginx Wiki:http://wiki.codemongers.com/Main
- PHP:http://www.php.net
- MySQL:http://www.mysql.com
- Ubuntu:http://www.ubuntu.com/