≡ Menu
Pabelog

Membangun VPS WordPress 3: Install Nginx, PHP-FPM, MariaDB, phpMyAdmin

in Hacking, VPS

Jika kamu mendapat pesan error, pastikan bahwa kamu mengikuti langkah-langkah dengan benar. Banyak kesalahan terjadi karena kurang telili. Atau kamu bisa mencoba cara instan menginstall WordPress di VPS dengan EasyEngine.

Halo!! bagaimana kabarnya? Masih dalam seri membangun VPS. Pada bagian ini, sekarang kita akan melakukan installasi Nginx, PHP-FPM, MariaDB, dan phpMyAdmin pada VPS DigitalOcean kita. Sekedar mengingatkan bagian sebelumnya kita memulai dengan:

Hari ini kita akan membangun VPS dengan teknologi paling mutakhir, dengan tujuan agar blog kita loading super cepat dan sangat ringan. So, sejauh ini kita telah melakukan dan akan melakukan hal berikut:

  • Pemilihan server DigitalOcean Singapore untuk akses yang cepat dari Indonesia
  • Install OS terbaru Debian 7
  • Tidak ada lagi Apache, Nginx bekerja jauh lebih cepat dan ringan dari Apache
  • PHP-FPM, didisain untuk situs dengan trafik yang besar
  • Pemakaian MarriaDB (bukan MySQL milik Oracle), dikembangan lebih baik dibandingkan MySQL

Kenapa Memilih Nginx?

Sebelum memakai Nginx, saya memakai server Apache. Tidak ada yang salah, Apache adalah web server yang bagus dan memiliki client paling banyak dibanding web server lainnya. Memakai Apache menimbulkan masalah ketika website kita mulai tumbuh dan memiliki trafik besar.

Opsi untuk menyelesaikan masalah tersebut adalah upgrade hardware atau kamu memang benar-benar mengerti bagaimana memaksimalkan konfigurasi Apache yang cukup kompleks — tentunya opsi pertama lebih mudah, upgrade harware, tetapi akan memakan cost yang lebih mahal lagi.

Nginx adalah web server yang dibuat untuk menyelesaikan masalah C10K. Gampangnya untuk menyelesaikan masalah website yang sangat sibuk karena trafik yang besar dengan memaksimalkan menejmen hardware.

Artinya nginx bekerja dengan ringan dan meminimalisir kita untuk upgrade hardware. Contoh website super sibuk yang memakai nginx adalah WordPress, CloudFlare, WPEngine, dll.

Install Nginx

Sebelumnya, kamu pernah menginstall Nginx pada bagian 2. Sebenarnya masih ada cara lain yang jauh lebih mudah. Jika kamu ingin mencoba cara ini, sebaiknya uninstall terlebih dahulu Nginx yang telah kita install sebelumnya.

service nginx stop
apt-get remove --purge nginx-extras
apt-get autoremove

Sekarang kirta install Nginx dengan cara yang lebih mudah.

apt-get install python-software-properties
sudo -s
nginx=stable
add-apt-repository ppa:nginx/$nginx
apt-get update
apt-get install nginx-extras
service nginx restart

Sebenarnya kamu bisa saja menginstall nginx dengan melakukan perintah apt-get install nginx, tetapi kita di sini akan install nginx secara penuh. Lihat perbedaan nginx vs nginx-extras.

Jika pada saat melakukan apt-get update terdapat pesan error 404 pada ppa nginx, lakukan perintah berikut:

apt-add-repository --remove ppa:nginx/$nginx

So, kita sudah melakukan instalasi Nginx, beberapa perintah yang harus kamu tahu adalah sebagai berikut:

service nginx stopMemberhentikan web server
service nginx startMenghidupkan web server
service nginx restartRestart web server
service nginx statusMelihat status web server

Install PHP-FPM

Bagian selanjutnya adalah PHP, untuk menjalankan WordPress kita memerlukan software PHP, selain tentunya database dan web server. Yang akan kita install adalah PHP-FPM (FastCGI Process Manager), dibandingkan PHP biasa, PHP-FPM bekerja lebih maksumal untuk website dengan trafik yang cukup tinggi.

Untuk menginstall PHP terbaru, kita harus menambahkan repository dotdeb yang menyediakan PHP versi terbaru. Edit sources.list dengan perintah nano /etc/apt/sources.list, lalu tambahkan link berukut dibagian paling bawah.

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

Gunakan tombol Ctrl + x untuk keluar dan jangan lupa save.

Lakukan instalasi dengan perintah berikut:

wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
apt-get update
apt-get install php5-fpm php5-common php5-mysql php5-curl
service php5-fpm restart

Untuk memastikan apakah PHP sudah bekerja, edit /etc/nginx/sites-available/default dengan menggunakan nano. Temukan baris berikut:

        #location ~ \.php$ {
#       fastcgi_split_path_info ^(.+\.php)(/.+)$;
#       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
#       fastcgi_pass unix:/var/run/php5-fpm.sock;
#       fastcgi_index index.php;
#       include fastcgi_params;
#}

Lalu hilangkan beberapa tanda # pada bagian-bagian berikut, sehingga hasilnya seperti ini:

        location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
#       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# 
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

Setelah selesai jangan lupa simpan dan keluar dari /etc/nginx/sites-available/default. Selanjutnya buat halaman phpinfo.php di direktori /usr/share/nginx/www dengan cara sebagai berikut:

cd /usr/share/nginx/www
touch phpinfo.php

Gunakan perintah ls -a untuk melihat file apa saja yang ada di direktori tersebut. Jika sudah terdapat phpinfo.php, selanjutnya kamu edit phpinfo.php dengan nano lalu masukan kode berikut:

<?php phpinfo() ?>

Jangan lupa simpan dan keluar. Restart nginx dengan perintah service nginx restart, lalu arahkan browser kamu ke alamat IP atau domain kamu ditambahkan dengan /phpinfo.php. Pada kasus saya, saya mengarahkan ke alamat http:vuzmanga.com/phpinfo.php.

Jika kamu melihat halaman informasi php, artinya kamu berhasil menginstall dan menjalankan script PHP. Gunakan perintah cd ~ untuk kembali ke direktori home kamu.

Halaman Informasi PHP

Halaman Informasi PHP

MySQL vs MariaDB

MariaDB sebenarnya hampir sama dengan MySQL, MariaDB adalah drop in replacement dari MySQL. Untuk pemakai MySQL artinya tidak perlu melakukan konversi, database MySQL akan bekerja penuh di MariaDB. Kamu bisa memperlakukan MariaDB seperti MySQL.

Lalu apa yang membedakan?

Sejak Sun Microsystem diakusisi oracle, otomais semua produknyapun — termasuk MySQL. Sejak saat itu pula MySQL melakukan update tidak begitu memuaskan menurut para pemakainya. Kita ketahu bahwa Oracle memiliki produk database lain.

Lalu munculah MariaDB yang memiliki performa lebih baik, stabilitas lebih baik, dan yang terpenting adalah dikelola dengan lebih baik. baca: MariaDB vs MySQL.

Salah satu raksasa dunia yang sudah migrasi dari MySQL ke MariaDB adalah Google.

Install MariaDB

Kamu bisa saja menginstall MariaDB melalui repository configuration tool. Meskipun begitu, saya akan tetap menunjukan bagaimana cara install MariaDB pada Debian 7.

Untuk menginstall MariaDB, pertama kamu harus menambahkan dulu repository MariaDB pada sources.list VPS kamu. Ikuti langkah-langkah berikut untuk menambahkannya.

apt-get install python-software-properties
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb http://download.nus.edu.sg/mirror/mariadb/repo/5.5/debian wheezy main'

Lakukan instalasi dengan perintah berikut:

apt-get update
apt-get install mariadb-server

Ketika proses instalasi berjalan, nantinya MariaDB akan meminta password untuk root user. Jangan kosongkan, gunakan password yang kuat, pastikan kamu mengingat atau mencatat password itu.

Setelah kamu berhasil install MariaDB, restart dan lakukan perintah berikut untuk membuat MariaDB lebih aman. Lalu ikuti petunjuk selanjutnya.

service mysql restart
mysql_secure_installation

Jawab setiap pertanyaan seperti berikut, Remove anonymous users? Y, Disallow root login remotely? Y, Remove test database and access to it? Y, Reload privilege tables now? Y.

Sampai di sini kamu sudah berhasil menginstall MariaDB. Jika kamu sudah terbiasa dengan query atau command line MySQL, kamu bisa login ke database dengan user root dan password yang kamu setup sebelumnya. Tetapi jika kamu belum terbiasa dengan query atau command line MySQL, kita akan menginstall phpMyAdmin.

Install phpMyAdmin Database Management

Lakukan installasi phpMyAdmin dengan perintah berikut, lalu ikuti petunjuk selanjutnya.

apt-get install phpmyadmin

Pada saat menginstall phpMyAdmin kamu akan dihadapkan dengan jendela yang meananyakan akan di-install di web server apa phpMyAdmin. Memang tidak ada nginx, pilihan hanya ada apache dan httpd, pilih apache. Tekan tombol tab untuk navigasi.

Pilih Apache sebagai Web Server

Pilih Apache sebagai Web Server

Configure database for phpmyadmin with dbconfig-common? Yes, Setelah itu mereka akan menanyakan root password (administrative user), gunakan root password yang kamu buat sebelumnya.

Jika porses login dengan root password berhasil, selanjutnya mereka menyuruh kamu membuat password untuk phpMyAdmin. Jangan samakan password phpMyAdmin dengan password untuk root, gunakan password yang kuat.

Langkah selanjutnya adalah membuat phpMyAdmin dapat diakses dari web browser, caranya adalah dengan membuat virtual host. Berukut adalah cara membuat virtual host:

cd /etc/nginx/sites-available/
touch phpmyadmin

pastikan file virtual host phpmyadmin ada dengan perintah ls -a. Lalu edit file phpmyadmin dengan perintah nano phpmyadmin. Masukan script di bawah ini, sesuaikan dengan alamat IP atau domain kamu, lalu simpan.

Pada bagian server_name vuzmanga.com jangan lupa ganti dengan domain atau alamat IP kamu.

server {
		listen 8888;
		server_name vuzmanga.com 128.199.254.251;
		access_log /var/log/nginx/localhost.access.log;
		root /usr/share/phpmyadmin;
		index index.php;
		location / {
		try_files $uri $uri/ @phpmyadmin;
		}
		
		location @phpmyadmin {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		#fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin/index.php;
		include /etc/nginx/fastcgi_params;
		fastcgi_param SCRIPT_NAME /index.php;
		}

		# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
		#
		location ~ \.php$ {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		#fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;
		include fastcgi_params;
		}
}

Kamu bisa mengganti port 8888 dengan port apa saja asalkan bukan 80, 443, 21, atau 22. Selanjutnya untuk membuat phpmyadmin berjalan, kita harus membuat link simbolik lalu restart nginx. Lakukan perintah di bawah untuk membuatnya.

ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/phpmyadmin
service nginx restart

Akses phpmyadmin dengan alamat domain:8888 atau dalam kasus saya, vuzmanga.com:8888. Kamu juga bisa mengganti akses phpMyAdmin memakai subdomain (bukan port) dengan mengganti server_name namadomain.com menjadi server_name subdomain.namadomain.com lalu mengganti port menjadi 80.

phpMyAdmin Login


Login phpMyAdmin memakai akun root dengan password root yang kamu simpan sebelumnya

**

Selesai! Saya berusaha agar tutorial ini sejelas mungkin, tetapi jika kamu mendapat masalah kamu bisa kontak email saya atau langsung berkomentar.

Nah, tahap selanjutnya dari membangun VPS WordPress adalah installasi WordPress. Pastikan jangan sampai ketinggalan dengan cara subscribe.

About the author: Halo, saya pengelola sekaligus pemilik blog ini. Saya suka blogging, programing, makan, dan tidur. Kontak saya di twitter saya, Google+ saya. Yakin gak komentar? blog ini do-follow loh!

Comments on this entry are closed.

  • Bagus January 11, 2015, 2:07 am

    mas ketika saya kok cek dengan phpinfo.php kok tidak memunculkan data
    tapi nginx dan php-fpm juga sudah aktif. Dan tidak ada error sampai tahap ini.
    Cuman masalah phpinfo.php nya saja yang membingungkan

  • idin November 18, 2014, 11:35 pm

    ass
    saat service nginx restart
    fail ya
    kira-kira apa yg harus di perbaiki ya
    trimakasih

  • rizki anugrah November 14, 2014, 2:20 am

    bener-bener bermanfaat artikelnya mas, saya baru pertama kali berpindah ke vps dengan membaca tutorial mas yang sangat jelas membuat saya belum ada kendala sampe step ini. tutorial nya sangat baik dalam penyampaian . good job mas

  • andi November 8, 2014, 8:44 pm

    Mau tanya mas,
    Saya dah sampe tahap setting virtual host tapi pas restart yang muncul ini:

    Restarting nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: [emerg] open() “/srv/www/andizulkiflinurdin.com/logs/access.log” failed (2: No such file or directory)
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Kira2 dimana letak errornya ya, apa salah setting di virtual hostnya. Tambahan lagi, apa bisa masukkan domain yang sudah hosting di tempat lain>

    Mohon penjelasannya,

    Salam

    • Nadiar AS November 11, 2014, 11:58 am

      Direktori-nya coba periksa lagi, katanya gak ada direktori ini /srv/www/andizulkiflinurdin.com/logs/

  • Lihin October 7, 2014, 1:37 am

    Steo by step dong, mulai dari PC yang digunakan. Apakah jika VPS linux harus menggunakan OS linux juga di PC dll????? thanks yah sangat membantu :)

  • fendri September 2, 2014, 4:18 pm

    pas membuat link simbolic muncul pesan failed to create symbolic link ‘ /etc/sites-enables’
    dan dites buka phpmyadmin pada browser dengan addressweb:port muncul tulisan file not found. Case ini salahnya dimana ya mas?

    • Mas Jamal October 11, 2014, 8:39 am

      Nah kasusnya sama kayak saya ini.
      Tapi saya pengaturannya bukan apache melainkan lighttpd.

      Gimana ya mas?

      • Nadiar AS October 15, 2014, 7:47 pm

        Waduh, saya belum bisa bantu untuk lighttpd, belum pernah sentuh sama sekali.

    • Herdian November 27, 2014, 8:21 am

      Coba cek lagi perintahnya. Bukan /etc/sites-enables tp /etc/nginx/site-enabled/ dst…

  • untoro September 1, 2014, 5:23 am

    mas mau tanya untuk OS pakek Debian yg 64 bit apa yg 32bit? mas tlg bikin panduan untuk penggunanan domain lebih dari 1, terimakasih
    untoro

    • Nadiar AS September 7, 2014, 5:34 pm

      Jika memakai RAM kurang dari 2GB kamu bisa pakai 32 atau 64, tetapi saya lebih suka 32. Jika lebih dari 2GB pakai 64bit.

  • Slamet August 28, 2014, 8:56 am

    Mas tutorial migrasi dari appache ke Nginx dong step by stepnya :)

    kalo cara melihat aplikasi apa saja yang terinstal di VPS dengan OS Centos gmn ya mas? Trims

  • heny July 23, 2014, 4:51 pm

    mas mau tanya, sya sudah mengikuti tutorial dr awal sampai membuat file phpinfo.php ketika saya mau restart nginx muncul masalh bgini gmna ya mas ?

    starting nginx: nginx: [emerg] unexpected end of file, expecting “}” in /etc/nginx/sites-enabled/default:121
    nginx:configuration file /etc/nginx/nginx.conf test failed

  • ali iqbal July 6, 2014, 3:29 pm

    pas restart nginx muncul kayak gini: unexpected end of file, expecting “}” in /etc/nginx/sites-enabled/default:121

    kira kira kenapa ya?

    • Nadiar AS July 8, 2014, 1:14 pm

      Satu blok di nginx belum ada yang ke tutup sempurna. Coba periksa lagi.

  • adib May 23, 2014, 5:08 am

    mas, untuk instalasi phpinfo.php tetep masih 502 bad gateway, padaha suldah saya restart nginx dan php nya. saya juga sudah ulang step2 nya tapi juga masih blm bisa.

    untuk instalasi mariadb, error disini:
    W: Failed to fetch http://ppa.launchpad.net/nginx/stable/ubuntu/dists/wheezy/main/binary-i386/Packages 404 Not Found

    E: Some index files failed to download. They have been ignored, or old ones used instead.

    begitu mas, mohon bantuannya

    • Nadiar AS May 23, 2014, 5:07 pm

      Sources.list ada yang bermasalah. Coba perikasa, caranya edit /etc/apt/sources.list lalu hapus semua yang ada, ganti dengan:

      ###### Ubuntu Main Repos
      deb http://us.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
      deb-src http://us.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
      
      ###### Ubuntu Update Repos
      deb http://us.archive.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse 
      deb http://us.archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse 
      deb http://us.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse 
      deb-src http://us.archive.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse 
      deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse 
      deb-src http://us.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse 
      
      ###### Ubuntu Partner Repo
      deb http://archive.canonical.com/ubuntu precise partner
      deb-src http://archive.canonical.com/ubuntu precise partner
      
      ###### Ubuntu Extras Repo
      deb http://extras.ubuntu.com/ubuntu precise main
      deb-src http://extras.ubuntu.com/ubuntu precise main

      Untuk memastikan hapus juga /etc/apt/sources.list.d/ubuntu-extras.list. Selanjutnya jalankan perintah sudo apt-get update && sudo apt-get updgrade.

      Sekarang coba periksa lagi virtual servernya, apakah blok php-nya sudah aktif belum. Lalu restart nginx dan php-fpm nya.

  • nurul May 13, 2014, 7:27 pm

    Mariadb gak bisa terinstall . Keterangan errornya seperti ini :

    The following packages have unmet dependencies:
    mariadb-server-5.5 : Depends: mariadb-client-5.5 (>= 5.5.37+maria-1~wheezy) but it is not going to be installed
    E: Unable to correct problems, you have held broken packages.

    • Nadiar AS May 14, 2014, 2:19 am

      Sebelumnya kamu meng-intrupt proses install, jadi muncul masalah itu. Pakai command ini untuk membereskan installasi sebelumnya, dpkg --configure -a

    • KonG July 7, 2014, 5:26 am

      Waktu install mariadb juga saya mengalami error yg sama .. setelah googling n trial, sukses dengan cara berikut :

      cd /etc/apt/preferences.d
      touch mariadb.pref
      nano mariadb.pref

      Isikan dengan script di bawah ini:
      Package: *
      Pin: release o=MariaDB
      Pin-Priority: 1001

      Baru setelah itu dilanjutkan dengan install mariadb-server nya.
      Semoga membantu …

      PS : Buat mas Nadiar mau tanya settingan di server name ini …
      “Pada bagian server_name vuzmanga.com jangan lupa ganti dengan domain atau alamat IP kamu.” <– bagaimana kalo ada 2 domain atau lebih di dalam 1 droplet ? bagaimana settingan server name untuk domain berikutnya di phpmyadmin ?
      Makasih sebelumnya atas tutorial yang gak njelimet sehingga dapat membimbing instalasi untuk orang awam seperti saya.

      • Nadiar AS July 8, 2014, 1:18 pm

        Jika memiliki banyak domain, buat saja virtualhost yang baru. Nah, di domain yang baru itu, jangan ada alamat IP, cukup domain saja. Jika memang ditulis alamat IP, nantinya akan bentrok.

        Jika proses terlalu sulit, kamu bisa mencoba dengan proses yang lebih mudah: Tutorial 4.5: Cara Instant Install dan Optimize WordPress di VPS

  • panji April 20, 2014, 11:01 am

    mas, kalo misal mau add domain gimana ya mas ,,ini kayaknya masih settingan single domain ya mas?

    • Nadiar AS April 22, 2014, 11:37 pm

      Teorinya sama seperti ketika nambah domain pertama, tinggal bikin folder website dan virtual hostnya. Jangan lupa setting DNS record juga.

  • Sulken April 13, 2014, 10:46 am

    Makasih banyak mas tutornya, rencana juga mau pindahan ke vps,

  • Ade March 28, 2014, 11:32 am

    Mas saya sampai sini: /etc/nginx/sites-available/default
    kok saya tidak menemukan baris berikut:

            #location ~ \.php$ {
    #       fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    #
    #       # With php5-cgi alone:
    #       fastcgi_pass 127.0.0.1:9000;
    #       # With php5-fpm:
    #       fastcgi_pass unix:/var/run/php5-fpm.sock;
    #       fastcgi_index index.php;
    #       include fastcgi_params;
    #}
    
    • Nadiar AS March 28, 2014, 3:58 pm

      coba periksa lagi, atau seridaknya cari baris ini #location ~ \.php$ { kalau pake nanao, gunakan CTRL + W. Kalau memang yakin tidak ada, hampus saja semua isinya, lalu paste virtual host yang saya buat di tautan ini.

  • Ahmad Pram Prayogo Pangestu March 16, 2014, 3:55 am

    mas saya kok malah jadi 502 Bad Gateway, kira-kira masalahnya dimana?

    • Nadiar AS March 16, 2014, 9:39 am

      Saya kira kamu belum restart php atau nginx, coba restart dulu.
      restart nginx -> service nginx restart
      restart php-fpm -> service php5-fpm restart

      Jika ada pesan error ketika restart, coba tampilkan pesan errornya. Biasanya di virtual hostnya.

      • Ahmad Pram Prayogo Pangestu March 16, 2014, 11:56 am

        Alhamdulillah mas Nadiar, akhirnya udah fix. Terimakasih :)

        Di tunggu mas proses selanjutnya :D

      • adhani May 15, 2014, 1:29 pm

        saya juga mengalami 502 bad gateway mas ketika install PHP-FPM, saya sudah mencoba bebeerapa kali seperti saran di atas dan tidak menemukan pesan error.
        malahan saya sudah mengulangi dari awal, gimana ya caranya

  • Pram March 16, 2014, 12:59 am

    Lanjutkan mas tutorialnya udah nggak sabar pingin install wordpress di vps nih :D

  • Faradiba Achmadi March 13, 2014, 9:58 pm

    Terima kasih, saya mau coba install ulang web server sama database server ngikutin seri tutorial ini :)