Установка двух экземпляров WordPress на Apache 2

В этой статье я покажу как установить несколько экземпляров WordPress на физический или виртуальный сервер Debian 13. А в качестве web-сервера будем использовать Apache 2.

Введение

Перед разворачиванием боевого WordPress, хочется с ним познакомится поближе. Для этого его можно развернуть у себя на виртуалке или на физическом сервере. В этой статье я показываю, как можно установить 2 экземпляра WordPress на одном сервере Debian 13. Например, на первом можно изучать создание Интернет Магазина, а на втором создание Личного Блога. По аналогии вы можете создать третий и четвертый экземпляр.

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

  • веб сервер (Apache 2 или Nginx), в этой статье мы будем использовать Apache 2;
    • дли использования Nginx у меня есть отдельная статья ;
  • интерпретатор языка PHP;
  • сервер баз данных MariaDB.

Все команды в статье выполняются от пользователя с правами sudo.

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

Обновим кеш пакетов и устанавливаем Apache 2:

sudo apt update && \
  sudo apt install apache2

Подготавливаем каталоги для разных экземпляров WordPress:

sudo mkdir /var/www/{wp1,wp2}

Подготавливаем конфигурацию Apache 2:

sudo 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>
  • Параметр AllowOverride All позволяет WordPress использовать .htaccess для настройки постоянных ссылок.

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

sudo a2dissite 000-default.conf && \
  sudo a2ensite wp.conf && \
  sudo apache2ctl configtest && \
  sudo systemctl restart apache2

Убедимся, что служба Apache 2 успешно запустилась:

sudo systemctl status apache2

Устанавливаем MariaDB:

sudo apt install mariadb-server

Убедимся, что служба MariaDB успешно запустилась:

sudo systemctl status mariadb

Выполняем базовую настройку безопасности MariaDB:

sudo mariadb-secure-installation

Подключаемся к консоли MariaDB:

sudo mariadb

В консоли создаём две базы, для первого и второго экземпляра WordPress:

CREATE DATABASE wp1 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON wp1.* TO 'wp_user1'@'localhost' IDENTIFIED BY 'pass1';
FLUSH PRIVILEGES;
CREATE DATABASE wp2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON wp2.* TO 'wp_user2'@'localhost' IDENTIFIED BY 'pass2';
FLUSH PRIVILEGES;
exit
  • База данных wp1, пользователь wp_user1, пароль pass1;
  • База данных wp2, пользователь wp_user2, пароль pass2.

В реальной эксплуатации используйте сложные пароли вместо pass1 и pass2.

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

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

Выполним проверку версии PHP:

php -v

Вы должны увидеть что-то вроде этого:

PHP 8.4.21 (cli) (built: May  8 2026 05:56:48) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.4.21, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.21, Copyright (c), by Zend Technologies

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

sudo nano /etc/apache2/mods-enabled/dir.conf
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

Включаем модуль rewrite для Apache 2, еще раз проверяем и перезапускаем:

sudo a2enmod rewrite && \
  sudo apache2ctl configtest && \
  sudo systemctl restart apache2

Кстати, если у вас будут ошибки, можете смотреть логи: sudo tail -f /var/log/apache2/error.log - ошибки веб-сервера Apache 2; sudo journalctl -f -u mariadb - логи сервера баз данных MariaDB.

Установка WordPress

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

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

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

touch /tmp/wordpress/.htaccess

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

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

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

mkdir /tmp/wordpress/wp-content/upgrade

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

sudo cp -a /tmp/wordpress/. /var/www/wp1
sudo cp -a /tmp/wordpress/. /var/www/wp2
sudo chown -R www-data:www-data /var/www/wp1/
sudo chown -R www-data:www-data /var/www/wp2/
sudo find /var/www/wp1/ -type d -exec chmod 750 {} \;
sudo find /var/www/wp2/ -type d -exec chmod 750 {} \;
sudo find /var/www/wp1/ -type f -exec chmod 640 {} \;
sudo find /var/www/wp2/ -type f -exec chmod 640 {} \;

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

curl -s https://api.wordpress.org/secret-key/1.1/salt/
sudo 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',         ' ');
define('SECURE_AUTH_KEY',  ' ');
define('LOGGED_IN_KEY',    ' ');
define('NONCE_KEY',        ' ');
define('AUTH_SALT',        ' ');
define('SECURE_AUTH_SALT', ' ');
define('LOGGED_IN_SALT',   ' ');
define('NONCE_SALT',       ' ');

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

Получаем ключи для второго WordPress:

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

Настраиваем второй экземпляр WordPress:

sudo 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',         ' ');
define('SECURE_AUTH_KEY',  ' ');
define('LOGGED_IN_KEY',    ' ');
define('NONCE_KEY',        ' ');
define('AUTH_SALT',        ' ');
define('SECURE_AUTH_SALT', ' ');
define('LOGGED_IN_SALT',   ' ');
define('NONCE_SALT',       ' ');

Перезагружаем Apache 2:

sudo systemctl restart apache2

Настройка hosts для доступа к сайтам

Для доступа к вашим экземплярам WordPress вы должны на своём компьютере в файле hosts прописать две записи, которые будут указывать на ваш сервер.

Этот файл лежит:

  • /etc/hosts - если у вас Linux.
  • C:\Windows\System32\drivers\etc\hosts - если у вас Windows.

В моём случае ip-адрес сервера 192.168.0.10 и записи будут такими:

192.168.0.10 wp1.ru
192.168.0.10 wp2.ru

Таким образом ваш компьютер будет искать сайты wp1.ru и wp2.ru на вашем сервере, а не в Интернете.

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

Из веб интерфейса вам нужно будет указать:

  • язык сайта,
  • имя сайта,
  • логин/пароль админки,
  • ваш email.

Первоначальная настройка WordPress

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


Если понравилась статья, подпишись на мой канал в  VK  или  Telegram .