Ringkasan
Dalam posting berikut kita akan membahas skenario di mana kita akan menginstal WordPress dengan database jarak jauh di Debian. Dengan kata lain, kita akan memiliki lingkungan di mana kita akan memiliki dua server terpisah, satu yang hanya akan memiliki instalasi WordPress (artinya hanya akan meng-host situs web) dan yang lainnya hanya akan memiliki database (bertindak hanya sebagai server database) .
Ada banyak alasan menguntungkan mengapa lingkungan semacam ini disiapkan – salah satunya adalah kemudahan pemeliharaan situs web dan pemeliharaan basis data, peningkatan kinerja (artinya wordpress karena tidak bergantung pada satu server, akan membutuhkan sumber daya yang jauh lebih sedikit).
Namun kekurangannya adalah – karena kami memiliki dua server sekarang, pemeliharaan server akan meningkat.
Setup ini akan dikonfigurasi pada dua server Debian (keduanya di jaringan yang sama/LAN yang sama).
Tumpukan akan menjadi LEMP – server web Nginx, PHP dan server MariaDB.
Konfigurasi server basis data
Kami akan fokus dulu pada server database:
1. Instal server MariaDB
sudo apt install mariadb-server
Jalankan mysql_secure_installation
sudo mysql_secure_installation
2. Edit file konfigurasi database dan ubah parameter bind-address dan masukkan alamat pribadi server database Anda:
Berkas yang akan diedit:
sudo /etc/mysql/mariadb.conf.d/50-server.cnf
Baris yang akan diedit – bind-address =127.0.0.1
bind-address =192.168.56.252
Simpan dan keluar, mulai ulang dan aktifkan mariadb.service.
sudo systemctl restart mariadb.service sudo systemctl enabled mariadb.service
Untuk mengetahui alamat IP server database Anda, jalankan perintah – ip a.
3. Buat database, pengguna dan atur hak istimewa (info dalam perintah digunakan sebagai contoh)
sudo mysql -u root -p CREATE DATABASE wptest; GRANT ALL ON wptest.* TO 'wpadmin'@'192.168.56.251' IDENTIFIED BY 'StrongPassword'; FLUSH PRIVILEGES; exit
Pada database perlu untuk membuat remote user, alias akun pengguna yang akan digunakan instalasi WordPress kita untuk terhubung ke database. Anda perlu mengetahui terlebih dahulu alamat IP server WordPress dan menentukannya/mengikatnya ke akun pengguna jarak jauh.
Konfigurasi firewall
Jika Anda memiliki firewall yang berjalan di server database Anda, maka perlu membuka port 3306 untuk menerima koneksi dari server web dan untuk mengakses database. Untuk berjaga-jaga, ada baiknya mengonfigurasi aturan untuk hanya menerima koneksi dari server web kami saja.
Konfigurasi firewall UFW
sudo ufw allow from 192.168.56.251 to any port 3306
Konfigurasi IPTABLES
iptables -I INPUT -p tcp -s 192.168.56.251 --dport 3306 -j ACCEPT
Konfigurasi server web
1. Instal server web Nginx dengan pustaka php lain yang diperlukan untuk menjalankan WordPress dan untuk berkomunikasi dengan server database dan klien mysql/mariadb.
sudo apt install nginx php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl sudo apt install mariadb-client
Kita dapat menguji koneksi ke server database jika kita menjalankan perintah ini dari server web kita (pada dasarnya, login dari jarak jauh ke database):
sudo mysql -u remote-admin -h 192.168.56.252 -p
2. Instal WordPress, konfigurasikan dan konfigurasikan Nginx. Di sini sekarang kita hanya akan mengonfigurasi bagian WordPress di mana kita perlu menambahkan alamat server database jarak jauh kita. Jika Anda memerlukan langkah-langkah mendetail tentang cara menginstal WordPress dan Konfigurasi Nginx, Anda dapat menemukan petunjuknya di postingan ini.
cd /var/www/html/wordpress/ sudo mv wp-config-sample.php wp-config.php sudo nano wp-config.php
Pada baris database, ganti localhost dengan alamat IP server database Anda. Lihat gambar di bawah ini sebagai contoh:
3. Buat file conf Nginx dan hapus yang default:
sudo nano /etc/nginx/sites-available/wordpress.conf sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
Konfigurasi Nginx yang dapat Anda gunakan, Anda dapat menemukannya di pos yang sama yang kami sebutkan sebelumnya.
sudo rm /etc/nginx/sites-available/default sudo rm /etc/nignx/sites-enabled/default
Setelah konfigurasi ini, Anda sekarang dapat menjalankan WordPress, mengakses basis data jarak jauhnya, dan menyelesaikan instalasi WordPress.
Dan sekarang Anda harus memiliki situs WordPress yang berjalan dengan web dan server database terpisah. Anda dapat berhenti di sini jika Anda puas dengan pengaturannya. Ini adalah langkah-langkah yang diperlukan untuk menginstal WordPress dengan basis data jarak jauh, dan pada titik ini, semuanya harus aktif dan berjalan. Jika tidak, lanjutkan ke bab berikutnya dan terakhir tentang cara mengamankan dan mengenkripsi koneksi database dan lalu lintas antara web dan server database dan membuat pengaturan lebih aman.
Amankan dan enkripsi koneksi database dengan SSL(Opsional tapi disarankan)
Ini juga merupakan praktik keamanan yang baik dan lapisan keamanan tambahan untuk mengamankan dan mengenkripsi lalu lintas antara web dan server database. Alasan mengapa jika tidak aman dan terenkripsi, dan JIKA entah bagaimana seorang penyerang membobol subnet pribadi Anda (jaringan LAN pribadi di mana server berada) atau server web, penyerang kemudian dapat mencegat dan mengendus lalu lintas (memantau dan get data) yang dapat mengakibatkan pelanggaran dan peretasan situs web dan server Anda.
Sertifikat server basis data
1. Pada kedua server (web dan database), buat direktori sementara untuk menyimpan sertifikat (contoh ssl atau certs) di direktori home Anda sebagai contoh atau di suatu tempat yang mudah bagi Anda untuk menyimpannya – sebagai contoh, di sini kita akan membuat direktori certs di direktori home kami:
cd mkdir certs
Pertama-tama kita akan mulai dengan server database, jadi beralihlah ke direktori sertifikat baru yang baru saja kita buat:
cd certs
2. Di server database kita akan membuat CA key, certificate dan private key. Ikuti petunjuknya dan jawab sesuai saat diminta. Anda dapat menggunakan gambar di bawah ini sebagai referensi. Satu hal yang harus diperhatikan adalah untuk nama umum (yang cukup penting) prompt. Itu meminta nama server database. Di sini Anda harus menambahkan alamat IP server (seperti yang kami miliki) atau nama domain server jika Anda memiliki atau nama host. Info harus cocok karena kami akan membuat sertifikat server dan kunci klien untuk dicocokkan.:
sudo openssl genrsa 4096 > ca-key.pem sudo openssl req -new -x509 -nodes -days 1825 -key ca-key.pem -out cacert.pem
Pada perintah kedua, atribut -days 1825 mengacu bahwa sertifikat yang dibuat akan berlaku selama 5 tahun (1825 hari). Anda dapat mengatur hari sesuai keinginan atau kebutuhan.
3. Selanjutnya buat kunci privat RSA dan tanda tangani sertifikatnya:
sudo openssl rsa -in server-key.pem -out server-key.pem
sudo openssl req -newkey rsa:4096 -days 1825 -nodes -keyout server-key.pem -out server-req.pem
sudo openssl x509 -req -in server-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Sekarang kita dapat memindahkan sertifikat ke lokasi permanen:
sudo mkdir /etc/mysql/ssl sudo mv *.* /etc/mysql/ssl cd /etc/mysql/ssl
Sertifikat server web
4. Buat sertifikat klien. Perintahnya akan sama seperti untuk server database tetapi pada pertanyaan Common Name, masukkan detail server web tempat Wodpress diinstal (seperti alamat IP server web). Tulis RSA dan tanda tangani sertifikatnya:
sudo openssl req -newkey rsa:2048 -days 1825 -nodes -keyout client-key.pem -out client-req.pem sudo openssl rsa -in client-key.pem -out client-key.pem sudo openssl x509 -req -in client-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Konfigurasi SSL untuk kedua server
Pengaturan server basis data
1. Langkah selanjutnya adalah mengkonfigurasi server kami untuk menggunakan sertifikat yang kami buat dan mengaktifkan koneksi SSL antara web dan server database. Pertama edit konfigurasi pada konfigurasi server MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Dan temukan baris berikut, hapus komentar mereka tambahkan tulis ulang baris yang cocok dengan direktori dan file sertifikat yang kami buat:
ssl-ca=/etc/mysql/ssl/cacert.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem
Simpan file dan keluar.
2. Sekarang login di MariDB sebagai root dan jalankan kueri berikut untuk mengaktifkan di server yang memungkinkan koneksi dari server web hanya dengan SSL:
sudo mysql -u root -p GRANT ALL PRIVILEGES ON wptest.* TO 'wpadmin'@'192.168.56.251' REQUIRE SSL; FLUSH PRIVILEGES; exit
Mulai ulang server basis data:
sudo systemctl restart mariadb.service
Penyiapan server web
3. Saat masih di direktori /etc/mysql/ssl (atau pindah ke sini), dengan alat scp, salin sertifikat klien ke server web (pengguna web dan alamat IP ganti dengan nama pengguna dan alamat IP Anda yang sebenarnya server web):
scp cacert.pem client-cert.pem client-key.pem [email protected]:~/certs
Sekarang beralih/login ke server web dan pindahkan sertifikat ke suatu tempat permanen juga (sama seperti untuk server database):
sudo mkdir /etc/mysql/ssl cd certs sudo mv /certs/*.* /etc/mysql/ssl
Edit file konfigurasi untuk klien MariaDB yang kami instal pada langkah pertama. Ini memiliki lokasi yang sama dengan yang dimiliki server:
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
Dan temukan baris SSL (harus di bawah bagian [mysql]) yang sama seperti yang kita lakukan untuk server database dan minta mereka mencocokkan lokasi dan nama file dari sertifikat yang kita tambahkan di direktori /etc/mysql/ssl:
[mysql] ssl-ca=/etc/mysql/ssl/cacert.pem ssl-cert=/etc/mysql/ssl/client-cert.pem ssl-key=/etc/mysql/ssl/client-key.pem
Simpan file, keluar.
Anda dapat menguji apakah koneksi berfungsi dengan login jarak jauh:
mysql -u wpadmin -h 192.168.56.252 -p
4. File terakhir yang harus diedit adalah wp-config.php. Kita juga perlu ke sana baris konfigurasi SSL:
sudo nano /var/www/html/wordpress/wp-config.php
dan tambahkan baris sebelum baris dengan nama database:
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );
Lihat gambar:
Mulai ulang server web Nginx, dan selesaikan instalasi WordPress dari browser web. Ini harus aktif dan berjalan.
Ringkasan
Untuk meringkas artikel ini, kami membahas langkah-langkah cara menginstal WordPress dengan database jarak jauh. Kami juga membahas proses cara mengamankan koneksi antara dua server (jika Anda belum pernah mengalami sebelum sertifikat yang ditandatangani sendiri dan cara bekerja dengannya, Anda dapat melewati langkah, seperti yang dikatakan di atas, itu tidak perlu, hanya rekomendasi) . Proses dasar menginstal WordPress dengan database jarak jauh sendiri tidak terlalu sulit dan memberikan beberapa manfaat, salah satunya kinerja dan pemeliharaan server web sekarang menjadi lebih mudah dan mengurangi waktu henti saat pemeliharaan diperlukan.