Сервер LAMP · 11 min read · Dec 28, 2025

Учебник по серверу LAMP на Ubuntu 16.04 (LTS) с Apache, PHP 7 и MySQL

LAMP — это сокращение от L инукс, A pache, M ySQL, P HP. Этот учебник показывает, как установить веб-сервер Apache на сервере Ubuntu 16.04 LTS (Xenial Xerus) с поддержкой PHP 7 (mod_php) и MySQL / MariaDB, а также как настроить SSL-сертификат с помощью Let’s Encrypt. Кроме того, я установлю PHPMyAdmin, чтобы упростить администрирование MySQL. Настройка LAMP является отличной основой для популярных CMS, таких как Joomla, Wordpress или Drupal.

Предварительная заметка

В этом учебнике я буду использовать имя хоста server1.example.com с IP-адресом 192.168.1.100. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их, где это необходимо.

Я рекомендую использовать минимальную настройку сервера Ubuntu в качестве основы для учебника, это может быть виртуальный или корневой образ сервера с минимальной установкой Ubuntu 16.04 от веб-хостинг-компании, или вы можете использовать наш учебник по минимальному серверу, чтобы установить сервер с нуля.

Я выполняю все шаги в этом учебнике с правами root, поэтому убедитесь, что вы вошли как root:

sudo su

1. Установка базы данных MySQL или MariaDB

В настоящее время доступны две широко используемые системы баз данных MySQL: классический сервер “MySQL”, который разрабатывается Oracle и доступен в версии 5.7, и форк MySQL под названием MariaDB, который разрабатывается оригинальным разработчиком MySQL Монти Уидениусом.

Я покажу вам, как установить оба варианта ниже. Просто следуйте либо главе 1.1, либо 1.2, но не обеим. Я буду использовать MySQL 5.7 для образа виртуальной машины, который можно скачать с Howtoforge.

1.1 Установка MySQL 5.7

Чтобы установить MySQL 5.7, выполните эту команду:

apt-get -y install mysql-server mysql-client

Пакеты mysql-server и mysql-client являются так называемыми “мета-пакетами”, они всегда устанавливают последнюю доступную версию MySQL из Ubuntu. Последняя версия в настоящее время — MySQL 5.7.

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

mysql_secure_installation

Вам будут заданы следующие вопросы:

Securing the MySQL server deployment.
Enter password for user root: <-- Введите пароль root для MySQL
VALIDATE PASSWORD PLUGIN can be used to test passwords  
and improve security. It checks the strength of password  
and allows the users to set only those passwords which are  
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:  
Using existing password for root.  
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Выберите 'y' здесь, если хотите включить проверку пароля, мне эта функция не нужна, поэтому я выбираю 'n' здесь.
... skipping.  
By default, a MySQL installation has an anonymous user,  
allowing anyone to log into MySQL without having to have  
a user account created for them. This is intended only for  
testing, and to make the installation go a bit smoother.  
You should remove them before moving into a production  
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y  
Success.

Normally, root should only be allowed to connect from  
'localhost'. This ensures that someone cannot guess at  
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y  
Success.
By default, MySQL comes with a database named 'test' that  
anyone can access. This is also intended only for testing,  
and should be removed before moving into a production  
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <-- y  
- Dropping test database...  
Success.
- Removing privileges on test database...  
Success.
Reloading the privilege tables will ensure that all changes  
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y  
Success.
All done!

Настройка MySQL теперь защищена.

1.2 Установка MariaDB 10

Выполните следующую команду для установки MariaDB-server и клиента:

apt-get -y install mariadb-server mariadb-client

Теперь мы установим пароль root для MariaDB.

mysql_secure_installation

Вам будут заданы следующие вопросы:

Enter current password for root (enter for none): <-- нажмите enter  
Set root password? [Y/n] <-- y  
New password: <-- Введите новый пароль root для MariaDB здесь  
Re-enter new password: <-- Повторите пароль  
Remove anonymous users? [Y/n] <-- y  
Disallow root login remotely? [Y/n] <-- y  
Reload privilege tables now? [Y/n] <-- y

Проверьте вход в MariaDB с помощью команды “mysql”

mysql -u root -p

и введите пароль root для MariaDB, который вы установили выше. Результат должен быть похож на скриншот ниже:

Вход в MariaDB на Ubuntu 16.04.

Чтобы выйти из оболочки MariaDB, введите команду “quit” и нажмите enter.

2. Установка веб-сервера Apache

Apache 2 доступен как пакет Ubuntu, поэтому мы можем установить его следующим образом:

apt-get -y install apache2

Теперь направьте ваш браузер на http://192.168.1.100, и вы должны увидеть страницу по умолчанию Apache2 (Работает!):

Корневая директория по умолчанию для apache — /var/www/html на Ubuntu, а основной файл конфигурации — /etc/apache2/apache2.conf. Система конфигурации полностью документирована в /usr/share/doc/apache2/README.Debian.gz.

3. Установка PHP 7

Мы можем установить PHP 7 и модуль PHP для Apache следующим образом:

apt-get -y install php7.0 libapache2-mod-php7.0

Затем перезапустите Apache:

systemctl restart apache2

4. Тестирование PHP и получение информации о вашей установке PHP

Корневая директория по умолчанию для веб-сайта — /var/www/html. Теперь мы создадим небольшой PHP-файл (info.php) в этой директории и вызовем его в браузере. Файл отобразит много полезной информации о нашей установке PHP, такой как установленная версия PHP.

nano /var/www/html/info.php

Затем измените владельца файла info.php на пользователя и группу www-data.

chown www-data:www-data /var/www/html/info.php

Теперь мы вызовем этот файл в браузере (например, http://192.168.1.100/info.php):

Вывод PHPINFO от PHP 7.

Как вы видите, PHP 7.0 работает, и он работает через обработчик Apache 2.0, как показано в строке Server API. Если вы прокрутите дальше вниз, вы увидите все модули, которые уже включены в PHP5. MySQL там не указан, что означает, что у нас еще нет поддержки MySQL / MariaDB в PHP.

5. Получение поддержки MySQL / MariaDB в PHP

Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php7.0-mysql. Также разумно установить некоторые другие модули PHP, так как они могут понадобиться для ваших приложений. Вы можете искать доступные модули PHP следующим образом:

apt-cache search php7.0

Выберите те, которые вам нужны, и установите их следующим образом:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

Теперь перезапустите Apache2:

systemctl restart apache2

PHP с поддержкой MySQL / MariaDB.

PHP 7 теперь имеет поддержку MySQL / MariaDB, как показано в phpinfo() выше.

6. Установка кэша PHP Opcache + APCu для ускорения PHP

PHP 7 поставляется с встроенным кэшем опкодов для кэширования и оптимизации промежуточного кода PHP, он называется ‘opcache’ и доступен в пакете php7.0-opcache. Настоятельно рекомендуется установить Opcache для ускорения вашей PHP-страницы. Кроме opcache, я установлю APCu, который является совместимым оберткой для opcache, чтобы предоставить функции кэша APC, часто используемой в версиях PHP 5.x, и многие CMS все еще используют его.

Opcache и APCu можно установить следующим образом:

apt-get -y install php7.0-opcache php-apcu

Не беспокойтесь, если будет показано, что Opcache уже установлен.

Теперь перезапустите Apache:

systemctl restart apache2

Теперь перезагрузите http://192.168.1.100/info.php в вашем браузере и прокрутите вниз до раздела модулей снова. Вы должны теперь найти много новых модулей там:

APCu установлен в PHP.

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

rm -f /var/www/html/info.php

7. Включение SSL-сайта в apache

SSL/TLS — это уровень безопасности для шифрования соединения между веб-браузером и вашим сервером. Большинство веб-браузеров начинают показывать сайты как небезопасные, когда соединение между сервером и веб-браузером не зашифровано с помощью SSL. В этой главе я покажу вам, как защитить ваш веб-сайт с помощью SSL.

Выполните следующие команды на вашем сервере, чтобы включить поддержку SSL (https://). Выполните:

a2enmod ssl  
a2ensite default-ssl

что включает модуль SSL и добавляет символическую ссылку в папку /etc/apache2/sites-enabled на файл /etc/apache2/sites-available/default-ssl.conf, чтобы включить его в активную конфигурацию apache. Затем перезапустите apache, чтобы включить новую конфигурацию:

systemctl restart apache2

Теперь протестируйте SSL-соединение, открыв https://192.168.1.100 в веб-браузере.

Принять предупреждение SSL в Firefox

Вы получите предупреждение SSL, так как SSL-сертификат сервера является “самоподписанным” SSL-сертификатом, это означает, что браузер по умолчанию не доверяет этому сертификату, и вам нужно сначала принять предупреждение о безопасности. После принятия предупреждения вы увидите страницу по умолчанию apache.

Страница по умолчанию Apache в режиме https.

Закрытый “Зеленый замок” перед URL в браузере показывает, что соединение зашифровано.

Существует два способа избавиться от предупреждения SSL, либо заменить самоподписанный SSL-сертификат /etc/ssl/certs/ssl-cert-snakeoil.pem на официально подписанный SSL-сертификат, который вы покупаете у SSL-организации, либо получить бесплатный SSL-сертификат от Let’s Encrypt, который я опишу в главе 8.

8. Получение бесплатного SSL-сертификата от Let’s Encrypt

Первый шаг к защите веб-сайта с помощью SSL-сертификата Let’s Encrypt — установить пакет python-letsencrypt-apache. Выполните следующую команду:

apt-get -y install python-letsencrypt-apache

На следующем этапе мы запросим SSL-сертификат у Let’s Encrypt, в процессе этого Let’s Encrypt сервер пытается подключиться к вашему серверу через доменное имя, которое вы предоставляете команде letsencrypt. Важно, чтобы это доменное имя уже указывало на ваш сервер в DNS, чтобы веб-сайт был доступен по его доменному имени на порту 80 (http). Если веб-сайт недоступен из интернета, то создание SSL-сертификата Let’s Encrypt не удастся.

Перед тем как мы сможем начать создавать SSL-сертификат, установите доменное имя в файле конфигурации vhost. Откройте файл по умолчанию vhost с помощью редактора:

nano /etc/apache2/sites-available/000-default.conf

и добавьте строку:

ServerName example.com

Прямо под строкой ‘DocumentRoot’. Замените example.com на доменное имя вашего собственного веб-сайта.

Затем создайте SSL-сертификат с помощью этой команды:

letsencrypt --apache -d example.com

Замените example.com на ваше доменное имя здесь снова. Команда запустит мастер, который задаст вам несколько вопросов.

Введите адрес электронной почты, по которому можно связаться с администратором, ответственным за этот веб-сайт.

Примите условия и положения SSL-организации Let’s Encrypt.

Выберите, хотите ли вы автоматически перенаправлять не-SSL-запросы на https://. Я выберу да, чтобы избежать проблем с дублированием контента, когда веб-сайт доступен как http:// и https:// версия.

SSL-сертификат был успешно выдан.

Когда вы теперь обращаетесь к веб-сайту через браузер, вы будете автоматически перенаправлены на SSL, и зеленый замок перед строкой URL в браузере показывает, что мы теперь используем доверенный SSL-сертификат.

8.1 Автоматическое обновление Let’s Encrypt

SSL-сертификаты Let’s Encrypt действительны только в течение короткого периода в 80 дней. Поэтому мы сейчас настроим cronjob для автоматического обновления SSL-сертификата при необходимости. Команда — ‘letsencrypt renew’.

Настройте cronjob для автоматического обновления LE. Выполните:

crontab -e

чтобы открыть корневой crontab в редакторе. Вставьте следующую строку в конец файла:

0 1 * * * /usr/bin/letsencrypt renew &> /dev/null

сохраните файл, это активирует cronjob. Этот cronjob будет вызывать команду Let’s Encrypt renew каждую ночь в 1 час ночи. Команда будет обновлять SSL-сертификат только при необходимости (за 30 дней до его истечения), нет проблем с его запуском каждую ночь.

9. Установка phpMyAdmin

phpMyAdmin — это веб-интерфейс, через который вы можете управлять своими базами данных MySQL. Установить его — хорошая идея:

apt-get -y install phpmyadmin

ВАЖНО: Установщик apt задаст вам несколько вопросов, один из которых — выбрать тип веб-сервера. Распространенной ошибкой является то, что тип веб-сервера просто выделен, но не выбран. Чтобы выбрать элемент в меню apt, вам нужно нажать пробел на клавиатуре после того, как вы переместитесь к элементу с помощью клавиш tab или стрелок. Просто выделить его недостаточно!

Вы увидите следующие вопросы:

Web server to configure automatically: <-- Выберите опцию: apache2  
Configure database for phpmyadmin with dbconfig-common? <-- Да  
MySQL application password for phpmyadmin: <-- Нажмите enter, apt автоматически создаст случайный пароль.

9.1 Доступ root к PHPMyAdmin с MariaDB

Следующий шаг требуется только для установок MariaDB, если вы используете MySQL 5.7, пропустите этот шаг.

MariaDB по умолчанию включает плагин “unix_socket” для пользователя root, этот плагин предотвращает вход пользователя root в PHPMyAdmin и работу TCP-соединений с MySQL для пользователя root. Чтобы получить пользователя с правами для создания других пользователей и баз данных в PHPMyAdmin, я создам нового пользователя MySQL с именем “admin” с теми же правами, что и у пользователя root.

Войдите в базу данных MySQL как пользователь root в оболочке:

mysql -u root

Создайте нового пользователя с именем “admin” и паролем “howtoforge”. Замените пароль “howtoforge” на надежный пароль в следующих командах!

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';  
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;  
FLUSH PRIVILEGES;  
exit

После этого вы можете получить доступ к phpMyAdmin по адресу http://192.168.1.100/phpmyadmin/:

Вход в phpmyadmin

PHPMyAdmin

10 Скачивание образа виртуальной машины этого учебника

Этот учебник доступен в виде готового к использованию образа виртуальной машины в формате ovf/ova, совместимом с VMWare и Virtualbox. Образ виртуальной машины использует следующие данные для входа:

SSH / Вход в оболочку

Имя пользователя: administrator
Пароль: howtoforge

У этого пользователя есть права sudo.

Вход в MySQL

Имя пользователя: root
Пароль: howtoforge

IP виртуальной машины — 192.168.1.100, его можно изменить в файле /etc/network/interfaces. Пожалуйста, измените все вышеперечисленные пароли, чтобы обеспечить безопасность виртуальной машины.

11 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.