Představte si, že pokud máte pouze jeden server, ale 2 nebo více webů WordPress, myslíte si, že ke spuštění každého webu wordpress na něm potřebujete více serverů. To je v pořádku, ale co takhle, když nemáte velké náklady na údržbu mnoha serverů.
Tento článek vám ukáže, jak spustit více webových stránek WordPress na jednom hostitelském serveru pomocí Nginx + Mariadb + php-fpm na Ubuntu 18.04 LTS.
Předpoklady
1) Nginx pro webový server
2) Mariadb pro databázi mysql
3) php-fpm pro php FastCGI Process Manager
Níže uvedený příkaz aktualizuje váš systém a přidá nové úložiště pro balíčky php
# apt-get update
# apt-get install software-properties-common
# add-apt-repository ppa:ondrej/php
Nainstalujte Nginx, Mariadb a php-fpm
Nainstalujeme Webserver Nginx, mysql server Mariadb a php7-fpm a také rozšíření php7 potřebné pro provoz webu 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
Konfigurace serveru Mariadb
Pro obnovení instalace databázového serveru potřebujeme konfiguraci pro heslo root mysql a další možnosti
Tento příkaz běží v režimu průvodce, stačí odpovědět na otázku a použít ji pomocí '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!
Zkontrolujte službu Mariadb a povolte službu při spouštění
Ujistěte se, že mariadb-server běží, a potvrďte všechna nastavení, která jste provedli v předchozích krocích.
Pokud nejsou žádné chyby, Mariadb-server je připraven sloužit databázové službě
# 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
Nahraďte „heslo“ svým heslem, které jste zadali v předchozím kroku
# 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)]>
Vypadá dobře, nyní povolte službu mysql při spouštění
# systemctl enable mariadb
Konfigurace php-fpm
Nginx nepodporuje spouštění php jako mod_php v Apache.
Potřebujeme tedy nainstalovat (udělali jsme to) a nakonfigurovat démona php-fpm, který podporuje spouštění zdrojového kódu php
Upravte soubor /etc/php/7.0/fpm/php.ini s některými parametry jako níže
# 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
Zkontrolujte konfigurační soubor fondu php-fpm /etc/php/7.0/fpm/pool.d/www.conf
Ujistěte se, že tato konfigurace má, ponechte výchozí ostatní možnosti, pokud vám to vůbec nejde:
user = www-data
group = www-data
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data
Nyní stačí restartovat démona php-fpm a zkontrolovat stav, poté povolit službu při spouštění
# systemctl restart php7.0-fpm
# systemctl status php7.0-fpm
# systemctl enable php7.0-fpm
Vytvořte více stránek wordpress
Máme například 3 weby wordpress, název:
- site1.example.com
- site2.example.com
- site3.example.com
Vytvořit databázi
Vytvoříme db pro web1, web2, web3 a přidělíme uživatelům db pro tyto databáze
site1.example.com spustí databázi s názvem 'site1' s uživatelem databáze '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;"
Proveďte stejnou akci pro databázi site1, site2, nahraďte 'site1' za site2, site3. Pokud chcete, nahraďte uživatelské heslo db
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;"
Vytvořte konfigurační soubor nginx pro každý web
Pokaždé, když chcete přidat nový web, stačí přidat nový blok serveru pro daný web
# 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
Proveďte stejnou akci pro web2 a web3
Poté budeme mít 3 nové konfigurační soubory v /etc/nginx/sites-available/. Můžete zkontrolovat a ověřit konfigurační pozici cat příkaz
#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;
}
}
Vytvořte kořen dokumentu pro každý web
POZNÁMKA :Kořenová cesta dokumentu musí být stejná v konfiguraci Nginx (parametr 'root' v bloku serveru{}) a vlastníkem je www-data
Pokud chcete změnit kořenový adresář dokumentu, stačí změnit volbu 'root' v konfiguraci nginx a vytvořit stejnou cestu.
# mkdir -p /var/www/site{1,2,3}
# chown -R www-data:www-data /var/www/site*
Povolte konfiguraci nginx pro každý web a zkontrolujte konfiguraci
Protože ve výchozím nastavení Nginx čte konfiguraci pouze v /etc/nginx/sites-enabled/
Pokud tedy chcete Nginx přečíst konfiguraci v /etc/nginx/sites-available/
Jednoduše vytvořte symbolický odkaz, jako je tento:
# 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
Poté ověřte konfiguraci Nginx spuštěním tohoto příkazu:
# 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
Konfigurace vypadá dobře, znovu načtěte démona Nginx
# nginx -s reload -c /etc/nginx/nginx.conf
nebo
# systemctl reload nginx
Stáhněte si zdroj a umístění wordpressu do /var/www/site*
POZNÁMKA:Pokud máte zdroj wordpress, stačí jej umístit do kořenové cesty dokumentu podle konfigurace 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*
Iniciála pro novou instalaci wordpress
Ke každému webu, na kterém chcete spustit WordPress, přistupte pomocí prohlížeče. Po výběru jazyka klikněte na 'Pokračovat tlačítko '
Poté vyplňte název databáze, uživatele databáze, heslo databáze pro spuštění konfigurace pro každý web, jak je uvedeno níže
Poté odešlete konfiguraci a kliknutím na možnost Spustit instalaci spusťte instalaci '.
Přečtěte si také:
- Jak nainstalovat příkazový řádek WordPress pomocí WP-CLI
- Jak nainstalovat LEMP na Ubuntu 18.04
Nyní, s Nginx, Mysql a php-fpm, můžete provozovat mnoho stránek WordPress na jednom serveru. Nejen WordPress, ale také můžete udělat stejné kroky pro jiný zdroj cms.
V příštím článku vysvětlíme a provedeme optimalizaci nginx, konfigurace php-fpm pro webový server se systémem Nginx a php-fpm