Tiga kalimat ringkasan dokumen tersebut adalah:
Dokumen tersebut menjelaskan cara menginstal Nginx dengan dukungan PHP5 dan MySQL pada sistem operasi CentOS 6.5, meliputi penginstalan dan konfigurasi Nginx, PHP-FPM, dan MySQL beserta modul-modul yang dibutuhkan.
2. SISTEM OPERASI 2
Nama : Erwin A. Hi. Hafel
Npm : 121055520111262
KOMPUTASi
3. TENTANG NGINX
• Nginx adalah Software gratis, open
source, kinerja tinggi pada server HTTP
Dan PROXY. Nginx dikenal dengan
stabilitasnya, kaya akan fitur, konfigurasi
yang sederhana, dan konsumsi sumber
daya yang rendah.
• http://id.wikipedia.org/wiki/Nginx
• http://nginx.org/
4. • Tutorial ini menunjukkan
bagaimana Anda dapat
menginstal Nginx pada CentOS
6.5 server dengan dukungan
PHP5 (melalui PHP-FPM) dan
dukungan MySQL.
5. 1. Catatan Awal
• Dalam tutorial ini saya menggunakan
server1.example.com nama host
dengan alamat IP 192.168.0.100.
Pengaturan ini mungkin berbeda
untuk Anda, sehingga Anda harus
menggantinya jika sesuai.
6. 2. Mengaktifkan Repositori Tambahan
• php-fpm tidak tersedia pada repositori resmi CentOS, tetapi dari repositori
RPM Remi yang berdiri sendiri dan juga tidak bergantung pada repositori
EPEL, nah kita dapat mengaktifkan kedua repositori tsb dengan cara
sebagai berikut:
• Ketikan perintah di Terminal seperti di bawah ini
rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install yum-priorities
7. Setelah itu Edit Repistory epel dengan perintah seperti berikut;
vi /etc/yum.repos.d/epel.repo
ISI KAN SCRIPT SEPERTI DI BAWAH INI
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[...]
Lakukan Hal yang sama pada repistory remi dengan perintah seperti berikut;
vi /etc/yum.repos.d/remi.repo
ISI KAN SCRIPT SEPERTI DI BAWAH INI
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror enabled=1
priority=10
gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority
8. 3. Installing MySQL 5
• menginstal MySQL 5
#yum install mysql mysql-server
• Lalu kita membuat link startup sistem untuk MySQL (sehingga MySQL
dijalankan secara otomatis setiap kali sistem boot) dan memulai server
MySQL:
#chkconfig --levels 235 mysqld on
service mysqld start
• Sekarang cek jaringan yang diaktifkan. Jalankan Mysql nya
netstat -tap | grep mysql
• Jika mysql nya berjalan atau sudah aktif, harusnya terlihat seperti di bawah
ini;
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1279/mysqld
• Setelah itu Jalankan Mysql
[root@server1 ~]# mysql_secure_installation
Setelah ini akan ada Permintaan masukan Password Baru. Jika anda tidak mau masukan
Password alias root bisa Langsung Tekan ENTER
9. INSTALL NGINX
• Install Nginx
#yum install nginx
• Setelah itu Lalu kita membuat link startup sistem untuk nginx dan
memulainya:
#chkconfig --levels 235 nginx on
service nginx start
• Ada kemungkinan bahwa Anda mendapatkan error seperti port 80 sudah
digunakan, pesan kesalahan akan menjadi seperti ini
[root@server1 ~]# service nginx start
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[FAILED]
10. • Kesalahan ini Terjadi karena Apache sudah mengisi port 80. nah untuk
menghentikan Apache cara nya sbb:
#apachectl stop
#yum remove httpd
#chkconfig --level 235 httpd off
• Nah setelah Apache telah Di stop sekarang jalankan kembali Mysqlnya
chkconfig --levels 235 nginx on
service nginx start
• Next Kita akan membuka Halaman Page NGINX di Browser Ketik alamat IP
web server Anda atau nama host ke dalam browser (misalnya
http://192.168.0.100), dan anda akan melihat halaman selamat datang
nginx seperti gambar di bawah ini
11. INSTALL PHP5
• Kita bisa membuat PHP5 di nginx melalui PHP-FPM (PHP-FPM (FastCGI Process
Manager) merupakan implementasi PHP FastCGI alternatif dengan beberapa fitur
tambahan yang berguna untuk situs dari berbagai ukuran, terutama situs sibuk).
Kita dapat menginstal php-fpm bersama dengan php-cli dan beberapa modul PHP5
seperti php-mysql yang Anda butuhkan jika Anda ingin menggunakan MySQL dari
script PHP ketik periintah seperti dibawah ini:
#yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap
php-tidy
• APC adalah PHP opcode cacher gratis dan terbuka untuk caching dan
mengoptimalkan kode menengah PHP. Hal ini mirip dengan tembolok PHP opcode
lainnya, seperti eAccelerator dan XCache. Hal ini sangat dianjurkan untuk memiliki
salah satu dari ini untuk dipasang agar mempercepat halaman PHP Anda.
APC dapat diinstal dengan cara sebagai berikut :
#yum install php-pecl-apc
12. • Kemudian ketik perintah berikut
/etc/php.ini and set cgi.fix_pathinfo=0
• Lalu Edit repistory nya :
vi /etc/php.ini
• Masukan Script Ini
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]
(Silakan baca http://wiki.nginx.org/Pitfalls untuk mengetahui mengapa
Anda harus melakukan ini.)
13. • Disarankan untuk mengunakan Zona waktu default pada nginx agar tidak
terjadi masalah. Untuk Mengedit waktu default ikuti cara berikut.
Ketik perintah berikut
... in /var/log/php-fpm/www-error.log when you call a PHP script in your browser, you should set
date.timezone in /etc/php.ini:
Masukan Script Berikut ;
[...]
[Date]
; Defines the default timezone used by the date functions
;http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone
="Europe/Berlin“
[...]
• Untuk mengetahui zona waktu yang benar untuk sistem anda.
root@server1 nginx]# cat /etc/sysconfig/clock
ZONE="Europe/Berlin"
[root@server1 nginx]#
• Berikutnya membuat link startup sistem untuk php-fpm dan memulainya:
chkconfig --levels 235 php-fpm on
service php-fpm start
• PHP-FPM adalah proses daemon (dengan /etc/init.d/php-fpm init script)
yang menjalankan FastCGI server pada port 9000.
14. Configuring nginx
• Konfigurasi nginx di /etc/nginx/nginx.conf yang kita buka sekarang
vi /etc/nginx/nginx.conf
Pertama Anda dapat meningkatkan jumlah proses kerja dan mengatur
keepalive_timeout ke nilai wajar:
[...]
worker_processes 4;
[...]
keepalive_timeout 2;
[...]
• Virtual host didefinisikan dalam server {} kontainer di direktori
/etc/nginx/conf.d. Mari kita memodifikasi vhost default (dalam
/etc/nginx/conf.d/default.conf) sebagai berikut:
vi /etc/nginx/conf.d/default.conf
• Setting Konfigurasi nya seperti script Berikut ini ;
15. • [...]
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
} # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# 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$
16. root /usr/share/nginx/html;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$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;
}
}
Script di atas pada Line 3 (server_name _; ) Bisa pasang Host yang kita buat.
• Sekarang simpan file dan isi ulang nginx :
• Habis itu buat file PHP dalam dokumen Root
vi /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
17. • Sekarang kita Panggil file yang di browser misalnya;
Http://192.168.0.100/info.php
• Seperti yang Anda lihat, PHP5 bekerja, dan itu bekerja melalui FPM / FastCGI,
seperti yang ditunjukkan pada garis Server API. Jika Anda menggulir ke
bawah, Anda akan melihat semua modul yang sudah diaktifkan di PHP5,
termasuk modul MySQL:
18. BUAT PHP-FPM Gunakan A Unix Socket
• Secara default PHP-FPM mendengarkan pada port 9000 pada 127.0.0.1.
Hal ini juga memungkinkan untuk membuat PHP-FPM menggunakan soket
Unix yang menghindari overhead TCP. Untuk melakukannya, buka
/etc/php-fpm.d/www.conf ..
vi /etc/php-fpm.d/www.conf
Buat Script seperti dibawah ini
[...]
;listen = 127.0.0.1:9000
listen = /tmp/php5-fpm.sock
[...]
• Kemudian kembali Reload PHP-FPM:
service php-fpm reload
19. • Selanjutnya konfigurasi nginx Anda dan semua vhosts Anda dan ubah baris
fastcgi_pass 127.0.0.1:9000; untuk fastcgi_pass unix: /tmp/php5-
fpm.sock;,
seperti ini:
[...]
location ~ .php$ {
root /usr/share/nginx/html;
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
[...]
• Tahap Akhir
Reload kembali service Nginx
service nginx reload