Установка WordPress (Apache2)

Устанавливать WordPress будем на Devuan 3 beowulf, а в качестве web-сервера используем apache2. Про Devuan я уже писал, если вкратце это урезанный Debian без systemd, с низким потреблением ресурсов.















Подготовка веб сервера




Все действия я буду выполнять от имени root, а утилиту sudo использовать не буду.




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




WordPress для своей работы требует:




  • веб сервер (apache или nginx), в этой статье использую apache;



  • php;



  • сервер баз данных (mariadb).




Устанавливаю веб сервер apache2:




# apt install apache2




Подготавливаю две папочки, где будут находится разные экземпляры WordPress:




# mkdir /var/www/wp1
# mkdir /var/www/wp2




Подготавливаю конфигурацию для веб сервера:




# nano /etc/apache2/sites-available/wp.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/wp1"
    ServerName wp1.ru
    <Directory /var/www/wp1/>
        AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/wp2"
    ServerName wp2.ru
    <Directory /var/www/wp2/>
        AllowOverride All
    </Directory>
</VirtualHost>




Выключаю конфигурацию по умолчанию, включаю нашу конфигурацию, проверяю правильность конфигурации и перезапускаю веб сервер:




# a2dissite 000-default.conf
# a2ensite wp.conf
# apache2ctl configtest
# service apache2 restart




Устанавливаю сервер баз данных 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




Выше я создал две базы:




  • База данные wp1, пользователь wp_user1, пароль pass1;



  • База данные wp2, пользователь wp_user2, пароль pass2.




Устанавливаю php и необходимые модули:




# apt install php libapache2-mod-php php-mysql 
php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip




Укажу веб серверу искать индексную страницу index.php перед другими возможными индексными страницами:




# nano /etc/apache2/mods-enabled/dir.conf
Было:
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
Нужно сделать так:
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm




Включаю модуль rewrite для apache2, еще раз проверяю конфигурацию и перезапускаю веб сервер:




# a2enmod rewrite
# apache2ctl configtest
# service apache2 restart




Скачивание и установка WordPress




Устанавливаю утилиту curl и с её помощью скачиваю последнюю версию WordPress. Далее распаковываю скачанный архив во временную папку /tmp:




# apt install curl
# cd /tmp
# curl -O https://wordpress.org/latest.tar.gz
# tar xzvf latest.tar.gz




Создаю файл .htaccess в корне сайта, ничего туда не записываю, WordPress сам будет управлять этим файлом. htaccess — это дополнительный конфигурационный файл Apache, который позволяет настраивать работу веб-сервера для каждой отдельной директории, не влияя на глобальные настройки:




# touch /tmp/wordpress/.htaccess




Из файла образца настроек WordPress (wp-config-sample.php) с помощью копирования делаю файл настроек WordPress (wp-config.php):




# cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php




И создаю каталог для обновлений WordPress. Он будет обновляться у нас напрямую из веб-интерфейса:




# mkdir /tmp/wordpress/wp-content/upgrade




Кидаю подготовленный экземпляр WordPress в подготовленные для него директории и настраиваю права:




# 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/
# find /var/www/wp1/ -type d -exec chmod 750 {} ;
# find /var/www/wp2/ -type d -exec chmod 750 {} ;
# find /var/www/wp1/ -type f -exec chmod 640 {} ;
# find /var/www/wp2/ -type f -exec chmod 640 {} ;




Получаю ключи WordPress для первой установки, эти ключи нужно будет прописать в конфигурационный файл первого экземпляра WordPress:




# curl -s https://api.wordpress.org/secret-key/1.1/salt/




Настраиваю первый экземпляр 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');




Выше, в конфиге, я указал имя базы данных, логин и пароль для подключения к ней, а также дополнительную опцию «define(‘FS_METHOD’, ‘direct’);» для доступа к файловой системе (это необходимо для закачки обновлений WordPress). Чуть ниже нужно заменить блок ключей полученных ранее.




Получаю ключи для второго 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 apache2 restart




Добавляю на свой компьютер в файл hosts две записи, которые будут указывать на один сервер:




$ sudo nano /etc/hosts
192.168.10.92 wp1.ru
192.168.10.92 wp2.ru




Таким образом мой компьютер будет искать сайты wp1.ru и wp2.ru на моем сервере, а не в интернете. 192.168.10.92 это ip-адрес моего сервера.




Дальше открываю сайт wp1.ru в браузере и донастраиваю WordPress из веб-интерфейса. И тоже самое проделываю с сайтом wp2.ru.




Из веб интерфейса вам нужно будет указать язык сайта, имя сайта, логин/пароль админки, ваш email, после чего можно будет зайти в админку и начать настраивать сайт.



2021-07-08T12:00:00
WordPress