Представьте себе, что если у вас только один сервер, но 2 или более сайтов WordPress, вы считаете, что вам нужно больше серверов для запуска каждого сайта WordPress.

Все в порядке, но как насчет того, если у вас нет больших затрат на обслуживание многих серверов.

В этой статье будет показано, как запустить несколько веб-сайтов WordPress на одном хост-сервере, используя Nginx + Mariadb + php-fpm на Ubuntu 18.04 LTS.

Предпосылки

1) Nginx для веб-сервера

2) MariaDB для базы данных mysql

3) php-fpm для php FastCGI Process Manage

Эта команда обновит вашу систему и добавит новый репозиторий для пакетов php

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

Установите Nginx, Mariadb и php-fpm

Установите Nginx, Mariadb и php-fpmWe установите Webserver Nginx, сервер mysql Mariadb и php7-fpm, а также расширение php7, необходимое для запуска сайта 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

Настройте сервер Mariadb

Для обновления сервера баз данных нам нужна конфигурация для пароля пользователя mysql и других параметров

Эта команда запускается в режиме мастера, просто ответьте на вопрос и примените ее с помощью команды «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 готов обслуживать службу базы данных

# 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

Замените «password» на свой пароль, который вы вводите на предыдущем шаге

# 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 не поддерживает запуск php, например mod_php в Apache.

Поэтому нам нужно установить (мы это сделали) и настроить php-fpm-демон, поддерживающий запуск исходного кода php

Отредактируйте файл /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, с именами:

– site1.example.com
– site2.example.com
– site3.example.com

Создайте базу данных

Мы создадим db для site1, site2, site3 и предоставим пользователю права для этих баз данных

site1.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

Сделайте то же самое действие для site2 и site3

Затем у нас будет 3 новых файла конфигурации в /etc/nginx/sites-available /.

Вы можете посмотреть их, чтобы проверить конфигурацию с использованием команды cat

#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 (параметр «root» в блоке server {}) и иметь владельца www-data

Если вы хотите изменить корневой каталог документа, просто измените параметр «root» в конфигурации nginx и создайте тот же путь.

# 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

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

или

# systemctl reload nginx

Скачайте исходники worpdress и поместите их в  /var/www/site*

ПРИМЕЧАНИЕ. Если у вас есть исходники wordpress, просто поместите его в корневой путь документа, следуя настройке 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*

Начальная установка wordpress

Доступ к каждому сайту, который вы хотите запустить WordPress, используя браузер.

Выбрав свой язык, нажмите кнопку «Продолжить»

Затем заполните имя базы данных, пользователя базы данных, пароль базы данных для запуска конфигурации для каждого сайта, например, ниже

Затем отправьте конфигурацию и «запустите установку», нажав кнопку «Запустить установку».

Поделитесь статьей:

Добавить комментарий