Pertanyaan:
VPS saya yang sekarang sering down, harga nya pun mahal banget. Saya mau pindah VPS aja ke provider yang lebih bagus. Tapi saya ngga tau VPS yang bagus itu apa, lalu ngga ngerti cara pindah antar VPS yang paling mudah seperti apa. Bisa dibantu?
Jawaban:
Tutorial yang akan saya sampaikan di bawah ini berlaku untuk VPS dengan panel apa pun atau tanpa panel. Mau yang tanpa panel, mau dengan panel Webuzo, VestaCP, cPanel, dll.. akan berhasil dipindah. Selama kamu teliti.
Untuk VPS yang bagus itu tergantung penilaian masing-masing. Namun VPS favorit saya adalah Vultr. Alasannya pernah saya bahas di postingan sebelumnya.
Lanjut ya…
Saya akan ibaratkan VPS lama dengan sebutan VPS A dan VPS baru dengan sebutan VPS B.
Persiapan
Sebelumnya, kita harus catat dulu rincian VPS yang kita punya, semuanya kita catat di Notepad agar lebih mudah.
Saya anggap web kamu yang akan dipindah berbasis wordpress. Rincian database di wordpress ada pada file wp-config.php
.
Silahkan buka file itu lalu perhatikan rincian baris mengenai database, yang seperti ini:
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'db_domain'); /** MySQL database username */ define('DB_USER', 'u_domain); /** MySQL database password */ define('DB_PASSWORD', 'domain1234'); /** MySQL hostname */ define('DB_HOST', 'localhost');
Selain itu saya sarankan kamu untuk setting VPS B sama persis dengan VPS A. Misal di VPS A, kamu make Webuzo, di VPS B juga sama, dll.
Baik, mari kita lanjut.
Ini catatan saya di Notepad, catatan di bawah ini fiktif, namun bisa mewakili.
VPS A (Lama)
- IP Address:
11.22.33.44
- Username VPS A:
root
- Password VPS A:
abcdefg
- Lokasi public_html:
/var/www/html/example.com
- MySQL username:
u_domain
- MySQL database:
db_domain
- Password MySQL:
domain1234
VPS B (Baru)
- IP Address:
55.66.77.88
- Username VPS B:
root
- Password VPS B:
abcdefg
- Lokasi public_html:
/var/www/html/example.com
- MySQL username:
u_domain
- MySQL database:
db_domain
- Password MySQL:
domain1234
Lihat catatan di atas! Yang berbeda hanya IP address saja. Mengapa? Karena saya atur VPS B agar sama persis dengan VPS A, mulai dari password SSH, lokasi public_html
, dan juga rincian mysql (username, password, database).
Tujuannya agar tidak membuat saya bingung.
Saran saya, kamu harus melakukan hal yang sama. Setup VPS B sama persis dengan VPS A. Kalo pake Webuzo di VPS A, kamu pun harus menginstall dan menyetingnya di VPS B, mulai dari menambahkan domain, database, samakan setiap detailnya dengan benar.
Setelah kamu catat semua rincian di atas, maka kita membutuhkan suatu software untuk perpindahan ini, namanya adalah rsync
.
Rsync Si Software Ajaib
rsync
adalah software yang mampu men-sinkron-kan 2 buah direktori. Bisa di satu VPS, bisa antar VPS.
Kalau kamu belum punya rsync
di VPS kamu, tinggal install aja. Install di kedua VPS (Lama & Baru).
Perintahnya kalau di Debian / Ubuntu adalah
apt-get install rsync
Atau kalo kamu pake distro CentOS, maka perintahnya adalah
yum install rsync
Setelah terinstall, kita akan mem-backup MySQL database & file.
Backup MySQL Database & File Web
1. Backup Database
Setelah dipastikan kita sudah mendapat rincian database, kita TIDAK akan menggunakan PhpMyAdmin untuk mem-backup database karena penggunaan PhpMyAdmin cukup lama: harus login dulu, masukan username, password, pilih database, export, dll.
Lama bukan?
Jadi kita akan mem-backup nya dari melalui SSH client dengan 1 perintah saja.
Coba kamu lihat kembali rinician situs kamu. Punya saya adalah
1. Lokasi public_html: /var/www/html/example.com
2. MySQL username: u_domain
3. MySQL database: db_domain
4. Password MySQL: domain1234
PENTING!
Lihat nomor 1! Lokasi public_html
saya ada di /var/www/html/example.com
Itu karena saya ngga pake panel apa pun
Kalo pake Webuzo atau mungkin VestaCP, maka:
- Kalo kamu menggunakan Webuzo, maka lokasi nya ada di
/home/hardinal/public_html/example.com
denganhardinal
adalah username Webuzo. - Kalo kamu pake VestaCP, maka lokasinya ada di
/home/hardinal/web/businesslegions.com/public_html
denganhardinal
adalah username VestaCP.
Langkah pertama, login dulu ke VPS A.
Lalu masuk dulu ke direktori public_html
situs kamu berada. Masukan perintah berikut dengan diikuti tombol Enter di keyboard laptop / komputer kamu.
cd /var/www/html/example.com
Selanjutnya backup database situs kamu, perintah backup adalah (sesuaikan dengan punya kamu!):
mysqldump -u u_domain -p db_domain > db-situs-example.sql
Kamu akan diminta password mysql, punya saya password-nya domain1234
. Masukan password + Enter, selesai.
Perintah backup di atas, akan menghasilkan file bernama db-situs-example.sql
. File ini disimpan di direktori /var/www/html/example.com
.
Setelah berhasil nge-backup, maka kita akan transfer isi public_html
web kita menggunakan rsync
.
Ada 2 pilihan pake rsync ini, tergantung kita mau yang mana. Pilihannya adalah:
- Login ke VPS A, kirim isi public_html dari VPS A ke VPS B
- Login ke VPS B, tarik isi public_html dari VPS A ke VPS B
Hasilnya sama persis tidak ada perbedaan, yang berbeda hanya pada perintahnya aja.
2. Cara Menggunakan rsync
Ini adalah langkah yang perlu kamu perhatikan dan dalami baik-baik, jika salah maka file akan gagal dipindahkan. Kita coba dulu dengan pilihan 1 (Login VPS A, kirim file dari A ke B).
Berhubung kita sedang login di VPS A, maka kita bisa langsung mengirim file dan folder situs kita.
Penulisan perintah rsync adalah sbb:
rsync -av /lokasi/direktori/situs/yang/kamu/simpan/ username@IP_VPS_B:/lokasi/direktori/situs/akan/disimpan/
Sekarang tinggal kamu sesuaikan aja dengan rincian yang kamu punya, kalau saya menjadi seperti ini.
rsync -av /var/www/html/example.com/ root@55.66.77.88:/var/www/html/example.com/
Saya bagi-bagi perintah di atas menjadi 4 bagian A, B, C, D.
A: rsync -av
B: /var/www/html/example.com/
C: root@55.66.77.88:
D: /var/www/html/example.com/
Kalo diterjemahkan ke bahasa manusia, arti perintah rsync
di atas seperti ini:
A: Hai rsync, tolong kamu pindahin semua isi file dan folder yang ada di dalam folder
B: /var/www/html/example.com/
.
C: Tolong kamu pindahin isi tersebut ke VPS B. VPS B itu lokasinya ada di jalan 55.66.77.88
. Kalo udah nyampe VPS B, kamu ngga bisa masuk gitu aja, perlu username sama password, nih usernamenya: root
dan ini passwordnya: abcdefg
.
D: Jangan lupa ya, isi folder itu harus kamu simpen di tempat yang sama, yaitu di /var/www/html/example.com/
. Kalo ngga ada tempat seperti itu, bikin dulu aja. Ga mau tau pokok nya harus sama persis!
Kalo disambungin, menjadi:
Hai rsync, tolong kamu pindahin semua isi file dan folder yang ada di dalam folder /var/www/html/example.com/
. Tolong kamu pindahin isi tersebut ke VPS B. VPS B itu lokasinya ada di jalan 55.66.77.88
. Kalo udah nyampe VPS B, kamu ngga bisa masuk gitu aja, perlu username sama password, nih usernamenya: root
dan ini passwordnya: abcdefg
. Jangan lupa ya, isi folder itu harus kamu simpen di tempat yang sama, yaitu di /var/www/html/example.com/
. Kalo ngga ada tempat seperti itu, bikin dulu aja. Ga mau tau pokok nya harus sama persis!
Jika ini pertama kali kamu menjalankan perintah di atas, akan ada pertanyaan yes/no
. Jawab dengan yes
, tekan Enter dan kamu akan dimintai password VPS B.
Perintah di atas akan mengirim semua isi yang ada di folder public_html
situs kamu ke VPS B (VPS baru).
Tunggu sampe proses selesai. Kalau ukuran web nya kecil, ngga akan sampe 10 menit, kecuali web kamu berisi ribuan / puluhan ribu gambar, bisa sampe beberapa jam.
WASPADA!
Lihat perintah rsync
di atas, di sana tertulis bahwa lokasi direktori public_html
adalah di /var/www/html/example.com/
padahal catatan di Notepad saya ada di /var/www/html/example.com
.
Lihat ada tanda garis miring “/
” di belakang example.com
menjadi begini example.com/
.
Hal itu diperlukan, karena kita bukan memindahkan folder example.com
dan isinya, tapi kita hanya memindahkan isi dari folder example.com
tanpa perlu memindahkan folder example.com
itu sendiri.
Jadi nanti hasil kiriman kita, murni isi situsnya aja, misalnya kalo web wordpress kan pasti ada file index.php
. Maka si index.php
ini akan berada di lokasi /var/www/html/example.com/index.php
.
Kalo kamu salah masukin perintah (tanpa nyertain garis miring) maka yang terjadi, lokasi index.php
akan berada di sini: /var/www/html/example.com/example.com/index.php
(jadi dobel)
Jadi jangan salah ya!
Langkah di atas adalah cara pertama saat mindahin web menggunakan rsync
.
Cara kedua (narik data dari VPS A ke B) tidak berbeda jauh.
Setelah kamu login ke VPS B dan berencana menarik data dari VPS A, maka tinggal jalankan perintah rsync
berikut:
rsync -av username@IP_VPS_A:/lokasi/direktori/situs/yang/kamu/simpan/ /lokasi/direktori/situs/akan/disimpan/
Tidak ada perbedaan signifikan, dan tidak perlu saya jelaskan, kamu juga pasti tau dimana bedanya. Kalau kamu bingung, mending ikuti yang ada di tutorial ini aja.
Kita akan melangkah ke bagian import database.
3. Import Database
Setelah proses rsync
selesai dilakukan, saatnya kita masuk / login ke VPS B untuk mengimport database.
Silahkan login dulu ke VPS B.
Kalau sudah login, masuk ke direktori public_html
situs kamu berada. Karena di awal saya samakan lokasinya agar tidak bingung, maka tinggal masuk aja, kalo saya masuk ke /var/www/html/example.com
.
cd /var/www/html/example.com
Jalankan perintah import berikut:
mysql -u u_domain -p db_domain < db-situs-example.sql
Tekan Enter, dan kamu akan dimintain password mysql (lihat di wp-config.php
). Kalo punya saya password-nya domain1234
. Tekan Enter sekali lagi, tunggu beberapa detik, selesai.
Jadi kalo export database perintahnya mysqldump
dan ada tanda >
, sedangkan kalo import perintahnya mysql
dan ada tanda <
.
Selesai sudah proses perpindahan hosting web antar VPS.
Kamu harus pastikan bahwa:
- Semua langkah kamu ikuti dengan benar, tidak ada error.
- Service di VPS B sudah berjalan (Web server, BIND, MySQL, dll)
Maka tinggal arahkan aja NS nya ke VPS baru. Kalo pake NS yang sama berarti ganti IP nya di registrar domain kamu.
Sip sudah selesai.
Kalo ada yang ngga ngerti / error, silahkan komentar.
Kalau mau pindah dari sharehost ke VPS vultr yg ada di tutorial gimana mas?
Di blog saya belum ada tutorialnya mas. Mungkin kalo Googling ketemu.
Mas, pas restore database muncul err
“ERROR 1045 (28000): Access denied for user ‘wordpress’@’localhost’ (using passwo rd: YES)
ERROR 1045 (28000): Access denied for user ‘prolite’@’localhost’ (using password: YES)
—–
error juga mas ,tolong pencerahannya thanks
salah di password nya sepertinya.
Kalo mentok pake user root aja, jadi
mysql -u'root -p'password' 'database' < db.sql
mysql -u’root -p’password’ ‘database’ < db.sql
Password nya itu password apa ya mas?
password mysql, password phpmyadmin (kalo ada)
Kalo perbedaan resync dan scp apa ya om? Saya biasa pake scp kalo transfer host to host, dan misal prosesnya terhenti di tengah jalan, apakah bisa di resume?
Kelebihan rsync dia bisa me-resume proses yang terhenti dan menyinkron file2.
Ini Khan hanya pindahin file WordPress aja Bro… kalau misalnya sekaligus pindahin dengan setting nginx / *.conf / PHP, pokoknya semualah dari VPS A ke VPS B, (lebih mirip cloning Gitu) Bisa nggak, soalnya VPS saya ada 3 Blog dengan setting berbeda, satu pakai ssl laiinya tidak, (mohon pencerahan Bro…)
halo mas saya coba syntax untuk import database.
sebelumnya saya export databse saya, terus saya upload ke /var/www/htm/situsku kemudian saya jalankan syntax nya dan hasilnya ini mas ERROR 1062 (23000) at line 43: Duplicate entry ’81’ for key ‘PRIMARY’
biar bisa ke import dengan baik gimana y mas?
Itu kendalanya dari File SQL pas mas export, jadi bukan proses import nya.
Silahkan diulang dengan menceklis meno Insert Ignore di phpMyAdminnya
Atau kalo pake command, rumus export nya jadi
mysqldump --insert-ignore -u'username' -p'password' 'database' > db.sql
halo mas
kalau pakai easyengine ubuntu kan tidak ada akses rootnya, jadi akses server pertama kali dikasih username: customer, usernamenya bukan “root”.
bagaimana cara penulisan perintah rsync-nya mas?
Masuk dulu sebagai root kalo gitu biasanya perintahnya mas ketik ini:
Enter
Nanti masukin password customer
Kalau boleh jujur mas mau kasih review hardinal.com, artikelnya mantep newbie kayak saya jadi bisa main vps. mohon untuk sering update lagi kedepannya, biar banyak yang ambil manfaat ilmunya hardinal tambah berkah rejeki tambah lancar. kalau boleh usul buat grup fb ttng vps dedi hosting dll dong mas. oya mau kasih masukan juga, awalnya saya kira inet saya yang lemot pas akses hardinal tapi pas akses lainnya lancar jaya, jadi kenapa lambat ya hardinal.com? saya pakai speedy 1,5 Mb
mas, tolong donk di buatkan tutorial instal webuzo dan VestaCP di VPS. Kalau boleh tahu beda nya panel webuzo dan VestaCP apa ya? terimakasi
Mas hardinal mau tanya, command script untuk mendelete folder tertentu secara otomatis setiap melewati 1gb. contoh folder var/log/journal?
Itu sd hmasuk ke ranah koding mas, saya kurang paham yang seperti itu
Sebagai base nya, mas bisa lihat ini
https://unix.stackexchange.com/questions/132054/automatically-detect-when-a-file-has-reached-a-size-limit
Makasih gan tutorialnya, baru nemuin cara migrasi di vps nih. Kalau punya multiple domain dalam satu vps, cukup satu kali saja atau setiap domain dipindah satu per satu?
Mas, saya ingin pindah server sesama VPS Vutr gimana ya? Jadi saat ini sedang menggunakan VPS teman, terus mau pindah sendiri pakai VPS saya. Mohon bantuannya.
Nambah bagaimana cara pindah server dari shared hosting ke VPS Vultr?
Mohon berkenan membalas. Terimakasih
setelah perintah rsync trus enter.. gagal .. tulisannya connection to hosr 1.1.1xx.1xx port:22 Connection refused
Mungkin masalahnya port saya bukan port 22
Silahkan disesuaikan Port nya, misal Port nya 2222 maka kode depannya ganti jadi
terima kasi mas hardinal
Pingback: Cara Menggunakan DNS CloudFlare (Lengkap dengan Gambar) | My Word
terima kasih mas Hardinal