≡ Menu

How To: Cara Migrasi Hosting dari Shared Hosting ke VPS

in VPS

Sudah lama sebenarnya saya ingin menulis tutorial ini, hanya saja saya berpikir, “siapa pula yang akan membacanya?”. Setelah menulis beberapa tutorial tentang install webserver di VPS Linux, akhirnya mulai ada beberapa orang yang meminta tutorial ini.

Pertama kali saya belajar tentang Linux dan VPS, saya tidak langsung berhasil. Ada banyak trial and error yang saya alami.

Saya tidak begitu saja berhenti, karena semua jawaban dari masalah saya ada di Google. Caranya paste masalah yang muncul di form pencarian. Saya menghargai usaha google yang terus memberikan hasil terbaik di setiap update algoritmanya.

Saya yakin, pembaca di sini juga mengalami beberapa masalah. Banyak email yang masuk ke saya yang menanyakan masalah A-Z, hanya saja saya tidak bisa membantu begitu saja, selain saya tidak mengetahui akar permasalahannya, saya juga memiliki waktu lain.

Sekarang, saya berusaha tidak membantu dengan cara “memberikan ikan langsung“, tetapi dengan cara “memberi kail pancingan untuk menangkap ikan“.

migrasi server

Sebenarnya, untuk memindahkan website dari shared ke VPS itu sngat mudah. Prinsipnya tetap sama dengan tutorial-tutorial memindahkan website yang pernah saya tulis sebelumnya.

Di sini, saya harapkan pembaca yang mengikuti tutorial ini setidaknya tahu struktur file linux, atau minimal tahu direktori dimana website disimpan.

Hanya saja, jika kamu belum pernah sama sekali menyentuh VPS dan memahami bagaimana semua stack bekerja, akan sangat sulit. Sebagai contoh, ada pembaca yang bertanya kepada saya tentang nginx yang selalu gagal di restart, tetapi ketika saya meminta isi virtualhost dia tidak mengetahui ada dimana file tersebut.

Backup Website di cPanel

Hal yang harus kamu backup di cPanel adalah database dan file-content/asset. Jika memakai WordPress, maka yang harus kamu backup adalah wp-content dan database MySQL.

Khusus untuk wp-content, ada dua cara yang bisa kamu pakai untuk memidahkan wp-content ke VPS. Pertama jika website yang akan kamu pindahkan sedang online (bisa diakses), kamu hanya perlu compress .zip atau .tar.gz nantinya file tersebut akan kita download melalui ssh VPS.

wget http://alamatdomain.com/wp-content.zip

Kedua jika website offline (tidak bisa diakses), ada dua alternatif yang bisa kamu pakai. Pertama kamu memakai SFTP menggunakan software fileZilla untuk mengupload wp-content yang sudah kamu compress. Kedua, mengupload ke Dropbox yang nantinya akan kita download melalui SSH VPS memakai wget.

Pada tutorial ini, meskipun caranya agak “lebay”, saya akan memakai cara mendownload langsung dari website karena paling praktis untuk saat ini.

Oke, website yang akan saya pindahkan dalam contoh ini adalah nadiar.web.id dari HawkHost ke DigitalOcean. Pertama saya compress ke .tar.gz wp-content dan file-file penting di root website tersebut.

Compress wp-content dan file penting

Compress wp-content dan file penting

Backup Database

Langkah selanjutnya adalah backup database. Oke, saya akan memakai backup wizard untuk membackup database website. Pastikan kamu mengetahui nama database yang akan kamu backup.

Cara Backup Database di cPanel

Pilih bagian Backup

Backup Database MySQL

Backup Database MySQL

Setelah kita mendapatkan file database.sql.gz selanjutnya adalah memidahkan database.sql.gz ke VPS. Ada tiga cara yang bisa kamu pakai, memakai SFTP, jika komputer linux atau mac, kamu bisa memakai fasilitas rsync, atau dengan cara mengupload ke dropbox lalu kita download melalui VPS. Kali ini saya akan mendemokan cara dengan rsync dan memakai dropbox.

Restore ke VPS

Untuk melakukan restore wordpress dari shared ke VPS, Langkahnya masih sama seperti memindahkan WordPress dari cPanel ke Plesk. Hal pertama yang harus kamu lakukan adalah menginstall fresh wordpress di server yang baru atau dalam hal ini di VPS.

Saya tidak akan menjelaskan bagaiamana caranya menginstall wordpress di VPS, kamu bisa membaca secara detail bagaimana install wordpress di VPS di tulisan-tulisan saya sebelumnya:

Pada tutorial ini, saya menginstall fresh wordpress (VPS) di /var/www/nadiar.web.id/htdocs/, maka saya akan menuju lokasi tersebut dan mendownload wp-content dari sana.

cd /var/www/nadiar.web.id/htdocs/
wget http://nadiar.web.id/wp-content.zip

root@sehat:~# cd /var/www/nadiar.web.id/htdocs
root@sehat:/var/www/nadiar.web.id/htdocs# wget http://nadiar.web.id/wp-content.zip
--2014-11-11 10:48:23--  http://nadiar.web.id/wp-content.zip
Resolving nadiar.web.id (nadiar.web.id)... 198.252.101.231
Connecting to nadiar.web.id (nadiar.web.id)|198.252.101.231|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26140008 (25M) [application/zip]
Saving to: `wp-content.zip'

100%[==================================================>] 26.140.008  94,7M/s   in 0,3s    

2014-11-11 10:48:24 (94,7 MB/s) - `wp-content.zip' saved [26140008/26140008]

Solusi 1: Upload Database ke VPS dengan Rsync

Rsync, sebenarnya bisa kamu gunakan juga untuk mengupload wp-content. Ingat, Rsync hanya bisa kamu gunakan di mesin linux atau mac. Caranya, masuk ke terminal lalu ketikan:

rsync -ahvz [path]/database.sql.gz root@ipVPS:~/

Baca: Introduction to Rsync

root bisa kamu ganti dengan user lain yang ada di VPS kamu. Berikut ini adalah contoh teriminal yang saya pakai:

nadiar@vostro5470:~/Downloads$ sudo rsync -ahvz ./database.sql.gz root@162.168.0.10:~/
The authenticity of host '162.168.0.10 (162.168.0.10)' can't be established.
ECDSA key fingerprint is xx:x7:a4:dg:9e:7c:b7:a4:9g:0r:16:1e:7d:54:zb:cd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '162.168.0.10' (ECDSA) to the list of known hosts.
root@162.168.0.10's password: 
sending incremental file list
database.sql.gz

sent 198.81K bytes  received 34 bytes  23.39K bytes/sec
total size is 198.87K  speedup is 1.00
nadiar@vostro5470:~/Downloads$ 

Solusi 2: Upload Database ke VPS dengan Dropbox

Cara selanjutnya adalah mengupload database.sql.gz ke Dropbox, lalu kita download melalui VPS, caranya sama seperti kita mendownload wp-content dari VPS. Tetapi karena ini database, maka harus ada sedikit pengamanan.

Pertama kamu harus ekstract database.tar.gz yang ada pada komputer kamu, lalu compress .zip dengan memakai password.

Sebenarnya, kamu bisa saja mengupload langsung tanpa harus ekstract terlebih dahulu dan memberikan password. Tetapi cara tersebut saya rekomendasikan untuk database berukuran kecil dan kamu harus langsung menghapus database tersebut di dropbox.

Di Dropbox, upload database.zip ke public folder di Dropbox dan copy link download database tersebut. Jika kamu tidak tahu cara upload dan mendapatkan link, baca: Cara menggunakan dropbox.

upload database mysql ke Dropbox

Oke saya sudah mendapatkan link download saya di dropbox. Selanjutnya saya tinggal download file tersebut di VPS saya. Caranya sama seperti kita download wp-content dengan wget sebelumnya, setelah berhasil lalu kamu tinggal ekstrak dengan perintah unzip database.zip.

Restore wp-content dan Database di VPS

Untuk merestore wp-content, caranya sangat mudah, kamu cukup perlu unzip wp-content.zip yang sudah kita download di VPS sebelumya. Jika unzip tidak bisa ditemukan, install terlebih dahulu zip dan unzip.

Untuk merestore database, ada cara mudah yang bisa kamu lakukan, yaitu memakai phpmyadmin. Caranya sama percis seperti merestore database ke prarell plesk yang sudah saya tulis sebelumnya. Hanya saja, syaratnya kamu harus sudah menginginstall phpmyadmin.

Melalui phpmyadmin, kamu menuju database sql dari wordpress fresh install. Selanjutnya drop semua tabel yang ada di sana, lalu ganti (upload) dengan database yang kita backup semelumnya.

Sekarang, saya akan menunjukan bagaimana caranya merestore database tanpa phpmyadmin, yaitu murni memakai shell. Hal pertama yang kamu lakukan adalah menghapus (drop) semua tabel yang ada pada database wordpress fresh install.

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]

Ganti tanda dalam kurung siku dengan username dan password database kamu, tetapi jangan memakai tanda kurung siku lagi.

Sekarang kita masuk ke mysql lalu merestore database yang kita download sebelumnya. Saya asumsikan bahwa hostnya adalah localhost.

mysql -u[USERNAME] -p[PASSWORD]
use [DATABASE];
show tables; http:// harus kosong, tidak muncul nama-nama tabel wordpress
\. [PATH]/database.sql;

Sekarang kamu bisa melihat isi database dengan perintah show tables; Kamu akan melihat tabel wordpress lama.

Sampai di sini semua sudah berhasil kamu pindahkan, selanjutnya adalah memindahkan DNS. Untuk memindahkan DNS saya sudah pernah menulis itu sebelumnya.

**

Khusus untuk tutorial ini, saya tidak menulis begitu detail. Saya pastikan tutorial ini tidak untuk semua orang, tetapi untuk mereka yang setidaknya sudah terbiasa dengan perintah-perintah dasar linux atau MySQL. Akan tetapi, saya pastikan jika kamu ingin tetap mencoba bisa membuka link-link yang saya berikan, saya sudah mencari website yang memberikan penjelasan sangat mudah dipahami.

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.

  • ari tunsa May 1, 2015, 10:25 am

    soalnya kalo ada dua jadi website ku gak bisa diakses, cuma keluar index of/ gitu

  • ari tunsa May 1, 2015, 10:24 am

    saya masih gagal restore mas :( awalnya kan install fresh wordpress (saya udah bisa login ke wordpress kosongan), terus download backupnya dari hosting lama via dropbox, semua sudah berjalan lancar sampai proses unzip. tapi jadinya ada dua folder public wordpress dalam satu folder domain (wp-admin, wp-content dan lain2 ada dua). lalu apakah saya harus delete yang lama mas?

    • Nadiar AS May 4, 2015, 10:55 am

      Folder public yang live, di ganti dengan yang backup.

  • Andyas April 10, 2015, 12:04 am

    Wah kok gak dibalas gan, jadi klo waktu update plugin pasti begini

    Unpacking the update…

    Installing the latest version…

    Removing the old version of the plugin…

    Could not remove the old plugin.

    Plugin update failed.

    Return to Plugins page

    Tolong pencerahannya donk, makasih

    • Nadiar AS April 10, 2015, 3:27 pm

      Ganti permission httdocs-nya, pake perinya chown -R www-data:www-data [path ke httdocs]

  • kevinapril April 7, 2015, 5:52 pm

    Tanya lagi mas, semoga tidak bosan menjawabnya :-)
    Dapat problem, anggap saja kita install wordpress di vps dan menambahkan https. Sudah menampilkan beberapa postingan dan ke index di google. Yang ingin saya tanyakan bagaimana mengganti link https yang sudah terindex google menjadi http?

    • Nadiar AS April 7, 2015, 5:57 pm

      Sebenernya bisa dua-duanya aktif, jadi bisa diakses http atau https. Nantinya kita pilih saja yang mana yang mau di index google. Kalau Pabelog, pakai teknik redirect 301, meredirect semua trafik yang mengakses http ke https.

  • Andyas April 4, 2015, 5:26 pm

    makasih banget gan, saya sudah ikutin langkah2 agan dah berhasil, tapi masih ada yang mengganjal nih, kok plugin saya yang bawaan dari shared hosting semua tidak bisa di update ya? dan jika saya mau hapus plugin itu ternyata juga tidak bisa, tapi kalau plugin nya baru saya install ketika di VPS, itu bisa diupdate dan dihapus, cuman problemnya plugin andalan saya ke install waktu di shared hosting, pencerahannya donk gan :)

    ooya ditunggu juga ya tutorial mengamankan VPS nya dan juga tutorial back up yg dari dropbox itu, makasih mas Pabelog

  • mita March 8, 2015, 10:14 pm

    mau tanya ni mas…
    saya sekarang pake hosting fatcow…
    saya mau pinda situs saya ke vps digital ocean gmn ya.. caranya?
    mohon dibalas
    makasih

  • kevinapril February 24, 2015, 12:02 pm

    mau sharing sedikit mas
    saya install wordpress di vps, dengan web server lighttpd, mysql dan php5 dan semuanya berjalan normal. niat mau pindah ke vps baru, saya sudah backup data mysql & folder wp-content.
    beralih ke vps baru, saya install fresh wordpress. kemudian replace folder wp-content baru dg wp-content lama dan restore backup mysql. setelah semua selesai dan saya akses halaman wordpress baru saya, disitu tidak muncul data-data wordpress lama saya, spt postingan di vps lama.

    terima kasih.

    • Nadiar AS February 24, 2015, 4:55 pm

      Coba perhatikan prefix database-nya apa, tebakan saya prefik database-nya bukan wp_

  • Didik wahyudi January 17, 2015, 6:11 am

    Beberapa pertanyaan mas:

    1. Apakah ada pengaruh yang siginifikan antara menggunakan vps alih-alih shared hosting dalam seo?
    2. Berkaitan dengan trafik blog, kapan kita sebaiknya pindah ke vps? misalnya setelah uv sekian ribu tertentu.

    Blog anda bagus. Keep posting bro.

    • Nadiar AS January 18, 2015, 8:14 am

      Saat shared hosting tidak lagi mampu menampung trafik yang datang, hal tersebut tentnu sangat berpengaruh. Tidak ada spesifikasi khusus, masalahnya bukan pada seberapa besar trafik yang bisa ditampung, tapi seberapa kuat hosting menghandle request. Request ini dipengaruhi banyak hal, bukan trafik saja.

  • Jeffry C December 8, 2014, 2:36 pm

    Susah gan, mendingan membeli lisensi cPanel saja biar konfigurasi apapun jadi lebih mudah :D
    Btw thanks buat artikelnya :)

  • Rizki anugrah November 14, 2014, 4:53 pm

    Saya ingin menanyakan mas
    1. Untuk client saya jika ingin mengakses file manager, membuat ftp, membuat email webservice, dan memanagement webnya menggunakan apa? selama ini kan menggunakan cpanel biasanya. dan jika menggunakan ftp otomatis nanti dia bisa membuka folder root dong ?

    • Nadiar AS November 15, 2014, 3:12 pm

      Kenapa tidak membeli lisensi cPanel saja sekalian? Atau bisa memakai panel lain yang gratisan seperti webuzo atau kloxo.