如何在 Ubuntu 18.04 上使用 Nginx 安裝多個 WordPress

想像一下,如果您只有一台服務器但有 2 個或更多 WordPress 站點,您認為您需要更多的服務器來在其上運行每個 wordpress 站點。 這很好,但是如果您沒有很多成本來維護許多服務器呢?

本文將向您展示如何在一台主機服務器上運行多個 WordPress 網站,在 Ubuntu 18.04 LTS 上使用 Nginx + Mariadb + php-fpm。

先決條件

1) 用於網絡服務器的 Nginx

2) Mariadb for mysql 數據庫

3) php-fpm for php FastCGI Process Manager

下面的命令將更新您的系統並為 php 包添加新的存儲庫

# apt-get update
# apt-get install software-properties-common 
# add-apt-repository ppa:ondrej/php

安裝 Nginx、Mariadb 和 php-fpm

我們將安裝 Webserver Nginx、mysql 服務器 Mariadb 和 php7-fpm 以及運行 WordPress 站點所需的 php7 擴展

# 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 服務器

對於刷新數據庫服務器安裝,我們需要配置mysql root密碼和其他選項

此命令在嚮導模式下運行,只需回答問題並通過 ‘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 服務並在啟動時啟用服務

確保 mariadb-server 正在運行並確認您在前面的步驟中所做的所有設置。

如果沒有錯誤,Mariadb-server 準備服務數據庫服務

# 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

用您在上一步中輸入的密碼替換“密碼”

# 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)]>

看起來不錯,現在在啟動時啟用mysql服務

# systemctl enable mariadb

配置 php-fpm

Nginx 不支持像 mod_php 那樣運行 php Apache.

所以我們需要安裝(我們做到了)和配置支持運行 php 源代碼的 php-fpm 守護進程

使用如下參數編輯文件 /etc/php/7.0/fpm/php.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

檢查 php-fpm 池配置文件 /etc/php/7.0/fpm/pool.d/www.conf

確保此配置具有,如果您根本不擅長,請保留默認的其他選項:

user = www-data
group = www-data
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data

現在只需重新啟動 php-fpm 守護進程並檢查狀態,然後在啟動時啟用服務

# systemctl restart php7.0-fpm
# systemctl status php7.0-fpm
# systemctl enable php7.0-fpm

創建多個wordpress站點

例如,我們有 3 個 wordpress 站點,名稱:

– 站點 1。example。和
– 站點 2。example。和
– 站點 3。example。和

創建數據庫

我們將為 site1、site2、site3 創建 db 並為這些數據庫授予 db 用戶

站點 1。example.com 將運行數據庫名稱 ‘site1’,數據庫用戶為 ‘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;"

對 site1、site2 數據庫執行相同操作,將 ‘site1’ 替換為 site2、site3。 如果需要,請替換數據庫用戶密碼

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配置文件

每次要添加新站點時,只需為該站點添加新的服務器塊

# 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

做同樣的動作 站點 2站點 3

然後我們將在 /etc/nginx/sites-available/ 中有 3 個新的配置文件。 您可以檢查以驗證配置托架 命令

#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;
}
}

為每個站點創建文檔根目錄

筆記: 文件根路徑 Nginx 配置中必須相同 (server{} 塊中的參數“root”)並且擁有者是 www-data

如果要更改文檔根目錄,只需更改 nginx 配置中的 ‘root’ 選項並創建相同的路徑。

# mkdir -p /var/www/site{1,2,3}
# chown -R www-data:www-data /var/www/site*

為每個站點啟用 nginx 配置並檢查配置

因為默認 Nginx 只讀取配置 /etc/nginx/sites-enabled/

所以如果你想在 Nginx 中讀取配置 /etc/nginx/sites-available/

只需簡單地創建一個符號鏈接,如下所示:

# 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

然後通過運行以下命令驗證 Nginx 配置:

# 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

看配置不錯,重裝Nginx daemon

# nginx -s reload -c /etc/nginx/nginx.conf

或者

# systemctl reload nginx

下載 wordpress 源代碼並放置到 /var/www/site*

注意:如果您已經存在 wordpress 源代碼,只需將其放置到文檔根路徑中並遵循 nginx 配置。

# cd /tmp
# wget https://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*

新 wordpress 安裝的初始值

使用瀏覽器訪問要初始化 WordPress 的每個站點。 選擇語言後,單擊“繼續‘ 按鈕

然後填寫數據庫名稱,數據庫用戶,數據庫密碼以運行每個站點的配置,如下所示

然後提交您的配置並通過單擊“運行安裝”運行安裝‘ 按鈕。

另請閱讀:

  • 如何使用 WP-CLI 安裝 WordPress 命令行
  • 如何在 Ubuntu 18.04 上安裝 LEMP

現在,使用 Nginx、Mysql 和 php-fpm,您可以在一台服務器上運行多個站點 WordPress。 不僅 WordPress,您還可以對其他 cms 源執行相同的步驟。

下一篇,我們將講解和指導如何為運行Nginx和php-fpm的web服務器優化nginx、php-fpm配置