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