Membangun Web Server (NginX PHP MySQL)

NginX atau biasa disebut dengan EngineX adalah aplikasi web server baru yang saat ini mulai banyak digunakan. Kelebihan NginX dibandingkan Apache (aplikasi web server yang paling banyak dipakai dunia saat ini) adalah optimalisasi penggunaan resource yang jauh lebih kecil bahkan sampai hanya 50% dari penggunaan resource yang digunakan oleh Apache. Note: OS yang digunakan adalah Centos 6.X 64bit.

*Note: untuk anda yang tidak terbiasa dengan vi, bisa menggunakan mcedit (shell text editor yg lebih mudah). Untuk menginstall mcedit, jalankan perintah yum install mc

KONFIGURASI HOSTNAME

Edit file /etc/hosts dengan text editor, ubah mymachine.com menjadi FQDN (Full Qualified Domain Name) anda, dan mymachine dengan hostname anda.

127.0.0.1      localhost.localdomain     localhost
192.168.1.1   mymachine.com           mymachine

Berikutnya jalankan perintah berikut didalam mesin anda, ubah mymachine menjadi nama hostname anda.

echo "HOSTNAME=mymachine" >> /etc/sysconfig/network
echo "mymachine" > /etc/hostname
hostname -F /etc/hostname

Untuk mengetahui apakah sudah berubah atau belum bisa dilakukan dengan menjalankan perintah berikut:

hostname
hostname -f

PERSIAPAN AWAL

Karena PHP-FPM tidak ada di repository default Centos, kita harus menambahkan repository EPEL dan REMI dengan cara dibawah:

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

Tambahkan “priority=10” kedalam konfigurasi repositori EPEL dan REMI. Contoh isi /etc/yum.repos.d/epel.repo:

[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
[...]

INSTALLASI NGINX DAN PHP

Untuk mempermudah pengerjaan anda, disini kita akan menginstall dan mengkonfigurasi NginX dan PHP sekaligus baru dilanjutkan dengan MySQL.

Install NginX dan PHP:

yum update
yum install nginx php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

Edit dan tambahkan konfigurasi berikut pada fie konfigurasi php anda di /etc/php.ini

cgi.fix_pathinfo = 0

Edit file konfigurasi nginX

vi /etc/nginx/nginx.conf

Untuk menghindari error kesalahan Timezone isi kolom date.timezone:

date.timezone = Asia/Jakarta

Hilangkan ‘#’ pada baris yang ada di dalam file konfigurasi tersebut di baris-baris berikut:

#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

Ubah baris fastcgi_param menjadi

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Untuk yang menginginkan tunneling fastcgi/php-fpm melalui socket, optimizing ini bertujuan untuk menghindari TCP overhead pada webserver dengan concurrent yang cukup tinggi, ganti baris fastcgi_pass menjadi

fastcgi_pass   unix:/tmp/php-fpm.sock;

Jangan lupa apabila tunneling dilakukan via socket ubah listen = 127.0.0.1:9000 pada /etc/php-fpm.d/www.conf menjadi listen = /tmp/php-fpm.sock

Setelah selesai, tinggal jalankan service nginx.

service nginx start
service php-fpm start

Untuk menjadikan NginX & PHP-FPM autorun, aktifkan dengan menjalankan perintah berikut

chkconfig --levels 235 nginx on
chkconfig --levels 235 php-fpm on

INSTALLASI MySQL

Umumnya pada saat menggunakan Cloud Server sebagai Web Server, walaupun ada namun jarang sekali pengguna hanya menginstall Webserver tanpa di sertai database saja, itulah alasan biasanya disebut dalam nama paket yaitu LAMP (Linux Apache, MySQL, PHP) atau LEMP (Linux, NginX, MySQL, PHP) apabila aplikasi web server yang digunakan adalah EngineX atau NginX.

Install MySQL dengan perintah:

yum install mysql mysql-server

Jalankan MySQL untuk pertama kali:

service mysqld start

Untuk menjadikan MySQL otomatis dipanggil pada saat server restart

chkconfig --levels 235 mysqld on

Setelah MySQL aktif, lakukan konfigurasi awal dengan perintah dibawah dan jawab setiap pertanyaan, jawab sesuai default atau dengan menekan enter kecuali ada sesuatu yang ingin anda ubah. Masukkan password baru apabila diminta.

mysql_secure_installation

Setelah melakukan konfigurasi awal, lanjutkan dengan mengakses MySQL dengan

mysql -u root -p

Buat database dan user yang akan menggunakan database tersebut dengan perintah:

create database namadatabase;
grant all on namadatabase.* to 'namauser' identified by 'passworduser';

Jalankan perintah quit untuk mengakhiri, database sudah siap digunakan untuk kebutuhan web server dan server-side scripting.

INSTALLASI phpMyAdmin

Install phpMyAdmin dengan perintah:

yum install phpmyadmin

Tambahkan baris berikut didalam file konfigurasi NginX

location ^~ /phpMyAdmin {
root /usr/share;
fastcgi_pass   127.0.0.1:9000; # ganti apabila menggunakan socket
fastcgi_index  index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include        fastcgi_params;
}

Restart service nginx anda. Selamat menggunakan Web Server EngineX alias NginX anda.

A. Hardiena

Teknoblogger, Linux Addict yang juga Pengembang Linux Zencafe, meraih penghargaan dibidang open source oleh Menkominfo M. Nuh dan Menristek Kusmayanto Kadiman. Saat ini berlabuh disalah satu perusahaan media terbesar Indonesia, VIVA.co.id. Hobi wisata kuliner dengan beberapa aktivitas seperti Koordinator IGOS Center, Koordinator Pokja Asosiasi Open Source Indonesia, Pembina Asosiasi Warnet Linux & Open Source Indonesia dan KPLI Bekasi.

3 thoughts on “Membangun Web Server (NginX PHP MySQL)

  1. Openpenguin Reply

    nyobain om

    install nginx lemp server ubuntu

  2. Aris Reply

    mas, saya mau tanya.
    file di bawah ini tidak ada di dalam etc/nginx/nginx.conf
    # location ~ .php$ {
    # root html;
    # fastcgi_pass 127.0.0.1:9000;
    # fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    # include fastcgi_params;
    # }
    time.zone= Asia/Jakarta
    itu semua tidak ada didalam file nginx.conf.
    bisa dijelaskan mas? terimakasih.

Leave a Reply

Your email address will not be published. Required fields are marked *