Установка двух экземпляров WordPress на 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.
Если понравилась статья, подпишись на мой канал в VK или Telegram .