Устанавливать 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, после чего можно будет зайти в админку и начать настраивать сайт.

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

Ваш адрес email не будет опубликован.