Stellen Sie sich vor, wenn Sie nur einen Server, aber 2 oder mehr WordPress-Sites haben, denken Sie, dass Sie mehr Server benötigen, um jede WordPress-Site darauf auszuführen. Es ist in Ordnung, aber wie wäre es, wenn Sie nicht viele Kosten für die Wartung vieler Server haben.
Dieser Artikel zeigt Ihnen, wie Sie mehrere WordPress-Websites auf einem Hostserver ausführen, indem Sie Nginx + Mariadb + php-fpm unter Ubuntu 18.04 LTS verwenden.
Voraussetzungen
1) Nginx für Webserver
2) Mariadb für MySQL-Datenbank
3) php-fpm für php FastCGI Process Manager
Der folgende Befehl aktualisiert Ihr System und fügt ein neues Repository für PHP-Pakete hinzu
# apt-get update
# apt-get install software-properties-common
# add-apt-repository ppa:ondrej/php
Installieren Sie Nginx, Mariadb und php-fpm
Wir werden den Webserver Nginx, den MySQL-Server Mariadb und php7-fpm sowie die php7-Erweiterung installieren, die zum Ausführen der WordPress-Site benötigt wird
# 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
Mariadb-Server konfigurieren
Für die Installation des Aktualisierungsdatenbankservers benötigen wir die Konfiguration für das mysql-Root-Passwort und andere Optionen
Dieser Befehl wird im Assistentenmodus ausgeführt, beantworten Sie einfach die Frage und übernehmen Sie sie mit '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!
Mariadb-Dienst prüfen und Dienst beim Booten aktivieren
Stellen Sie sicher, dass der Mariadb-Server läuft, und bestätigen Sie alle Einstellungen, die Sie in den vorherigen Schritten vorgenommen haben.
Wenn keine Fehler vorhanden sind, ist der Mariadb-Server bereit, den Datenbankdienst bereitzustellen
# 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
Ersetzen Sie „Passwort“ durch Ihr Passwort, das Sie im vorherigen Schritt eingegeben haben
# 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)]>
Sieht gut aus, aktivieren Sie jetzt den MySQL-Dienst beim Booten
# systemctl enable mariadb
php-fpm konfigurieren
Nginx unterstützt nicht die Ausführung von PHP wie mod_php in Apache.
Also müssen wir den php-fpm-Daemon installieren (wir haben es geschafft) und konfigurieren, der die Ausführung des PHP-Quellcodes unterstützt
Bearbeiten Sie die Datei /etc/php/7.0/fpm/php.ini mit einigen Parametern wie unten
# 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
Überprüfen Sie die Konfigurationsdatei des php-fpm-Pools /etc/php/7.0/fpm/pool.d/www.conf
Stellen Sie sicher, dass Sie diese Konfiguration haben, lassen Sie andere Standardoptionen, wenn Sie überhaupt nicht gut sind:
user = www-data
group = www-data
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data
Starten Sie jetzt einfach den php-fpm-Daemon neu und überprüfen Sie den Status. Aktivieren Sie dann den Dienst beim Booten
# systemctl restart php7.0-fpm
# systemctl status php7.0-fpm
# systemctl enable php7.0-fpm
Erstellen Sie mehrere WordPress-Sites
Beispiel:Wir haben 3 WordPress-Sites, Name:
- site1.beispiel.com
- site2.beispiel.com
- site3.example.com
Datenbank erstellen
Wir erstellen db für site1, site2, site3 und gewähren db user für diese Datenbanken
site1.example.com führt den Datenbanknamen „site1“ mit dem Datenbankbenutzer „site1“@„localhost“
ausmysql -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;"
Führen Sie dieselbe Aktion für die Datenbank „site1, site2“ durch, ersetzen Sie „site1“ durch „site2, site3“. Ersetzen Sie das db-Benutzerpasswort, wenn Sie möchten
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;"
Nginx-Konfigurationsdatei für jede Site erstellen
Jedes Mal, wenn Sie eine neue Site hinzufügen möchten, fügen Sie einfach einen neuen Serverblock für diese Site hinzu
# 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
Führen Sie die gleiche Aktion für site2 durch und site3
Dann haben wir 3 neue Konfigurationsdateien in /etc/nginx/sites-available/. Sie können den Konfigurationsschacht cat überprüfen, um ihn zu überprüfen Befehl
#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;
}
}
Dokumentstamm für jede Site erstellen
HINWEIS :Dokumentstammpfad muss in der Nginx-Konfiguration gleich sein (Parameter 'root' im server{}-Block) und besitzen den Besitzer www-data
Wenn Sie das Stammverzeichnis des Dokuments ändern möchten, ändern Sie einfach die Option „root“ in der Nginx-Konfiguration und erstellen Sie denselben Pfad.
# mkdir -p /var/www/site{1,2,3}
# chown -R www-data:www-data /var/www/site*
Aktiviere die nginx-Konfiguration für jede Seite und überprüfe die Konfiguration
Denn standardmäßig liest Nginx nur die Konfiguration in /etc/nginx/sites-enabled/
Wenn Sie also die Nginx-Konfiguration in /etc/nginx/sites-available/ lesen möchten
Erstellen Sie einfach einen Symlink wie diesen:
# 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
Überprüfen Sie dann die Nginx-Konfiguration, indem Sie diesen Befehl ausführen:
# 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
Konfiguration gut aussehen, Nginx-Daemon neu laden
# nginx -s reload -c /etc/nginx/nginx.conf
oder
# systemctl reload nginx
Wordpress-Quelle herunterladen und auf /var/www/site* platzieren
HINWEIS:Wenn Sie eine WordPress-Quelle haben, platzieren Sie sie einfach im Dokumentstammpfad, folgen Sie der Nginx-Konfiguration.
# 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*
Initial für eine neue WordPress-Installation
Greifen Sie über den Browser auf jede Site zu, die Sie mit WordPress starten möchten. Nachdem Sie Ihre Sprache ausgewählt haben, klicken Sie auf "Weiter". '-Schaltfläche
Geben Sie dann den Datenbanknamen, den Datenbankbenutzer und das Datenbankpasswort ein, um die Konfiguration für jede Site auszuführen, wie unten
Senden Sie dann Ihre Konfiguration und führen Sie die Installation aus, indem Sie auf „Installation ausführen“ klicken ' Schaltfläche.
Lesen Sie auch:
- So installieren Sie die WordPress-Befehlszeile mit WP-CLI
- So installieren Sie LEMP auf Ubuntu 18.04
Mit Nginx, Mysql und php-fpm können Sie jetzt viele WordPress-Sites auf einem Server ausführen. Nicht nur WordPress, sondern Sie können die gleichen Schritte auch für andere CMS-Quellen ausführen.
Im nächsten Artikel erklären und führen wir, wie Sie die Konfiguration von Nginx und PHP-FPM für Webserver optimieren, auf denen Nginx und PHP-FPM ausgeführt werden