Устанавливать WordPress будем на Devuan 3 beowulf, а в качестве web-сервера используем nginx. Про Devuan я уже писал, если вкратце это урезанный Debian без systemd, с низким потреблением ресурсов.
Подготовка веб сервера
Все действия я буду выполнять от имени пользователя root, поэтому утилиту sudo использовать не буду.
Я покажу как установить WordPress на свой сервер, чтобы потренироваться в создании сайтов на этом движке. Я создам 2 экземпляра WordPress. На одном сервере, например можно изучать создание Интернет Магазина, а на втором создание Личного Блога. По аналогии вы можете создать третий и четвертый экземпляр.
WordPress для своей работы требует:
- веб сервер (apache или nginx) в этой статье использую nginx;
- интерпретатор php;
- сервер баз данных (mariadb).
Устанавливаем веб сервер nginx и подготавливаем две папочки в которые положим два экземпляра WordPress:
# apt install nginx # mkdir /var/www/wp1 # mkdir /var/www/wp2
Устанавливаю php. Для nginx потребуется php-fpm, для базы данных php-mysql, также потребуются дополнительные модули для работы WordPress:
# apt install php-fpm php-mysql php-curl \ php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
Перезапустим процесс php-fpm:
# service php7.3-fpm restart
Подготавливаю конфигурацию для веб сервера. Нужно создать два конфига на каждый сайт. Первый конфиг:
# nano /etc/nginx/sites-available/wp1 server { listen 80; listen [::]:80; root /var/www/wp1; index index.php index.html index.htm; server_name wp1.ru; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; allow all; } location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { expires max; log_not_found off; } }
Второй конфиг:
# nano /etc/nginx/sites-available/wp2 server { listen 80; listen [::]:80; root /var/www/wp2; index index.php index.html index.htm; server_name wp2.ru; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; allow all; } location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { expires max; log_not_found off; } }
Выше в конфигах я указываю что оба сайта работают на 80 порте, указываю корень для каждого сайта (/var/www/wp1 и /var/www/wp2), название каждого сайта (wp1.ru и wp2.ru), первая индексная страница это index.php.
Включаю данные конфигурации и выключаю дефолтную конфигурацию, проверяю все ли я сделал правильно и перезапускаю веб-сервер:
# ln -s /etc/nginx/sites-available/wp1 /etc/nginx/sites-enabled/ # ln -s /etc/nginx/sites-available/wp2 /etc/nginx/sites-enabled/ # rm /etc/nginx/sites-enabled/default # nginx -t # service nginx reload
Устанавливаю сервер баз данных mariadb, повышаю его безопасность и создаю две базы, для первого и второго экземпляра WordPress:
# apt install mariadb-server # mysql_secure_installation # mariadb > CREATE DATABASE wp1 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; > GRANT ALL ON wp1.* TO 'wp_user1'@'localhost' IDENTIFIED BY 'pass1'; > FLUSH PRIVILEGES; > CREATE DATABASE wp2 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; > GRANT ALL ON wp2.* TO 'wp_user2'@'localhost' IDENTIFIED BY 'pass2'; > FLUSH PRIVILEGES; > exit
Скачивание и установка WordPress
Устанавливаем утилиту curl и с её помощью скачиваем последнюю версию WordPress. Далее распаковываем скачанный архив:
# apt install curl # cd /tmp # curl -LO https://wordpress.org/latest.tar.gz # tar xzvf latest.tar.gz
Из файла образца настроек WordPress (wp-config-sample.php) с помощью копирования делаю файл настроек WordPress (wp-config.php):
# cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
Кидаем подготовленный экземпляр WordPress в подготовленные для сайтов каталоги и указываю в качестве владельцев каталогов пользователя www-data:
# cp -a /tmp/wordpress/. /var/www/wp1/ # cp -a /tmp/wordpress/. /var/www/wp2/ # chown -R www-data:www-data /var/www/wp1/ # chown -R www-data:www-data /var/www/wp2/
Получаем ключи WordPress для первой установки, эти ключи нужно будет прописать в конфигурационный файл первого экземпляра WordPress:
# curl -s https://api.wordpress.org/secret-key/1.1/salt/
Настраиваем первый экземпляр WordPress. В конфиге /var/www/wp1/wp-config.php указываем: имя базы данных, логин и пароль для подключения к ней. А также прописываем дополнительную опцию «define(‘FS_METHOD’, ‘direct’);» для доступа к файловой системе (это необходимо для закачки обновлений WordPress). Чуть ниже нужно заменить блок ключей полученных ранее:
# nano /var/www/wp1/wp-config.php define( 'DB_NAME', 'wp1' ); define( 'DB_USER', 'wp_user1' ); define( 'DB_PASSWORD', 'pass1' ); *** define('FS_METHOD', 'direct'); *** define('AUTH_KEY', 'Xb%XpBID` .^j 21gCx`;7h^WOZvC<ftSfwz+J0b4)AO`iXlvJc i-F=+#VU+WG'); define('SECURE_AUTH_KEY', 'QapDioP!~,9+jXLVAb6U4bh}-yl,_9e0oGsN78x#e}EEN[OWqP[u+_gTp bc{2T2'); define('LOGGED_IN_KEY', 'LGD@uBu| ix^M99$Xk8IS{V$F^F=>UcYuD6XLRCc^o}_KDw+AAo}FH<vJ,{srY*:'); define('NONCE_KEY', 'Z)NS+OGT*pvOCiO@hNu1;Ek4&_S`=;pu|Ib=(A!Ile&@J~8NT7#B<Qi!=:G!ZKG<'); define('AUTH_SALT', 'FFK3,&Y<<x $8ezvw1W=s<JEb7VZLNYP$8jq}(aGN;N5&)IN1+$@1`+xr|p<+XEC'); define('SECURE_AUTH_SALT', ' VfhKo(Jc3a@+=JT,?MX56-$7C+Nw|Or*SZFP--Mu`6(-Dr0%PNcsS+DsZNBU,K_'); define('LOGGED_IN_SALT', '1-?IEmYy6EmS<s|rf`M(`Q42g7-bFNB&|^$ ?nFXt`C,NFi9.(S5-{w@c9;1]vJK'); define('NONCE_SALT', '-E[D1.4hGU5a}xqAHA]OH!Z-o@eJ_3.g%6XbAFv^TjbteS-`Yide,+(~?otZ`,GW');
Получаем ключи для второго экземпляра WordPress:
# curl -s https://api.wordpress.org/secret-key/1.1/salt/
Настраиваем второй экземпляр WordPress:
# nano /var/www/wp2/wp-config.php define( 'DB_NAME', 'wp2' ); define( 'DB_USER', 'wp_user2' ); define( 'DB_PASSWORD', 'pass2' ); *** define('FS_METHOD', 'direct'); *** define('AUTH_KEY', 'Xb%XpBID` .^j 21gCx`;7h^WOZvC<ftSfwz+J0b4)AO`iXlvJc i-F=+#VU+WG'); define('SECURE_AUTH_KEY', 'QapDioP!~,9+jXLVAb6U4bh}-yl,_9e0oGsN78x#e}EEN[OWqP[u+_gTp bc{2T2'); define('LOGGED_IN_KEY', 'LGD@uBu| ix^M99$Xk8IS{V$F^F=>UcYuD6XLRCc^o}_KDw+AAo}FH<vJ,{srY*:'); define('NONCE_KEY', 'Z)NS+OGT*pvOCiO@hNu1;Ek4&_S`=;pu|Ib=(A!Ile&@J~8NT7#B<Qi!=:G!ZKG<'); define('AUTH_SALT', 'FFK3,&Y<<x $8ezvw1W=s<JEb7VZLNYP$8jq}(aGN;N5&)IN1+$@1`+xr|p<+XEC'); define('SECURE_AUTH_SALT', ' VfhKo(Jc3a@+=JT,?MX56-$7C+Nw|Or*SZFP--Mu`6(-Dr0%PNcsS+DsZNBU,K_'); define('LOGGED_IN_SALT', '1-?IEmYy6EmS<s|rf`M(`Q42g7-bFNB&|^$ ?nFXt`C,NFi9.(S5-{w@c9;1]vJK'); define('NONCE_SALT', '-E[D1.4hGU5a}xqAHA]OH!Z-o@eJ_3.g%6XbAFv^TjbteS-`Yide,+(~?otZ`,GW');
Перезагружаем последний раз веб сервер:
# service nginx restart
Добавляем на свой компьютер в файл hosts две записи, которые будут указывать на один сервер. Если у вас Windows то редактируем C:\Windows\System32\drivers\etc\hosts. А если Linux то — /etc/hosts:
# nano /etc/hosts 192.168.10.92 wp1.ru 192.168.10.92 wp2.ru
Таким образом мой компьютер будет искать сайты wp1.ru и wp2.ru по ip адресу моего сервера — 192.168.10.92.
Дальше открываем сайт wp1.ru в браузере и донастраиваю WordPress из веб-интерфейса. И тоже самое проделываем с сайтом wp2.ru.
В веб интерфейсе вам нужно будет указать язык сайта, имя сайта, логин/пароль админки, ваш email, после чего можно будет зайти в админку и начать настраивать сайт.