WordPress установка · 5 min read · Feb 01, 2026

Установка WordPress 5 с Apache на Debian 9

Этот учебник покажет вам, как установить и настроить последнюю версию WordPress 5 на стек LAMP в Debian 9 - Stretch. WordPress, без сомнения, является одной из самых популярных систем управления контентом с открытым исходным кодом или CMS, используемой в наши дни для интернет-публикаций, которая управляет более чем 60 миллионами веб-сайтов по всему миру, будь то небольшие блоги или известные крупные бренды. Основанный на PHP и MySQL, WordPress часто ассоциируется с коллекцией LAMP, установленной на выделенных серверах, виртуальных частных серверах или на общих веб-хостинг-провайдерах. Акроним LAMP описывает коллекцию программного обеспечения, также известную как программный пакет, который обычно состоит из Linux - ядра с открытым исходным кодом, независимо от выбранного дистрибутива, Apache HTTP-сервера, который является одним из самых популярных веб-серверов с открытым исходным кодом в интернете благодаря своей стабильности, гибкости и производительности, PHP - интерпретируемого языка программирования на стороне сервера и MariaDB - системы управления реляционными базами данных (СУБД), которая является одним из самых популярных программных обеспечений для баз данных, форкнутым и одновременно разрабатываемым сообществом с открытым исходным кодом из оригинального MySQL.

Требования

  • Чистая установка операционной системы Debian 9 на виртуальном частном сервере или виртуальной машине или непосредственно на выделенной машине.
  • SSH-доступ для удаленного доступа в случае VPS или удаленного сервера или прямой доступ к консоли.
  • По крайней мере, статический IP-адрес для сетевого интерфейса, настроенного на сервере.
  • В случае, если веб-страница должна быть общедоступной в интернете, вам потребуется зарегистрированное публичное доменное имя с правильно настроенными DNS-записями. В ходе этого учебника мы будем использовать example.com в качестве примера домена и статический IP-адрес из частного пространства, в NAT, за основным маршрутизатором. Домен будет доступен из интернета через переадресацию портов Apache 80 и 443 с стороны маршрутизатора на внутреннюю локальную сеть виртуальной машины.

Установка программного пакета LAMP

Первое, что вы хотите сделать перед началом установки всех компонентов LAMP, это войти на сервер Debian 9 и выполнить процедуру обновления для всех компонентов системы, таких как обновления ядра, обновления пакетов или патчи безопасности, выполнив следующие команды с правами root.

apt-get update
apt-get upgrade
apt-get dist-upgrade

На следующем этапе вы должны настроить имя вашей машины, заменив переменную hostname на ваше собственное описательное имя, выполнив команду ниже. Обратите внимание, что вам может понадобиться перезагрузить систему, чтобы применить новое имя хоста соответственно.

hostnamectl set-hostname hostname.yourdomain.com

Вам также следует установить следующие утилиты, которые пригодятся позже для различных проблем с устранением неполадок.

apt install net-tools sudo wget curl bash-completion

После применения имени хоста машины снова войдите с правами root и установите Apache HTTP-сервер, который по умолчанию предварительно скомпилирован в бинарный пакет и предоставляется репозиториями Debian 9.

apt install apache2

Затем установите последнюю версию интерпретатора языка PHP и все необходимые модули, необходимые для веб-сервера Apache для развертывания CMS WordPress, выполнив следующую команду.

apt install libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-xml php7.0-curl php7.0-mbstring php7.0-mcrypt php7.0-xmlrpc

Последним компонентом, который сейчас отсутствует для завершения стека LAMP, является сервер баз данных MariaDB. Выполните следующую команду, чтобы установить сервер MariaDB вместе с модулем PHP, необходимым для доступа к базе данных с веб-сервера Apache.

apt install php7.0-mysql mariadb-server mariadb-client

После установки базы данных MariaDB запустите демон и защитите базу данных, запустив скрипт mysql_secure_installation, как показано в следующем отрывке. В основном отвечайте да на все вопросы, которые скрипт вам задает. Также убедитесь, что вы выбрали надежный пароль для учетной записи root. Обратите внимание, что учетная запись root MySQL не идентична учетной записи root Linux. Первая используется только для управления базой данных MariaDB, а вторая - это суперпользовательская учетная запись в каждой системе Linux. Эти учетные записи никогда не пересекаются в системе.

systemctl start mariadb
mysql_secure_installation
*ПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MariaDB  
      СЕРВЕРОВ В ПРОИЗВОДСТВЕ!  ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ЧИТАЙТЕ КАЖДЫЙ ШАГ!  
   
Чтобы войти в MariaDB и защитить ее, нам нужен текущий  
пароль для пользователя root.  Если вы только что установили MariaDB, и  
вы еще не установили пароль root, пароль будет пустым,  
поэтому вам просто нужно нажать Enter здесь.  
   
Введите текущий пароль для root (нажмите Enter для отсутствия):  
OK, успешно использован пароль, продолжаем...  
   
Установка пароля root гарантирует, что никто не сможет войти в MariaDB  
пользователем root без надлежащей авторизации.  
**Установить пароль root? [Y/n] y  
Новый пароль:  
Повторите новый пароль:  
Пароль успешно обновлен!  
Перезагрузка таблиц привилегий..  
 ... Успех!  
По умолчанию установка MariaDB имеет анонимного пользователя, позволяя любому  
войти в MariaDB, не имея учетной записи пользователя, созданной для  
них.  Это предназначено только для тестирования и для того, чтобы установка  
проходила немного легче.  Вам следует удалить их перед переходом в  
производственную среду.  
**Удалить анонимных пользователей? [Y/n] y  
 ... Успех!  
Обычно root должен иметь возможность подключаться только с 'localhost'.  Это  
гарантирует, что кто-то не сможет угадать пароль root из сети.  
Запретить удаленный вход root? [Y/n] y  
 ... Успех!  
По умолчанию MariaDB поставляется с базой данных с именем 'test', к которой любой может  
иметь доступ.  Это также предназначено только для тестирования и должно быть удалено  
перед переходом в производственную среду.  
**Удалить тестовую базу данных и доступ к ней? [Y/n] y  
 - Удаление тестовой базы данных...  
 ... Успех!  
 - Удаление привилегий на тестовую базу данных...  
 ... Успех!  
Перезагрузка таблиц привилегий обеспечит, что все изменения, сделанные до сих пор,  
вступят в силу немедленно.  
**Перезагрузить таблицы привилегий сейчас? [Y/n] y  
 ... Успех!  
Очистка...  
Готово!  Если вы завершили все вышеперечисленные шаги, ваша установка MariaDB  
должна быть теперь защищена.  
**Спасибо за использование MariaDB!*  

Мы еще не закончили с защитой базы данных MariaDB. По умолчанию вы можете войти в MariaDB с localhost с учетной записью root без запроса пароля. Чтобы предотвратить возможные проблемы с безопасностью, войдите в базу данных с пользователем root и выполните следующие команды.

mysql -u root -p
MariaDB> use mysql;
MariaDB> update user set plugin='' where User='root';
MariaDB> flush privileges;
MariaDB> quit

Удалить плагин у пользователя root MySQL

Теперь протестируйте базу данных, попробовав войти с учетной записью root без пароля. Вам должно быть отказано в доступе к базе данных MariaDB.

На следующем этапе мы включим и настроим модули TLS и переписывания для веб-сервера Apache, которые по умолчанию отключены. Выполните команды ниже, чтобы включить оба модуля.

a2enmod rewrite ssl
a2ensite default-ssl.conf

Затем откройте конфигурационные файлы Apache для обоих включенных сайтов и добавьте следующий блок под директивой DocumentRoot, как показано на следующем скриншоте.

nano /etc/apache2/sites-enabled/000-default.conf
nano /etc/apache2/sites-enabled/default-ssl.conf

В обоих конфигурационных файлах добавьте следующий блок кода:

*      
       Options Indexes FollowSymLinks MultiViews  
       AllowOverride All  
       Require all granted  
    *

Предоставить доступ к каталогу /var/www/html и разрешить переопределения

В конфигурационном файле Apache default-ssl.conf вы также можете добавить нижеуказанное содержимое, если оно не существует, чтобы улучшить безопасность протокола SSL Apache. Эти строки кода должны исправить общие уязвимости SSL.

*SSLProtocol all -SSLv2 -SSLv3  
*# Добавить шифр SSL в одной длинной строке  
*SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA*  
*SSLHonorCipherOrder     on*  
*SSLOptions +StrictRequire*  
* *  
*Header always set Strict-Transport-Security 
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.