Bayangkan, jika Anda hanya memiliki satu server tetapi 2 atau lebih situs WordPress, Anda pikir Anda membutuhkan lebih banyak server untuk menjalankan setiap situs wordpress di dalamnya. Tidak apa-apa, tapi bagaimana jika Anda tidak memiliki banyak biaya untuk memelihara banyak server.
Artikel ini akan menunjukkan cara menjalankan beberapa situs WordPress di satu server host, menggunakan Nginx + Mariadb + php-fpm di Ubuntu 18.04 LTS.
Prasyarat
1) Nginx untuk server web
2) Mariadb untuk database mysql
3) php-fpm untuk Manajer Proses php FastCGI
Perintah di bawah ini akan memperbarui sistem Anda dan menambahkan repositori baru untuk paket php
# apt-get update
# apt-get install software-properties-common
# add-apt-repository ppa:ondrej/php
Instal Nginx, Mariadb dan php-fpm
Kami akan menginstal Webserver Nginx, server mysql Mariadb dan php7-fpm serta ekstensi php7 yang diperlukan untuk menjalankan situs WordPress
# apt-get install nginx mariadb-server mariadb-client \
php7.0-fpm php7.0-common php7.0-mbstring php7.0-xmlrpc \
php7.0-soap php7.0-gd php7.0-xml php7.0-intl php7.0-mysql \
php7.0-cli php7.0-mcrypt php7.0-ldap php7.0-zip php7.0-curl -y
Konfigurasi server Mariadb
Untuk menyegarkan instalasi server database, kita memerlukan konfigurasi untuk kata sandi root mysql dan opsi lainnya
Perintah ini berjalan dalam mode wizard, cukup jawab pertanyaan dan terapkan dengan 'Enter'
# mysql_secure_installation
...
Enter current password for root (enter for none): #< Enter
...
Change the root password? [Y/n] y #< type 'y' then Enter
New password: #< Type mysql root password
Re-enter new password: #< Retype mysql root password
Password updated successfully!
Reloading privilege tables..
... Success!
...
Remove anonymous users? [Y/n] y #< type 'y' then Enter
... Success!
...
Disallow root login remotely? [Y/n] y #< type 'y' then Enter
... Success!
...
Remove test database and access to it? [Y/n] y #< type 'y' then Enter
...
Reload privilege tables now? [Y/n] y #< type 'y' then Enter
...
Thanks for using MariaDB!
Periksa layanan Mariadb dan aktifkan layanan saat boot
Untuk memastikan mariadb-server berjalan dan konfirmasi semua pengaturan yang Anda lakukan di langkah sebelumnya.
Jika tidak ada error, Mariadb-server siap melayani layanan database
# systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-07-16 03:11:48 UTC; 4h 19min ago
Main PID: 10781 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 27 (limit: 2322)
CGroup: /system.slice/mariadb.service
└─10781 /usr/sbin/mysqld
Ganti 'password' dengan password yang Anda masukkan pada langkah sebelumnya
# mysql -uroot -p'password'
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 49
Server version: 10.1.29-MariaDB-6 Ubuntu 18.04
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Terlihat bagus, sekarang aktifkan layanan mysql saat boot
# systemctl enable mariadb
Konfigurasi php-fpm
Nginx tidak mendukung untuk menjalankan php seperti mod_php di Apache.
Jadi kita perlu menginstal (kami melakukannya) dan mengkonfigurasi daemon php-fpm yang mendukung menjalankan kode sumber php
Edit file /etc/php/7.0/fpm/php.ini dengan beberapa parameter seperti dibawah ini
# vim /etc/php/7.0/fpm/php.ini
upload_max_filesize = 100M
max_execution_time = 360
cgi.fix_pathinfo = 0
date.timezone = Asia/Ho_Chi_Minh
Periksa file konfigurasi pool php-fpm /etc/php/7.0/fpm/pool.d/www.conf
Pastikan konfigurasi ini sudah ada, biarkan default opsi lain jika Anda tidak pandai sama sekali:
user = www-data
group = www-data
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data
Sekarang restart saja daemon php-fpm dan periksa statusnya, lalu aktifkan layanan saat boot
# systemctl restart php7.0-fpm
# systemctl status php7.0-fpm
# systemctl enable php7.0-fpm
Buat beberapa situs wordpress
Contoh, kami memiliki 3 situs wordpress, nama:
- situs1.contoh.com
- situs2.contoh.com
- site3.example.com
Buat basis data
Kami akan membuat db untuk site1, site2, site3 dan memberikan pengguna db untuk database tersebut
site1.example.com akan menjalankan nama database 'site1' dengan pengguna database 'site1'@'localhost'
mysql -u root -p'password' -e "CREATE DATABASE site1;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site1.* TO 'site1'@'localhost' IDENTIFIED BY 'site1password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"
Lakukan tindakan yang sama untuk database site1, site2, ganti 'site1' dengan site2, site3. Ganti kata sandi pengguna db jika Anda mau
mysql -u root -p'password' -e "CREATE DATABASE site2;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site2.* TO 'site2'@'localhost' IDENTIFIED BY 'site2password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"
mysql -u root -p'password' -e "CREATE DATABASE site3;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site3.* TO 'site3'@'localhost' IDENTIFIED BY 'site3password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"
Buat file konfigurasi nginx untuk setiap situs
Setiap kali Anda ingin menambahkan situs baru, cukup tambahkan blok server baru untuk situs tersebut
# cat > /etc/nginx/sites-available/site1.conf <<EOF
server {
listen 80;
root /var/www/site1;
index index.php index.html index.htm;
server_name site1.example.com www.site1.example.com;
client_max_body_size 100M;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
}
}
EOF
Lakukan tindakan yang sama untuk site2 dan situs3
Kemudian kita akan memiliki 3 file konfigurasi baru di /etc/nginx/sites-available/. Anda dapat memeriksa untuk memverifikasi ruang konfigurasi cat perintah
#cat /etc/nginx/sites-available/site2.conf
server {
listen 80;
root /var/www/site2;
index index.php index.html index.htm;
server_name site2.linoxide.com www.site2.linoxide.com;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Buat root Dokumen untuk setiap situs
CATATAN :Jalur root dokumen harus sama dalam konfigurasi Nginx (parameter 'root' di blok{} server) dan pemilik adalah www-data
Jika Anda ingin mengubah direktori root dokumen, cukup ubah opsi 'root' di konfigurasi nginx dan buat jalur yang sama.
# mkdir -p /var/www/site{1,2,3}
# chown -R www-data:www-data /var/www/site*
Aktifkan konfigurasi nginx untuk setiap situs dan periksa konfigurasi
Karena secara default Nginx hanya membaca konfigurasi di /etc/nginx/sites-enabled/
Jadi jika Anda ingin Nginx membaca konfigurasi di /etc/nginx/sites-available/
Cukup buat symlink, seperti ini:
# ln -s /etc/nginx/sites-enabled/site1.conf /etc/nginx/sites-available/site1.conf
# ln -s /etc/nginx/sites-enabled/site2.conf /etc/nginx/sites-available/site2.conf
# ln -s /etc/nginx/sites-enabled/site3.conf /etc/nginx/sites-available/site3.conf
Kemudian verifikasi konfigurasi Nginx dengan menjalankan perintah ini:
# nginx -t -c /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Lihat konfigurasi yang bagus, muat ulang daemon Nginx
# nginx -s reload -c /etc/nginx/nginx.conf
atau
# systemctl reload nginx
Unduh sumber dan tempat wordpress ke /var/www/site*
CATATAN:Jika Anda sudah memiliki sumber wordpress, letakkan saja di jalur root Dokumen ikuti konfigurasi nginx.
# cd /tmp
# wget http://wordpress.org/latest.tar.gz
# tar -xzvf latest.tar.gz
# cp -r wordpress/* /var/www/site1/
# cp -r wordpress/* /var/www/site2/
# cp -r wordpress/* /var/www/site3/
# chown -R www-data:www-data /var/www/site*
Awal untuk instalasi wordpress baru
Akses setiap situs yang Anda inginkan untuk memulai WordPress dengan menggunakan browser. Setelah memilih bahasa Anda, klik 'Lanjutkan ' tombol
Kemudian isikan nama database, user database, password database untuk menjalankan konfigurasi untuk setiap situs, seperti di bawah ini
Kemudian kirimkan konfigurasi Anda dan 'jalankan instalasi' dengan mengklik 'Jalankan instalasi '.
Baca juga:
- Cara Menginstal Baris Perintah WordPress menggunakan WP-CLI
- Cara Menginstal LEMP di Ubuntu 18.04
Sekarang, dengan Nginx, Mysql dan php-fpm, Anda dapat menjalankan banyak situs WordPress dalam satu server. Tidak hanya WordPress tetapi Anda juga dapat melakukan langkah yang sama untuk sumber cms lainnya.
Artikel selanjutnya, kami akan menjelaskan dan memandu cara mengoptimalkan nginx, konfigurasi php-fpm untuk server web yang menjalankan Nginx dan php-fpm