1. Halo Guest, pastikan Anda selalu menaati peraturan forum sebelum mengirimkan post atau thread baru.

[Bnr2 Disuapin] Cara Install WordPress di Unmanaged VPS (Nginx MariaDB PHP)

Discussion in 'Hosting & Domain' started by hardinalz, Sep 18, 2014.

  1. hardinalz

    hardinalz Super Hero

    Joined:
    Mar 8, 2010
    Messages:
    2,395
    Likes Received:
    1,420
    Location:
    /var/www/html
    Ada beberapa langkah untuk meriksa nya.

    PERTAMA:
    Pastikan
    1. nginx udah di restart
    2. udah dikasih perintah ln -s dst....
    3. data situs diupload ke direktori / folder /usr/share/nginx/html/example.com/

    KEDUA:
    Coba cek isi dari access log dan error log.

    KETIGA:
    Copy paste ke trit ini hasil dari perintah ini (nanti nama domain samarkan aja misalnya jadi example.com):

    1. ls /etc/nginx/sites-available/

    2. ls /etc/nginx/sites-enabled/

    3. cat /etc/nginx/sites-available/example.com

    Untuk perintah no. 3 example.com adalah domain agan lalu copy paste isi nya ke sini, untuk dianalisa.
     
    sanwa likes this.
  2. nncjn

    nncjn Hero

    Joined:
    Nov 9, 2009
    Messages:
    608
    Likes Received:
    15
    Tutorial yang mantap banget, thanks Agan hardinalz.

    Oya, gimana kalau kita mau backup wordpress dan semua data yang ada. Siapa tahu mau pindah VPS gitu... thanks.
     
  3. sanwa

    sanwa Hero

    Joined:
    Jan 4, 2011
    Messages:
    578
    Likes Received:
    36
    Location:
    Lampung-Jakarta PP
    Tapi masih ada masalah pas import database :questionmark:

    Code:
    root@xxxxxx:~# mysql -u u_xxxxxx -p db_xxxxxx < /usr/share/nginx/html/xxxxxx.com/xxxxxx.sql
    Enter password: 
    ERROR 1045 (28000): Access denied for user 'u_xxxxxx'@'localhost' (using password: YES)
    root@xxxxxx:~# 
    
    problem udah tinggal import database lg
     
  4. hardinalz

    hardinalz Super Hero

    Joined:
    Mar 8, 2010
    Messages:
    2,395
    Likes Received:
    1,420
    Location:
    /var/www/html
    Backup antar VPS lebih enak pake rsync sangat irit BW internet kita, proses sangat cepet dan ngga ribet. Garis besarnya pernah saya bahas di sini: http://ads.id/forums/showthread.php/196364 , tapi tidak detail, agan harus explore lagi.

    Tapi kalo ngga mau pake rsync, bisa pake cara lain (transfer antar server) pernah saya bahas di sini http://ads.id/forums/showthread.php/192139?p=2542863#post2542863 itu berlaku untuk pindahan dari Shared ke VPS ato VPS ke VPS. Kalo dari VPS A ke VPS B, data di VPS A nya harus di backup dulu.

    1. Backup database dan simpan di folder situs, pernah saya bahas di sini: http://ads.id/forums/showthread.php/192139?&p=2516712#post2516712 (baca pada bagian CARA EXPORT DATABASE ada di tengah postingan)

    2. Backup isi situs nya. Misal, folder domainnya bernama example.com dan berada di folder /usr/share/nginx/html/, maka setelah menjalankan perintah backup database di nomor 1, lanjutkan dengan menjalankan perintah:

    cd /usr/share/nginx/html/example.com/

    tar -zcvf backup-example.tar.gz ./

    3. Baru ke cara yang saya sebut di Paragraf 2 (transfer antar server)


    Mantep kalo sudah bisa. Untuk yang database, beberapa solusi:

    1. pastikan username & password nya adalah yang ada di

    /usr/share/nginx/html/xxxxxx.com/wp-config.php

    2. Pastikan username tsb dan database nya sudah dibuat terlebih dahulu. Perintah2 nya saya flashback lagi ya, kira2 yang seperti ini;

    masuk ke MariaDB dengan perintah mysql -u root -p lalu:

    CREATE DATABASE db_situsku;
    CREATE USER 'u_situsku'@'localhost' IDENTIFIED BY 'passw0rd';
    GRANT ALL PRIVILEGES ON db_situsku.* TO 'u_situsku'@'localhost';
    flush privileges;
    quit;


    Perhatikan yang saya warnai:
    Merah = nama database di /usr/share/nginx/html/xxxxxx.com/wp-config.php
    Hijau = password di /usr/share/nginx/html/xxxxxx.com/wp-config.php
    Biru = nama username di /usr/share/nginx/html/xxxxxx.com/wp-config.php

    Kalo sudah dibangun user + db nya, baru import.

    Kalo misalnya agan udah pernah ngejalanin perintah2 CREATE DATABASE dst.... maka kemungkinan password yang ada di system MariaDB / MySQL berbeda dengan password yang ada di /usr/share/nginx/html/xxxxxx.com/wp-config.php . Mungkin agan lupa dulu pas bikin password nya apa. Kalo seperti itu, maka:

    1. Reset password u_situsku caranya pernah saya bahas di sini: http://ads.id/forums/showthread.php/192139?p=2526888#post2526888 (Baca jawaban yang paling bawah)

    2. Atau bikin lagi userbaru untuk database yang ada. Perintah tambah user:

    masuk ke MariaDB dengan perintah mysql -u root -p lalu:

    CREATE USER 'u_ke_2_situsku'@'localhost' IDENTIFIED BY 'passw0rd';
    GRANT ALL PRIVILEGES ON db_situsku.* TO 'u_ke_2_situsku'@'localhost';
    flush privileges;
    quit;


    Kalau pilih opsi nomor 2, nanti username di /usr/share/nginx/html/xxxxxx.com/wp-config.php harus u_ke_2_situsku kalau sudah tinggal import database:

    mysql -u u_ke_2_situsku -p db_xxxxxx < /usr/share/nginx/html/xxxxxx.com/xxxxxx.sql
     
    Last edited: Jan 13, 2015
  5. sanwa

    sanwa Hero

    Joined:
    Jan 4, 2011
    Messages:
    578
    Likes Received:
    36
    Location:
    Lampung-Jakarta PP
    saya cek di wp-config udah sama persis trus sya coba import lagi eror nya lain lg
    ERROR 1062 (23000) at line 112: Duplicate entry '1' for key 'PRIMARY'

    database yg mau di import besar 170mb kira2 ada pengaruh di besarnya database apa ada kesalahan pas create database nya
     
  6. hardinalz

    hardinalz Super Hero

    Joined:
    Mar 8, 2010
    Messages:
    2,395
    Likes Received:
    1,420
    Location:
    /var/www/html
    Jawaban pertama sudah saya update. Mungkin dicoba solusi alternatif selanjutnya.

    Mengenai besar Database tidak masalah, punya saya lebih dari 500MB lancar. Saya curiga begini. Itu kan laporannya ada "Duplicate entry '1' for key 'PRIMARY'" Saran saya begini aja:

    1. Hapus database yang sudah dibangun, misal nama databse nya adalah db_situsku, maka

    mysqladmin -u root -p drop db_situsku

    2. Hapus usernamenya, misal username bernama u_situsku, maka masuk dulu ke mysql nya dgn perintah mysql -u root -p, lalu

    DROP USER 'u_situsku'@'localhost';
    quit;

    3. Bikin kembali username+database yang barusan dihapus dst... sampe proses import. Kalo laporannya masih "Duplicate entry '1' for key 'PRIMARY'" berarti ada masalah di master file SQL nya (file yang akan diimport).
     
    sanwa likes this.
  7. sanwa

    sanwa Hero

    Joined:
    Jan 4, 2011
    Messages:
    578
    Likes Received:
    36
    Location:
    Lampung-Jakarta PP
    DONE gan ahirnya pake cara yg ini :tee:

    Tapi saya ada pertanyaan dikit lg :D mudah2an gak bosen jwab nya

    mengenai htaccess sama robots.txt
    untuk htaccess nya gmana ya gan cara nambahin nya soal mau nambahin sedikit kode di htaccess nya buat permalink search :D
     
  8. hardinalz

    hardinalz Super Hero

    Joined:
    Mar 8, 2010
    Messages:
    2,395
    Likes Received:
    1,420
    Location:
    /var/www/html
    Untuk .htacccess silahkan baca di sini: http://ads.id/forums/showthread.php/192139?p=2525479#post2525479

    Kalo robots.txt ngga ngaruh di nginx dan work 100% karena itu file statis, silahkan dibuat di root public_html-nya domain agan.
     
  9. ari8791

    ari8791 Ads.id Starter

    Joined:
    Mar 1, 2012
    Messages:
    50
    Likes Received:
    0
    Gan, gimana caranya deactivate all plugin wp melalui ssh, situs ane jagi error gara2 instal plugin yang ga compatible? ane tunggu jawabannya ya gan :|
     
  10. hardinalz

    hardinalz Super Hero

    Joined:
    Mar 8, 2010
    Messages:
    2,395
    Likes Received:
    1,420
    Location:
    /var/www/html
    Cara Deactivate Semua Wordpress Plugin lewat perintah MySQL

    Saya akan asumsikan ini terjadi pada domain dalam tutorial yang saya share.

    Misal nama database utk wordpress saya yang hdpiczone.com itu bernama db_hdpiczone.

    Q: Darimana db_hdpiczone?
    A: Dari perintah: cat /usr/share/nginx/html/hdpiczone.com/wp-config.php nanti akan ada Database name nya.

    Maka, cara deactivate semua wordpress plugin lewat perintah MySQL adalah:

    mysql -u root -p

    masukkan password root mysql/MariaDB

    use db_hdpiczone;

    UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';

    quit;

    Sekarang saya akan masuk ke Dashboard Web saya untuk mengaktifkan kembali plugin yang sebelumnya work.
     
  11. bimabaswara

    bimabaswara Ads.id Fan

    Joined:
    Jul 23, 2007
    Messages:
    133
    Likes Received:
    0
    Location:
    yogyakarta
    Makasih agan hardinalz, tutorial nya mantap.

    biarpun pelan2, udah bisa bikin 20 subdomain... :)

    mau tanya lagi, waktu install aio seopack, di bagian XML Sitemap Generator ada pesan seperti ini...


    " Since you are using Nginx as your web-server, please configure the following rewrite rules in case you get 404 Not Found errors for your sitemap: "


    peyelesaiannya gimana??

    tks berat ya...
     
    Last edited: Jan 16, 2015
  12. hardinalz

    hardinalz Super Hero

    Joined:
    Mar 8, 2010
    Messages:
    2,395
    Likes Received:
    1,420
    Location:
    /var/www/html
    Saya juga make AIO seopack yang ini _https://wordpress.org/plugins/all-in-one-seo-pack/ tapi ngga ada muncul itu. Hmm apa disebelah mana ya, takutnya saya yang salah....

    Kalau mengenai kode yang ada di pesan itu, nanti bisa disisipkan di virtual host nginx (catatan nginx)

    Coba buka file virtual host nya (catatan nginx) trs cari baris (agak bawah), yang ada kode:

    "# another virtual host using mix of ..."

    Di atas kode itu ada tanda "}"

    Kode yang muncul dari AIO (saya tdk tau kodenya seperti apa), di paste kan sebelum tanda "}".

    Jadi nanti file virtual hostnya berbentuk:

    ...
    kode dari AIO
    }
    # another virtual host using mix
    ...dst


    Save dan reload catatan nginx: service nginx reload
     
  13. bimabaswara

    bimabaswara Ads.id Fan

    Joined:
    Jul 23, 2007
    Messages:
    133
    Likes Received:
    0
    Location:
    yogyakarta
    berarti edit virtual host ( catatan nginx ) nya harus satu persatu ya gan? secara ane sudah buat sekitar 20 subdomain...

    oia, misal nya subdomain A sdh saya setting semua, plugin dan theme nya, bisa gak kalau mau buat subdomain B, C, D, dst, tinggal copy dr subdomain A?? jadi nanti ane tinggal isi postingan nya aja di masing2 domain tsb.

    mau pake plugin yg di sediain wordpress, banyak yang blm compatible dengan wp nya... :D








     
  14. hardinalz

    hardinalz Super Hero

    Joined:
    Mar 8, 2010
    Messages:
    2,395
    Likes Received:
    1,420
    Location:
    /var/www/html
    ^^

    Iya mas setau saya seperti itu, harus 1-1 karena rewrite rules itu harus ada di server blok yang ada kode 'server_name example.com'

    Server Block itu yang dari dimulai dengan kode server { dan diakhiri dengan }

    Kalo di contoh maka seperti ini

    server {
    server_name example.com;
    ....
    }


    Itu bentuk umumnya, jadi kode dari plugin harus ditempatin antara server { dan }

    Atau mungkin bisa juga di tambahkan di /etc/nginx/nginx.conf (bisa ditambahkan tepat di bawah kode "http {"), save, lalu restart nginx, mungkin mas bisa coba dulu langkah ini, kalau berhasil maka pas ngakses sitemap.xml ngga 404 , kalau ngga berhasil (ketemu 404 page) hrs pake cara atas, edit 1-1.

    Kalau mau subdomain mau dicopy dari A ke B atau C atau D, dst berarti itu istilahnya di clone sub domainnya. Penjelasan di bawah ini agak njelimet, masgan harus teliti!!!

    Pertama agan harus buat virtual host untuk tiap sub domain, dan tentukan posisi root untuk tiap sub domain. Di sini saya praktekan untuk Subdomain B bernama sub-b.domain.com, Subdomain C bernama sub-c.domain.com, dan Subdomain D bernama sub-d.domain.com

    Untuk virtual host sub domain B, C, dan D, di copy paste aja dari sub domain A, misal sub domain a bernama sub-a.domain.com maka tinggal di copy jadi:

    cp /etc/nginx/sites-available/sub-a.domain.com /etc/nginx/sites-available/sub-b.domain.com

    cp /etc/nginx/sites-available/sub-a.domain.com /etc/nginx/sites-available/sub-c.domain.com

    cp /etc/nginx/sites-available/sub-a.domain.com /etc/nginx/sites-available/sub-d.domain.com


    Lalu edit 1-1 posisi root sub domain nya. Ini adalah tempat folder sub domain berada

    Untuk sub domain B, buka dulu file nya

    vi /etc/nginx/sites-available/sub-b.domain.com

    Lalu edit posisi root. Misalnya posisi foldernya menjadi
    ...
    root /usr/share/nginx/html/domain.com/sub-b;
    ...

    Save file.

    Untuk sub domain C, buka dulu file nya

    vi /etc/nginx/sites-available/sub-c.domain.com

    Lalu edit posisi root. Misalnya posisi foldernya menjadi
    ...
    root /usr/share/nginx/html/domain.com/sub-c;
    ...

    Save file.

    Untuk sub domain D, buka dulu file nya

    vi /etc/nginx/sites-available/sub-d.domain.com

    Lalu edit posisi root. Misalnya posisi foldernya menjadi
    ...
    root /usr/share/nginx/html/domain.com/sub-d;
    ...

    Save file

    Buat symlink agar bisa terbaca nginx

    ln -s /etc/nginx/sites-available/sub-b.domain.com /etc/nginx/sites-enabled/

    ln -s /etc/nginx/sites-available/sub-c.domain.com /etc/nginx/sites-enabled/

    ln -s /etc/nginx/sites-available/sub-d.domain.com /etc/nginx/sites-enabled/


    Reload konfigurasi nginx.

    service nginx reload

    Lalu, terapkan langkah2 berikut.

    1. Buat database untuk sub domain B atau C atau D.

    Masuk ke MariaDB dengan perintah mysql -u root -p lalu:

    CREATE DATABASE db_sub-b-domain_com;

    CREATE DATABASE db_sub-c-domain_com;

    CREATE DATABASE db_sub-d-domain_com;

    Untuk username nya, kita pakai yang udah ada ngga usah buat lagi agar lebih sederahana.

    Misal username yang udah ada untuk sub-a.domain.com adalah u_sub-a-domain_com . Maka tinggal pake si u_sub-a-domain_com ini untuk database sub-b.domain.com, sub-c.domain.com, dan sub-d.domain.com. Perintahnya berturut2:

    GRANT ALL PRIVILEGES ON db_sub-b-domain_com.* TO 'u_sub-a-domain_com'@'localhost';

    GRANT ALL PRIVILEGES ON db_sub-c-domain_com.* TO 'u_sub-a-domain_com'@'localhost';

    GRANT ALL PRIVILEGES ON db_sub-d-domain_com.* TO 'u_sub-a-domain_com'@'localhost';

    flush privileges;

    quit;

    2. Export database.

    Database sub-a.domain.com, untuk diimport ke database sub-b.domain.com, sub-c.domain.com, sub-d.domain.com. Ini dilakukan hanya 1 kali. Misal Subdomain A bernama sub-a.domain.com dan foldernya ada di /usr/share/nginx/html/domain.com/sub-a/ dengan username mysql u_sub-a-domain_com (sesuai dengan langkah no. 1) dan database db_sub-a-domain_com maka:

    mysqldump -u u_sub-a-domain_com -p db_sub-a-domain_com > /usr/share/nginx/html/domain.com/sub-a/master_database_untuk_semua_subdomain.sql

    Password nya bisa dilihat di wp-config.php Subdomain A.

    3. Import database yang sebelumnya dibuat di langkah 2. Ini akan memerlukan password di langkah no. 2.

    Untuk import ke database subdomain B, maka perintahnya

    mysql -u u_sub-a-domain_com -p db_sub-b-domain_com < /usr/share/nginx/html/domain.com/sub-a/master_database_untuk_semua_subdomain.sql

    Untuk import ke database subdomain C, maka perintahnya

    mysql -u u_sub-a-domain_com -p db_sub-c-domain_com < /usr/share/nginx/html/domain.com/sub-a/master_database_untuk_semua_subdomain.sql

    Untuk import ke database subdomain D, maka perintahnya

    mysql -u u_sub-a-domain_com -p db_sub-d-domain_com < /usr/share/nginx/html/domain.com/sub-a/master_database_untuk_semua_subdomain.sql

    dst...

    4. Buat folder public_html tiap sub domain. Di atas (sebelum langkah 1) sudah ditentukan folder tiap domain berada, berarti tinggal buat aja folder2 nya

    Untuk sub-b.domain.com

    mkdir -p /usr/share/nginx/html/domain.com/sub-b

    Untuk sub-c.domain.com

    mkdir -p /usr/share/nginx/html/domain.com/sub-c

    Untuk sub-d.domain.com

    mkdir -p /usr/share/nginx/html/domain.com/sub-d

    5. Copy isi sub-a.domain.com ke folder-folder sub-b.domain.com, sub-c.domain.com, dan sub-d.domain.com . Proses ini akan meng-clone sub domain A, ke sub domain B, dst...

    Kita tau bahwa sub domain A letak folder nya ada di

    /usr/share/nginx/html/domain.com/sub-a

    Sub domain B letak folder nya ada di

    /usr/share/nginx/html/domain.com/sub-b

    Maka perintah clone nya adalah

    rsync -av /usr/share/nginx/html/domain.com/sub-a/ /usr/share/nginx/html/domain.com/sub-b/

    Dan untuk proses clone ke folder sub domain B, C, atau D, perintah berturut2 adalah

    rsync -av /usr/share/nginx/html/domain.com/sub-a/ /usr/share/nginx/html/domain.com/sub-b/

    rsync -av /usr/share/nginx/html/domain.com/sub-a/ /usr/share/nginx/html/domain.com/sub-c/

    rsync -av /usr/share/nginx/html/domain.com/sub-a/ /usr/share/nginx/html/domain.com/sub-d/


    Kalau ketemu error bash: rsync command not found, tinggal diinstall dulu rsync nya dengan perintah apt-get install rsync -y lalu jalankan 3 perintah di atas.

    6. Edit WP config tiap sub domain (untuk menyesuaikan nama database yang kita buat di langkah nomor 1)

    Sub domain B:

    vi /usr/share/nginx/html/domain.com/sub-b/wp-config.php silahkan ganti nama database nya dengan db_sub-b-domain_com

    Sub domain C:

    vi /usr/share/nginx/html/domain.com/sub-c/wp-config.php silahkan ganti nama database nya dengan db_sub-c-domain_com

    Sub domain D:

    vi /usr/share/nginx/html/domain.com/sub-d/wp-config.php silahkan ganti nama database nya dengan db_sub-d-domain_com

    Seperti disampaikan sebelumnya langkah no 5 (proses rsync) ini akan meng-clone isi folder Subdomain A ke foler Subdomain B, Subdomain C, dan D, kalau agan mau, apus2 in file SQL yang kita import di langkah no. 2

    rm -f /usr/share/nginx/html/domain.com/sub-b/master_database_untuk_semua_subdomain.sql

    rm -f /usr/share/nginx/html/domain.com/sub-c/master_database_untuk_semua_subdomain.sql

    rm -f /usr/share/nginx/html/domain.com/sub-d/master_database_untuk_semua_subdomain.sql


    7. Kasih akses nginx

    chown -R www-data:www-data /usr/share/nginx/html/domain.com/


    ~~~~

    Awas pusing mas. Hehehe..
     
    Last edited: Jan 16, 2015
  15. josseo

    josseo Hero

    Joined:
    Mar 13, 2013
    Messages:
    745
    Likes Received:
    31
    bikin tutor yang pake bind dung mas
     
  16. bimabaswara

    bimabaswara Ads.id Fan

    Joined:
    Jul 23, 2007
    Messages:
    133
    Likes Received:
    0
    Location:
    yogyakarta
    ini berapa jempol yang harus ane kasih??

    mantap gan... terimakasih banyak dah ngasih ilmu bagus nih...

    pelan2 nt pasti bisa... bisa bikin subdomain aja setelah 3 hari jd jg kok....hehe...

    makasih gan... :)



     
  17. dhika

    dhika Super Hero

    Joined:
    Jul 19, 2007
    Messages:
    1,367
    Likes Received:
    119
    Pusing dan jlimet ya aku bacanya :3
     
  18. freaky_funky

    freaky_funky Ads.id Fan

    Joined:
    Dec 22, 2013
    Messages:
    177
    Likes Received:
    8
    gan, ane mau pasang ssl tapi muncul error kayak giniroot@tes:~# nginx -tnginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-enabled/domainku.com:91nginx: configuration file /etc/nginx/nginx.conf test failedroot@tes:~# ini settingan virtual host nya.. 91 server { 92 listen 443; 93 server_name domainku.com; 94 95 ssl on; 96 ssl_certificate /etc/ssl/certs/ssl-bundle.crt; 97 ssl_certificate_key /etc/ssl/certs/domainku_com.key; 98 99 ssl_session_timeout 5m;100 101 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;102 ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-A ES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SH A256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SH A256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA :AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA :DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";103 ssl_prefer_server_ciphers on;104 location / {105 root /usr/share/nginx/html/domainku.com;106 index index.html index.htm index.php;107 }108 }kesalahan ane terletak dimana gan ..
     
  19. pedurung4n

    pedurung4n Ads.id Starter

    Joined:
    Apr 11, 2014
    Messages:
    63
    Likes Received:
    5
    Gak berani kalo ini ane mah. Soalnya setahu ane cPanel pun kadangkala butuh install ini-itu untuk mendukung script/plugin yg kita pake. Nah kalo ginian, ane installnya gimana. Kalo cPanel biasanya tinggal ngontak CS suruh ngaktifin ini-itu.
     
  20. freaky_funky

    freaky_funky Ads.id Fan

    Joined:
    Dec 22, 2013
    Messages:
    177
    Likes Received:
    8

Share This Page