≡ Menu
Pabelog

Membangun VPS WordPress 4: Setting Nginx dan Install WordPress

in Hosting, VPS, Wordpress

Hallo! sekarang saya akan melanjutkan seri tulisan membangun VPS WordPress di DigitalOcean. Pada bagian ini, saya akan menjelaskan tentang install WordPress pada VPS.

Sebenarnya, jika kamu mengerti konsep cara intall WordPress di localhost, hal ini tidak jauh berbeda. Kita sudah memiliki phpMyAdmin untuk setup database, dan kita sudah memiliki IP sebagai localhost-nya.

So, kita review apa yang sudah kita lakukan sebelumnya:

Saya tekankan kembali, untuk membuat blog WordPress yang super cepat, kita memakai teknologi nginx dan php-fpm, sedangkan untuk database kita serahkan kepada MariaDB.

Hari ini saya akan menunjukan bagaimana cara memanfaatkan teknologi tersebut untuk membuat blog WordPress. Mari kita mulai!

Setup Direktori untuk WordPress

Sebelum setup WordPress kita harus menentukan terlebih dahulu direktori yang akan dipakai untuk menyimpan WordPress, menurut standar hirarki dari Linux, tempat yang bagus untuk menyimpan website adalah pada direktori /srv/, tetapi beberapa orang sering menyimpan website pada direktori /var/ atau /home/.

Pada tutorial ini, saya akan merujuk pada standar hirarki dari Linux, yaitu di /srv/. Pertama kita akan membuat folder untuk blog yang akan kita buat dengan perintah mkdir, tepatnya di /srv/www/vuzmanga.com/htdocs/.

mkdir -p /srv/www/vuzmanga.com/htdocs
mkdir -p /srv/www/vuzmanga.com/logs

Argumen -p pada /srv/www/vuzmanga.com/htdocs artinya kita akan membuat direktori htdocs dalam direktori vuzmanga.com, dalam direktori www, dalam direktori srv. Artinya kita membuat direktori secara rekrusif.

Direktori logs, akan kita pakai untuk menyimpan logs dari domain vuzmanga.com. Untuk domain vuzmanga.com, silahkan sesuaikan dengan domain yang kamu punya — meskipun sebenarnya kamu bisa memakai nama apa saja.

Setup Nginx

Tahap selanjutnya adalah membuat virtual host, caranya sama seperti saat kita membuat virtual host untuk phpMyAdmin. Pertama kita masuk ke direktori /etc/nginx/sites-available/ menggunakan perintah cd.

cd /etc/nginx/sites-available/
touch vuzmanga.com

Beberapa orang menandai virtual host dengan menambahkan .vhost, tetapi saya akan memanfaatkan kelebihan Linux yang mengenali file bukan berdasarkan sufix seperti pada windows.

Kita telah membuat virtual host vuzmanga.com dengan perintah touch, tahap selanjutnya adalah memastikan file tersebut ada lalu mengeditnya dengan perintah nano.

ls -a
nano vuzmanga.com

Isi virtual host vuzmanga.com dengan script di bawah:

server {
       listen 80;
       #listen [::]:80 ipv6only=on default_server;
       server_name vuzmanga.com www.vuzmanga.com 128.199.254.251;
       root /srv/www/vuzmanga.com/htdocs;
	   access_log /srv/www/vuzmanga.com/logs/access.log;
	   error_log /srv/www/vuzmanga.com/logs/error.log;
       if ($http_host != "www.vuzmanga.com") {
                 rewrite ^ http://www.vuzmanga.com$request_uri permanent;
       }
       index index.php index.html;
       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }
       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

	# Use gzip compression
	# gzip_static on; # Uncomment if you compiled Nginx using --with-http_gzip_static_module
	gzip on;
	gzip_disable "msie6";
	gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 5;
	gzip_buffers 16 8k;
	gzip_http_version 1.0;
	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/png image/gif image/jpeg;

        location ~ ^/wp-content/cache/minify/[^/]+/(.*)$ {
                try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1;
        }
	
	#location ~ ^/wp-content/plugins/wp-minify/min/[^/]+/(.*)$ {
	#	try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1;
	#	wp-minify/cache
	#}

	# Don't cache uris containing the following segments
	if ($request_uri ~* "(\/wp-admin\/|\/xmlrpc.php|\/wp-(app|cron|login|register|mail)\.php|wp-.*\.php|index\.php|wp\-comments\-popup\.php|wp\-links\-opml\.php|wp\-locations\.php)") {
		set $cache_uri "no cache";
	}

	# Don't use the cache for logged in users or recent commenters
	if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp\-postpass|wordpress_logged_in") {
		set $cache_uri 'no cache';
	}

       

	# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }
       location / {
                try_files $uri $uri/ /index.php?$args;
       }

       # Add trailing slash to */wp-admin requests.
       rewrite /wp-admin$ $scheme:http://$host$uri/ permanent;

	# Cache static files for as long as possible - removed xml as an extension to avoid problems with Yoast WordPress SEO plugin which uses WP rewrite API.
	location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
		try_files $uri =404;
		expires max;
		access_log off;
	}

	# Pass PHP scripts on to PHP-FPM
	location ~* \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		try_files $uri /index.php;
		fastcgi_index index.php;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		#fastcgi_pass 127.0.0.1:9000;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param SCRIPT_NAME $fastcgi_script_name;
	  }
}

Jangan lupa sesuaikan domain vuzmanga.com dan alamat IP 128.199.254.251 dengan domain dan alamat IP yang kamu punya.

Virtual host di atas akan me-redirect setiap akses vuzmanga.com ke www.vuzmanga.com, jika kamu ingin membuat domain kamu hanya bisa diakses tanpa www, hialngkan www pada bagian ini:

       if ($http_host != "www.vuzmanga.com") {
                 rewrite ^ http://www.vuzmanga.com$request_uri permanent;
       }

Sehingga hasilnya seperti ini:

       if ($http_host != "vuzmanga.com") {
                 rewrite ^ http://vuzmanga.com$request_uri permanent;
       }

Jangan lupa untuk menyimpan file tersebut dengan menggunakan Ctrl + x lalu ikuti petunjuknya.

Download dan Install WordPress

Ikuti perintah berikut untuk men-download dan meng-install WordPress di /srv/www/vuzmanga.com/htdocs. Ingat, sesuaikan dengan domain yang kamu pakai.

cd /srv/www/vuzmanga.com/htdocs
wget http://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
cp -rvf wordpress/* .
rm -R wordpress
rm latest.tar.gz

Jika kamu mengikuti seri tutorial ini dari 0, seharusnya kamu mulai familiar dengan perintah-perintah di atas. Pada baris 1, cd adalah perintah untuk mengganti direktori, wget adalah perintah untuk mendownload file, cp -rvf wordpress/* adalah perintah untuk meng-copy semua file yang ada pada direktori wordpress secara rekrusif, sedangkan rm adalah merintah untuk menghapus file.

Jika kamu membuka domain atau alamat IP kamu, yang kamu dapatkan sekarang masih “welcome to nginx!”, itu wajar karena kita belum membuat simbolik link. Gunakan perintah di bawah untuk membuat simbolik link:

ln -s /etc/nginx/sites-available/vuzmanga.com /etc/nginx/sites-enabled/vuzmanga.com

Jangan lupa, sesuaikan vuzmanga.com dengan nama virtual host yang kamu buat sebelumnya. Lalu restart nginx dengan perintah service nginx restart.

Setelah restart, jika kamu mengunjungi lagi alamat IP atau domain, kamu akan mendapati halaman untuk install WordPress.

install WordPress

install WordPress

Kalaupun kamu mengikuti perintah untuk menginstall WordPress tersebut, kamu akan gagal karena beberapa alasan. Pertama kamu belum mengatur hak akses, kedua kamu belum membuat database.

Tahap selanjutnya adalah deal with that problems!

Database dan Hak Akses

Untuk membuat database dan user database di phpMyAdmin, kamu bisa mengikuti cara berikut. Tips dari saya, gunakan nama database dan database user dua kata dengan pemisah “_”, selanjutnya pakai password yang cukup kuat. Catat nama database, database user, dan password tersebut pada notepad.

Selanjutnya masukan perintah berikut pada terminal:

chown -R www-data:www-data /srv/www/vuzmanga.com/htdocs

Jangan lupa sesuaikan vuzmanga.com dengan nama direktori yang kamu buat sebelumnya. Selanjutnya akses alamat IP atau domain, lalu ikuti perintah-perintah untuk install WordPress dengan meng klik tombol “Create a configuration file“.

Setup configuration file

Setup configuration file

Nah pada bagian setup, gunakan nama database, user database, dan password yang kamu simpan pada notepad sebelumnya. Pada bagian prefix, ganti wp_ dengan apa saja, selanjutnya ikuti dengan tanda “_”, pada contoh saya, saya memakai prefix aws_.

Selanjutnya tekan tombol Run and Install. Lalu ikuti perintah selanjutnya.

cara install wordpress di VPS

Selesai! kita telah berhasil membuat blog WordPress.

**

Pada tahap ini kita telah selesai install WordPress pada VPS, seri membangun VPS WordPress selanjutnya adalah melakukan tweak pada PHP agar bisa bekerja lebih maksimal lagi.

Jika kamu ingin memindahkan blog wordpress yang sudah jadi ke VPS, kamu bisa mengupload folder wp-content blog yang sudah jadi tersebut ke VPS menggunakan SFTP memakai FileZila, dengan memakai akun root kamu. Selanjutnya untuk restore database kamu bisa memakai phpMyAdmin.

Untuk tutorial bagaimana cara transfer bloglama ke VPS, saya akan menulisnya di bagian akhir, atau mungkin bagian setelah tweak PHP.

Seri tulisan VPS WordPress ini masih panjang dan seru, kita belum berbicara teknik pengamaman, cache, dll. So, jangan sampai ketinggalan, subscribe dari sekarang juga!

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.

  • Sakidi February 22, 2015, 4:18 pm

    mas, masalah saya phpmyadmin yang menggunakan port 8888 bisa diakses, tapi giliran akses ke port 80 tidak bisa diakses. sebelum dibuat config domain.saya port 80 bisa diakses dengan tampilan welcome nginx. mohon petunjuknya. thanks

    • Nadiar AS February 22, 2015, 5:40 pm

      Coba cek firewall atau restart nginx-nya. Periksa juga blog server di virtual-hostnya.

  • arrlancore February 2, 2015, 11:11 pm

    Mas nadiar, kenapa di web saya 403 FORBIDDEN, padahal semua tahap sudah diikuti?
    ada yang salah dengan config saya ini, ini bagian atas config saya:

    server {
           listen 80;
           #listen [::]:80 ipv6only=on default_server;
           server_name situsku.com www.levisia.com 128.199.xxx.xx;
           root /srv/www/situsku.com/htdocs;
        access_log /srv/www/situsku.com/logs/access.log;
        error_log /srv/www/situsku.com/logs/error.log;
           if ($http_host != "www.situsku.com") {
                     rewrite ^ http://www.situsku.com$request_uri permanent;
           }
           index index.php index.html;
           location = /favicon.ico {
                    log_not_found off;
                    access_log off;
           }
           location = /robots.txt {
                    allow all;
                    log_not_found off;
                    access_log off;
           }
     
    

    Thanks

    • Nadiar AS February 18, 2015, 2:07 pm

      Blok php-nya udah diaktifkan?? Saya kira masalahnya di sana.

  • aziz October 14, 2014, 9:25 am

    Alhamdulillah setelah mengikuti semua tutorial mas Nadiar web saya udah up

    tapi pengen nanya mas
    ane mau bikin subdomain n jawabannya kan pasti bikin vhost
    nah setelah vhost jadi kode yang dimasukin ke vhost tsb apa?

    utk kasus di tutor ini kan saya liat buat wp itu mas,klo sistem biasa gmn mas kodenya :D

    Makasih banyak lho mas

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

      Untuk subdomain, di blok server, tepatnya server_name, ganti dengan subdomain. Jangan lupa root-nya diganti juga ke lokasi direktori website subdomain tsb.

      Jika websitenya masih memakai PHP/HTML, kode yang saya kasih (wordpress) juga berlaku di PHP pada umumnya ;)

  • Mas Adi October 12, 2014, 10:02 pm

    Sorry, but I can’t write the wp-config.php file.

    Itu kenapa ya om?

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

      coba di direktori htdocs masukin kode ini: CHOWN www-data:www-data wp-config.php

  • iyoshaha September 6, 2014, 12:16 pm

    Mas saya mau tanya kenapa saya stuck setelah proses
    ln -s /etc/nginx/sites-available/vuzmanga.com /etc/nginx/sites-enabled/vuzmanga.com

    sudah berhasil buat symbolik linknya tapi pas mau service nginx restart muncul pesan error seperti ini
    Restarting nginx: nginx: [emerg] unknown directive “if($http_host” in /etc/nginx/sites-enabled/namapnyasaya.com:8
    nginx: configuration file /etc/nginx/nginx.conf test failed

    mohon bantuan nya

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

      coba paste isi virtualhost-nya ke pastebin, nanti saya lihat.

  • bobzzee July 19, 2014, 4:02 am

    lebih baik lagi kalau ngikutin anjuran di http://wiki.nginx.org/Pitfalls untuk konfigurasi nginx nya. beberapa yang perlu diubah misalnya: redirect yang masih pake if, karena http://wiki.nginx.org/IfIsEvil

    btw, makasih atas tulisannya lho..
    makin banyak belajar dari tulisan series mas Nadiar

  • nanx July 13, 2014, 8:05 pm

    manstap ni seri tutornya gan, yang bikin tertarik engine x ny ini :D kykna shared h0sting jg bs lbg jos kalo pake nginx

  • Ahmad Pram Prayogo Pangestu June 8, 2014, 2:46 pm

    Mas Nadiar, Request dong, tentang Cara Install FTP di VPS,
    kalau di internet soalnya dari directory-nya saja sudah beda dengan tutorial ini jadi sekalian ngikut dari pertama sampai terakhir, Thanks :D

  • riko May 6, 2014, 12:14 pm

    Saya ingin pindahin blog wp yang sudah berjalan ke VPS Digital Ocean tanpa downtime. Gimana caranya mas Nadiar.

    N apakah setting script diatas sudah bisa terima w3 total cache?

    thanks

    • Nadiar AS May 6, 2014, 2:00 pm

      Iya, sudah dioptimalkan untuk W3TC juga.

  • Ahmad Pram Prayogo Pangestu April 4, 2014, 11:11 pm

    wah ini ganti domain alasanya apa mas?

    • Nadiar AS April 7, 2014, 1:53 pm

      Domain yang lama mau dipakai yang lain, punya ide rare soalnya.

  • Ahmad Pram Prayogo Pangestu March 31, 2014, 7:25 am

    wah saya kok perintahnya nggak di terima sama debian ya, peringatanya gini mas

    chown: missing operand after `/srv/www/softios.net/htdocs
    Try `chown –help’ for more information.

    gimana nih mas ngatasinya?

    • Nadiar AS March 31, 2014, 9:45 pm

      Iya, www-data nya gak ada. harusnya, chown -R www-data:www-data /srv/www/softios.net/htdocs

      • Ahmad Pram Prayogo Pangestu April 3, 2014, 6:14 pm

        makasih mas bantuanya.

        oiya mas, perintah untuk menghapus theme gimana ya yang terletak di /wp-content/theme

        soalnya saya salah edit kemari jadi tampilanya blank :)

        • Nadiar AS April 3, 2014, 7:59 pm

          perintah hapus adalah rm, contoh untuk menghapus file bernama sembarang.zip kita menghapusnya dengan command

          rm sembarang.zip

          , kalau untuk directory, kita harus menambahkan parameter recrusive, yaitu -r. Contoh untuk menghapus direktori/folder wp-content dan semua file yang terdapat di folder tersebut, kita memakai perintah

          rm -r wp-content

          Tadi saya habis googling tentang perintah dasar linux, saya mendapatkan dua referensi bagus bahasa Indonesia.

  • Ahmad Pram Prayogo Pangestu March 30, 2014, 8:40 pm

    Mas saat saya mencoba menambah sitemap_index.xml dari wordpree seo, kenapa ada peringatan “As you’re on NGINX, you’ll need the following rewrites:

    rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
    rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;"

    cara mengatasinya gimana mas, binggung saya, terimakasih :)

    • Nadiar AS March 30, 2014, 10:24 pm

      Saya belum sempat update kelanjutannya ya, maaf. Sekarang cara paling gampang bikin saja permission buat htdocs nya dialihin ke www-data. Caranya >> chown -R /srv/www/domain.com/htdocs

  • Pram March 22, 2014, 9:32 am

    Di tunggu mas tutor selanjutnya tentang pengamaman, cache,dll.

    ijin praktek install wordpress :D

    • Nadiar AS March 22, 2014, 10:16 am

      Siap, mudah-mudahan bisa selesai dalam waktu dekat ini.