Pada kesempatan ini saya akan membagikan pengalaman serta cara membangun server website menggunakan 
Linux, Nginx, MySQL, PHP (LEMP) Untuk aplikasi webservernya kita akan menggunakan 
Nginx ( dibaca engine x ), bukan apache. Nginx sendiri adalah sebuah aplikasi untuk 
web server yang open source, serta memiliki kehandalan dan beberapa kelebihan dibandingkan aplikasi 
web server
 lain seperti apache. Salah satu yang paling saya suka dari nginx adalah
 performanya yang tinggi serta hemat resource. Oleh sebab itu, banyak 
website besar dengan trafik tinggi memilih nginx sebagai mesinnya, salah
 satu contohnya adalah wordpress. Nginx sendiri dapat dipadukan dengan 
apache sebagai reverse proxy ataupun loadbalancer, oleh karena itu 
penyedia CDN rata – rata menggunakan nginx sebagai webserver mereka.
 
Untuk saat ini, seiring dengan kemajuan 
teknologi dan perkembangan zaman, teknologi bukanlah sebuah barang mewah
 lagi. Contohnya untuk server, dengan biaya hanya 1 jutaan sebulan, kita
 sudah bisa menggunakan server pribadi hanya untuk kita sendiri. Jika 
kebutuhan sobat hanya untuk sekedar hobi atau pribadi saja, tentu 
fasilitas server pribadi mubadzir, oleh karena itu sobat dapat 
menggunakan 
website hosting yang banyak disewakan oleh host provider, atau 
shared hosting.
 Sobat tidak akan merasakan dampak yang berarti jika trafik sobat 
rendah, tetapi jika website atau blog sobat memiliki trafik harian yang 
padat, siap -siap saja untuk merasakan dongkol karena kecepatan akses 
yang lelet apalagi jika 
hosting provider
 melakukan overselling tanpa memperhitungkan kapasitas server, siap – 
siap saja untuk merasakan rutinitas request time out dan downtime rutin 
  
Solusi terbaik yang dapat sobat ambil adalah menyewa sebuah VPS ( 
virtual private server ) atau VDS ( virtual 
dedicated server
 ) unmanaged atau server virtual kosong. Harga VPS jenis ini jauh lebih 
murah, karena yang mengatur serta menjadi adminnya adalah sobat sendiri,
 penyedia hanya mengurus masalah hardware dan jaringan. Untuk saya 
sendiri, saya menyukai server jenis ini, yang pertama jelas karena 
harganya yang bersahabat, serta kita dapat belajar darisana. Biasanya 
jika menyewa sebuah VPS/VDS, sobat akan diberikan sebuah akun dengan 
akses root atau admin beserta OS yang telah terinstall. Server ini belum
 bisa digunakan sebagai webserver, karena aplikasi untuk website server 
belum terinstall di dalamnya. Untuk membangun sebuah webserver, aplikasi
 standar yang sobat butuhkan antara lain adalah Apache dan Nginx sebagai
 webserver, MySQL untuk mengurus database, serta PHP untuk menghandle 
halaman serta script website sobat. Dengan menginstal aplikasi tersebut,
 server sobat sudah bisa digunakan untuk membuka halaman website.
 
Sesuai dengan apa yang telah saya 
sampaikan sebelumnya, kali ini saya akan membagikan pengalaman serta 
cara membangun ataupun install webserver pada Linux menggunakan aplikasi
 Nginx, MySQL, dan PHP atau istilahnya LEMP ( Linux Enginex MySQL PHP ).
 Pada tutorial ini saya tidak menggunakan aplikasi server apache, karena
 saya ingin membangun webserver hemat resource dengan performa tinggi. 
Sebelum memulai proses penginstallan, sebaiknya aplikasi apache terlebih
 dahulu di remove atau di nonaktifkan agar tidak bentrok dengan aplikasi
 Nginx. Karena, biasanya aplikasi Apache webserver telah terinstall pada
 OS VPS. Pada tutorial ini saya menggunakan VPS dengan OS Centos, jika 
sobat menggunakan OS yang berbeda, sobat dapat menyesuaikannya.
Cara Menginstall Nginx Webserver.
Pertama – tama, login ke VPS sobat dan 
gunakan akses root. Sobat dapat menggunakan aplikasi Putty atau Bitvise 
untuk login ke dalam akun vps sobat. Jika VPS sobat masih baru dinstall,
 alangkah baiknya sobat melakukan update OS. Bagi pengguna VPS dengan OS
 Centos, sobat tinggal mengetikkan perintah yum update -y dan VPS sobat akan terupdate. Untuk menginstall aplikasi Nginx ini cukup mudah, ada 2 cara yang dapat digunakan:
Cara pertama, install Nginx melalui repo Epel :
Pada terminal, dengan akses root ketikkan perintah dibawah ini :
rpm –import http://fedoraproject.org/static/0608B895.txt
rpm -ivh 
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  ( jika sobat menggunakan OS Centos Versi 6 keatas )
rpm -ivh 
http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
   ( jika sobat menggunakan OS Centos Versi 5 )
 
Perintah diatas hanya berlaku untuk VPS dengan OS Centos, pilih .rpm 
yang sesuai dengan versi OS sobat, gunakan salah satu saja. Setelah itu 
sobat dapat juga menginstall repo Remi dengan perintah dibawah ini.
rpm –import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm   ( jika sobat menggunakan OS Centos Versi 6 keatas )
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm  ( jika sobat menggunakan OS Centos Versi 5 )
 
Sesuaikan repo yang diinstall dengan versi OS sobat, pilih dan gunakan salah satunya.
Setelah repo terinstall, sobat tinggal menginstall nginx dengan perintah yum install nginx -y, sobat dapat melihat aplikasi yang terinstall pada terminal linux sobat. Tunggu hingga semua proses Complete atau selesai.
Cara kedua, install Nginx melalui repo nginx :
Pada cara ini, sobat menginstall nginx 
melalui official repo nginx. Sobat dapat memilih versi nginx yang akan 
diinstall pada halaman nginx.org/packages. Terdapat dua versi 
aplikasi nginx, yaitu mainline dan stable. Mainline version adalah versi
 terakhir dan terbaru nginx, sedangkan stable version adalah versi nginx
 yang telah teruji kestabilannya. Untuk menginstall repo nginx ini, 
sobat dapat mengikuti langkah – langkah dibawah ini.
Pada terminal ketikkan perintah vi /etc/yum.repos.d/nginx.repo
Lalu akan terbuka aplikasi vi, edit file
 baru tersebut dengan menggunakan tombol C, lalu pilih salah satu baris 
perintah dibawah ini, sobat dapat mengetikkannya atau 
copy paste dari halaman ini.
 
Untuk menginstall nginx mainline version pada os centos versi 5.
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/5/$basearch/
gpgcheck=0
enabled=1
 
Untuk menginstall nginx mainline version pada os centos versi 6.
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/6/$basearch/
gpgcheck=0
enabled=1
 
Untuk menginstall nginx sable version pada os centos versi 5.
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/5/$basearch/
gpgcheck=0
enabled=1
 
Untuk menginstall nginx sable version pada os centos versi 6.
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
 
Sobat dapat memilih salah satunya, sesuaikan versi yang sobat install
 dengan versi OS sobat. Saya sarankan menggunakan Nginx Stable version, 
karena telah teruji kestabilannya. Setelah selesai, sobat tinggal 
menyimpan repo sobat tersebut, pencet tombol esc, lalu ketikkan :wq.
Setelah itu sobat dapat langsung menginstall aplikasi Nginx dengan command yum install nginx atau yum install nginx -y, lalu tunggu hingga proses instalasi selesai.
Sekarang VPS sobat telah dilengkapi dengan aplikasi webserver Nginx. 
Aplikasi ini sudah terinstall, tapi belum berjalan pada system sobat. 
Untuk menjalankannya, sobat dapat mengetikkan baris perintah ini pada 
terminal :
chkconfig –level 345 nginx on #Untuk menjalankan aplikasi secara otomatis pada saat boot.
 
Lalu ketikkan,
service nginx start  #Untuk menjalankan aplikasi Nginx
 
Jika tidak ada kesalahan, aplikasi nginx
 akan langsung berjalan pada sistem VPS sobat. Untuk mengeceknya, sobat 
dapat mengetikkan alamat ip vps sobat pada browser. Sobat akan melihat 
halaman “selamat datang” pada alamat ip sobat tersebut jika semuanya 
telah berjalan dengan benar.
Cara menginstall aplikasi PHP ( php-fpm ) :
Sebelumnya sobat telah menginstall 
aplikasi nginx sebagai webserver pada VPS sobat. Jika sobat hanya 
menggunakan webserver tersebut untuk membuka halaman website berekstensi
 .html sebenarnya tidak akan ada masalah. Hanya saja, server tersebut 
tidak akan dapat digunakan untuk halaman website dengan pemrograman PHP,
 karena belum ada aplikasi untuk menghandle format PHP. Solusinya dapat 
dengan menginstall aplikasi php-fpm, yang berfungsi 
sebagai handler untuk program PHP. Aplikasi php-fpm ini tidak tersedia 
pada repo standar centos. Untuk menginstallnya, sobat terlebih dahulu 
harus menggunakan repo Remi. Repo Remi ini berkaitan atau membutuhkan 
repo Epel, jadi sobat harus menginstall kedua repo ini agar dapat 
menginstall php-fpm. Jika sebelumnya sobat menginstall nginx melalui 
repo Epel, sobat dapat langsung memulai proses instalasi aplikasi 
php-fpm ini. Tetapi, jika sobat sebelumnya menggunakan repo nginx, maka 
sobat dapat menginstall kedua repo ini. Caranya dapat sobat lihat pada 
langkah instalasi Nginx diatas.
Jika repo yang dibutuhkan telah terinstall, sobat dapat langsung memulai proses instalasi dengan perintah :
Untuk menginstall php-fpm berikut aplikasi pendukung php lainnya :
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 php-pecl-apc
 
Lalu jalankan dengan perintah,
chkconfig –level 345 php-fpm on
/etc/init.d/php-fpm start
Jika tidak ada kesalahan, maka aplikasi 
akan berjalan pada system VPS sobat. Dan, sekarang vps sobat telah 
dilengkapi dengan php-fpm untuk menghandle aplikasi PHP.
Cara menginstall aplikasi mysql :
Setelah sebelumnya VPS sobat telah terinstall aplikasi webserver 
nginx dan php-fpm, sobat juga membutuhkan aplikasi untuk menangani 
database website sobat. Sobat dapat langsung menginstall aplikasi mysql 
dengan perintah :
yum install mysql mysql-server
 
Lalu jalankan server mysql sobat dengan perintah :
chkconfig –level 345 mysqld on
service mysqld start
 
Dan aplikasi mysql sobat telah terinstall dan berjalan pada system 
sobat. Server mysql sobat ini belumlah sempurna dan rentan akan masalah 
keamanan, karena siapa saja dapat mengaksesnya. Sebelum digunakan, set 
password root dan setting keamanan untuk server mysql sobat ini dengan 
perintah :
mysql_secure_installation
 
Setelah perintah tersebut diketikkan, tekan tombol ENTER, pada saat 
diminta membuat password root mysql, isikan dengan password yang akan 
sobat gunakan. Gunakan password root mysql yang berbeda dengan password 
root login VPS sobat. Untuk langkah lengkapnya dapat sobat lihat dibawah
 ini :
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
       SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 In order to log into MySQL to secure it, we’ll need the current
 password for the root user.  If you’ve just installed MySQL, and
 you haven’t set the root password yet, the password will be blank,
 so you should just press enter here.
 Enter current password for root (enter for none):    # Tekan tombol ENTER
 OK, successfully used password, moving on…
 Setting the root password ensures that nobody can log into the MySQL
 root user without the proper authorisation.
 Set root password? [Y/n] # Tekan tombol ENTER
 New password: # Isikan password yang akan digunakan untuk root mysql sobat
 Re-enter new password: # Isikan password yang akan digunakan untuk root mysql sobat
 Password updated successfully!
 Reloading privilege tables..
  … Success!
 By default, a MySQL installation has an anonymous user, allowing anyone
 to log into MySQL without having to have a user account created for
 them.  This is intended only for testing, and to make the installation
 go a bit smoother.  You should remove them before moving into a
 production environment.
 Remove anonymous users? [Y/n] # Tekan tombol ENTER
  … Success!
 Normally, root should only be allowed to connect from ’localhost’.  This
 ensures that someone cannot guess at the root password from the network.
 Disallow root login remotely? [Y/n] # Tekan tombol ENTER
  … Success!
 By default, MySQL comes with a database named ’test’ that anyone can
 access.  This is also intended only for testing, and should be removed
 before moving into a production environment.
 Remove test database and access to it? [Y/n] # Tekan tombol ENTER
  - Dropping test database…
  … Success!
  - Removing privileges on test database…
  … Success!
 Reloading the privilege tables will ensure that all changes made so far
 will take effect immediately.
 Reload privilege tables now? [Y/n] # Tekan tombol ENTER
  … Success!
 Cleaning up…
 All done!  If you’ve completed all of the above steps, your MySQL
 installation should now be secure.
 Thanks for using MySQL!
Sekarang server mysql sobat sudah dapat digunakan.
Setup config Nginx agar berjalan menggunakan php-fpm
Aplikasi Nginx dan php-fpm telah 
terinstall, namun belum berjalan “berdampingan”. Untuk membuat kedua 
aplikasi ini berjalan sebagaimana mestinya, sobat tinggal melakukan 
sedikit perubahan pada konfigurasi aplikasi nginx sobat. Pertama, sobat 
dapat melihat file conf nginx sobat yang terletak di folder /etc/nginx/nginx.conf, atau buka menggunakan aplikasi vi dengan perintah vi /etc/nginx/nginx.conf, maka akan terlihat konfigurasi standar nginx sobat.
user nginx;
worker_processes 4;  # Sesuaikan nomor dengan jumlah core cpu vps sobat
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
 worker_connections 1024;
}
http {
 include /etc/nginx/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 main;
sendfile on;
 #tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
Pada file konfigurasi diatas terlihat 
baris include /etc/nginx/conf.d/*.conf; dimana semua file dengan 
ekstensi .conf pada folder conf.d akan turut dibaca oleh aplikasi nginx.
 Pada folder conf.d ini sobat juga dapat menambah, mengurangi, atau 
melakukan perubahan domain atau vhost sobat. Saat ini pada folder 
tersebut baru tersedia 2 file konfigurasi dengan nama default.conf 
dan example_ssl.conf. Konfigurasi standar untuk alamat ip sobat berada 
pada file defaut.conf. Untuk menambahkan domain atau vhost baru, sobat 
tinggal membuat file konfigurasi baru, misalnya dengan nama domainsobat.conf, lalu isikan dengan baris – baris berikut ini :
server {
 listen 80; #Port yang digunakan aplikasi nginx
 server_name domainsobat.asia www.domainsobat.asia; # Isikan dengan nama domain sobat
#charset koi8-r;
access_log /home/user/domainsobat/domainsobat.access.log main;  # File log access domain sobat, sobat dapat memodifikasinya.
location / {
 root /home/user/domainsobat/;  # Folder tempat file website sobat, sobat dapat memodifikasinya.
 index index.html index.php 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; # Halaman error, sobat dapat memodifikasinya.
 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$ {  # Semua file .php pada folder /home/user/domainsobat/ akan melewati aplikasi php-fpm yang berjalan pada port 9000
 root /home/user/domainsobat/;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
 include fastcgi_params;
}
# deny access to .htaccess files, if Apache’s document root
 # concurs with nginx’s one
 #
location ~ /\.ht {  # Jika sebelumnya pada folder website sobat terdapat file .htaccess, maka setingan .htaccess akan digantikan oleh setingan nginx
 deny all;
}
}
Setelah file domainsobat.conf 
selesai di edit, sobat tinggal menyimpannya. Setting DNS pada domain 
kontrol panel sobat agar domain sobat mengarah ke IP vps sobat, misalnya
 dengan mengisikan alamat A domain dengan IP VPS sobat. Lalu restart 
service nginx dengan perintah service nginx restart. 
Jika tidak ada kesalahan pada konfigurasi sobat maka akan terlihat 
tulisan [OK]. Tunggu hingga DNS pada domain sobat benar – benar telah 
mengarah ke alamat IP VPS sobat. Jika domain sobat telah menyatu dengan 
VPS sobat, sobat dapat membuat file dengan ekstensi .php pada folder 
website domain sobat, misalnya gado2.php, lalu isikan file gado2.php 
dengan <? phpinfo( ); ?>
Simpan file tersebut,lalu buka 
domainsobat.asia/gado2.php pada broser, jika semuanya telah berjalan 
dengan benar, maka sobat akan melihat detail webserver sobat. Untuk 
menambah domain, sobat tinggal membuat file konfigurasi .conf pada 
folder conf.d. Setelah melakukan perubahan pada file konfigurasi, jangan
 lupa restart aplikasi nginx sobat.
Sekarang sobat telah memiliki server website LEMP sendiri, sobat dapat merasakan perbedaan kecepatan aksesnya dan kebebasan dalam menggunaka resource.
Jika ada kendala yang bersangkutan 
dengan apa yang saya sampaikan pada halaman ini, sobat dapat 
mengungkapkannya pada form komentar dibawah, karena saya menyadari bahwa
 apa yang saya sampaikan belum sepenuhnya sempurna karena saya juga 
masih dalam proses belajar. Oleh karena itu kritik, saran maupun share 
tambahan dari sobat semua sangat saya harapkan.