Установите Apache, MySQL, PHP (стек LAMP) в Ubuntu 20.04 LTS.
Стек LAMP — это популярная платформа веб-разработки с открытым исходным кодом, которую можно использовать для запуска и развертывания динамических веб-сайтов и веб-приложений. Обычно стек LAMP состоит из веб-сервера Apache, баз данных MariaDB/MySQL, языков программирования PHP/Python/Perl. LAMP — это аббревиатура Linux, Apache, MariaDB/MYSQL, PHP/Python/Perl. В этом пошаговом руководстве описывается, как установить Apache, MySQL, PHP (стек LAMP) на серверную версию Ubuntu 20.04 LTS.
Установите Apache, MySQL, PHP (стек LAMP) в Ubuntu 20.04 LTS.
Для целей этого руководства мы будем использовать следующую систему Ubuntu.
- Операционная система: Ubuntu 20.04 LTS Server Edition.
- IP-адрес: 192.168.225.52/24.
Сначала давайте установим сервер Apache.
1. Установите веб-сервер Apache в Ubuntu.
Прежде всего обновите сервер Ubuntu с помощью команд:
sudo apt update
sudo apt upgrade
Затем установите веб-сервер Apache:
sudo apt install apache2
Проверьте, запущен ли веб-сервер Apache, с помощью команды:
sudo systemctl status apache2
Пример вывода будет:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl>
Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 23996 (apache2)
Tasks: 55 (limit: 2283)
Memory: 5.1M
CGroup: /system.slice/apache2.service
├─23996 /usr/sbin/apache2 -k start
├─23998 /usr/sbin/apache2 -k start
└─23999 /usr/sbin/apache2 -k start
May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det>
May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.
Поздравляем! Служба Apache запущена и работает!!
1.1. Разрешить веб-сервер Apache через брандмауэр UFW
UFW, означает Uncomplexed Firewall, представляет собой программу для управления брандмауэром netfilter, предназначенную для легко использовать. UFW доступен по умолчанию во всех версиях Ubuntu.
По умолчанию доступ к веб-браузеру Apache из удаленных систем невозможен, если вы включили брандмауэр UFW в Ubuntu 20.04 LTS. Вы должны разрешить порты http
и https
, выполнив действия, указанные ниже.
Сначала перечислите профили приложений, доступные в вашей системе Ubuntu, с помощью команды:
sudo ufw app list
Пример вывода:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Как видите, в приложениях Apache и OpenSSH установлены профили UFW. Вы можете вывести информацию о каждом профиле и включенных в него правилах, используя команду ufw app info «Имя профиля»
.
Давайте посмотрим на профиль “Apache Full”
с помощью команды:
sudo ufw app info "Apache Full"
Пример вывода:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Как видите, профиль "Apache Full"
включает правила, разрешающие трафик на порты 80
и 443
.
Теперь выполните следующую команду, чтобы разрешить входящий трафик HTTP
и HTTPS
для этого профиля:
sudo ufw allow in "Apache Full"
Вы увидите результат, как показано ниже:
Rules updated
Rules updated (v6)
Если вы не хотите разрешать трафик https
, а только трафик http
(80), запустите:
sudo ufw app info "Apache"
1.2. Тестирование веб-сервера Apache
Теперь откройте веб-браузер и откройте тестовую страницу Apache, перейдя по адресу http://localhost/
или http://IP-Address/
.
Если вы видите «страницу по умолчанию Apache 2 Ubuntu», как показано ниже, все готово. Сервер Apache работает!
Тестирование веб-сервера Apache
2. Установите MySQL в Ubuntu
Чтобы установить MySQL в Ubuntu, запустите:
sudo apt install mysql-server
Проверьте, запущена ли служба MySQL или нет, используя команду:
sudo systemctl status mysql
Пример вывода:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago
Main PID: 25242 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 2283)
Memory: 323.7M
CGroup: /system.slice/mysql.service
└─25242 /usr/sbin/mysqld
May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server...
May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.
Как вы видите в приведенном выше выводе, MySQL работает!
2.1. Настройка пароля администратора базы данных (root) для Mysql
По умолчанию пароль пользователя root
MySQL пуст. Не рекомендуется использовать пустой пароль для учетной записи администратора базы данных. Вам необходимо защитить свой сервер MySQL, запустив следующий скрипт:
sudo mysql_secure_installation
Вас спросят, хотите ли вы установить компонент "VALIDATE PASSWORD"
или нет. Этот компонент позволяет пользователям настраивать надежный пароль для учетных данных базы данных. Если этот параметр включен, он автоматически проверяет надежность пароля и заставляет пользователей устанавливать только те пароли, которые достаточно безопасны. Можно оставить эту функцию отключенной. Однако для учетных данных базы данных необходимо использовать надежный и уникальный пароль. Если вы не хотите включать этот компонент, просто нажмите любую клавишу, чтобы пропустить этап проверки пароля и продолжить остальные шаги.
Введите y
, если вы хотите настроить компонент VALIDATE PASSWORD
:
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT 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 component?
Press y|Y for Yes, any other key for No: y
Если ваш ответ Да, вам будет предложено выбрать уровень проверки пароля. Доступные проверки пароля: низкая, средняя и сильная. Просто введите соответствующее число (0 для низкого пароля, 1 для среднего и 2 для надежного пароля) и нажмите клавишу ВВОД.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Теперь введите пароль для пользователя root
MySQL. Помните, что вы должны использовать пароль для пользователя root
MySQL в зависимости от политики паролей, которую вы выбрали на предыдущем шаге. Если вы не включили плагин, просто используйте любой надежный и уникальный пароль по вашему выбору.
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
После того, как вы введете пароль дважды, вы увидите надежность пароля (в нашем случае это 100). Если вас это устраивает, нажмите Y, чтобы продолжить использование предоставленного пароля. Если длина пароля вас не устраивает, нажмите любую другую клавишу и установите надежный пароль. Меня устраивает мой текущий пароль, поэтому я выбрал y
.
Чтобы ответить на остальные вопросы, просто введите y
и нажмите ENTER
. Это приведет к удалению анонимного пользователя, запрету удаленного входа в систему пользователя root и удалению тестовой базы данных.
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 root
.
2.2. Изменить метод аутентификации для пользователя root MySQL
По умолчанию root-пользователь MySQL настроен на аутентификацию с использованием плагина auth_socket
, начиная с MySQL 5.7 и более поздних версий в Ubuntu. Несмотря на то, что это повышает безопасность, это также усложняет ситуацию при доступе к серверу базы данных с помощью любых внешних программ, например phpMyAdmin. Чтобы устранить эту проблему, вам необходимо изменить метод аутентификации с auth_socket на caching_sha2_password
или mysql_native_password
.
Начиная с версии MySQL 8.0, предпочтительным плагином аутентификации по умолчанию является caching_sha2_password
. Плагин аутентификации caching_sha2_password
обеспечивает более безопасное шифрование паролей, чем плагин mysql_native_password
.
Чтобы изменить плагин аутентификации, войдите в командную строку MySQL, используя команду:
sudo mysql
Или,
mysql -u root -p
Введите пароль root
MySQL, который мы установили на предыдущем шаге.
Запустите следующую команду в командной строке MySQL, чтобы найти текущий метод аутентификации для всех учетных записей пользователей MySQL:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Пример вывода:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$=s%UO"�o@>.@320vBX9Agb0kvpTpyiqIsh6XlD0UqNXLcl3KLzp46.Le. | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Найдите текущий метод аутентификации для всех учетных записей пользователей MySQL в Ubuntu.
Как видите, пользователь root MySQL использует плагин auth_socket
для аутентификации.
Чтобы изменить плагин auth_socket
на caching_sha2_password
, выполните следующую команду в командной строке MySQL. Если вы включили плагин VALIDATE PASSWORD
, убедитесь, что вы использовали надежный пароль в соответствии с требованиями текущей политики. Строгая буква должна состоять как минимум из 8 символов, включая прописную букву, строчную букву, цифру и специальный символ.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Замените Password123#@!
на надежный и уникальный пароль по вашему выбору в приведенной выше команде.
Обновите изменения с помощью команды:
mysql> FLUSH PRIVILEGES;
Теперь проверьте, изменен ли текущий плагин аутентификации или нет, с помощью команды:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Пример вывода:
Проверьте текущий плагин аутентификации в MySQL.
Хороший! Теперь пользователь MySQL root
может аутентифицироваться с использованием пароля для доступа к оболочке MySQL.
Выход из командной строки MySQL:
mysql> exit
Примечание:
Несмотря на то, что плагин caching_sha2_password
обеспечивает улучшенное безопасное шифрование, у него есть некоторые проблемы совместимости с существующими установками MySQL. Подробную информацию можно найти по этой ссылке. Если вы столкнулись с какими-либо проблемами совместимости, вам необходимо установить плагин mysql_native_password
в качестве плагина аутентификации по умолчанию.
Чтобы перейти на плагин mysql_native_password
, выполните следующую команду в командной строке MySQL.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Обновите изменения с помощью команды:
mysql> FLUSH PRIVILEGES;
Теперь проверьте еще раз, изменен ли метод аутентификации или нет, с помощью команды:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Пример вывода:
Найдите текущий метод аутентификации для всех учетных записей пользователей MySQL.
Выход из командной строки MySQL:
mysql> exit
3. Установите PHP в Ubuntu
Чтобы установить PHP, запустите:
sudo apt install php libapache2-mod-php php-mysql
После установки PHP создайте файл info.php
в корневой папке документов Apache. Обычно корневая папка документов Apache – /var/www/html/
или /var/www/
. в большинстве дистрибутивов Linux на основе Debian. В Ubuntu 20.04 LTS это /var/www/html/
.
Давайте создадим файл info.php
в корневой папке Apache:
sudo vi /var/www/html/info.php
Добавьте следующие строки:
<?php
phpinfo();
?>
Нажмите клавишу ESC
и введите :wq
, чтобы сохранить и выйти из файла. Перезапустите службу Apache, чтобы изменения вступили в силу.
sudo systemctl restart apache2
3.1. Тестирование PHP
Откройте веб-браузер и перейдите по URL-адресу http://IP-address/info.php
.
Вы увидите информацию о PHP, такую как версия, API сервера и сведения обо всех включенных плагинах PHP.
Тестовая страница PHP
Обычно, когда пользователь запрашивает каталог с веб-сервера, Apache сначала ищет файл с именем index.html
. Если вы хотите изменить Apache для обслуживания файлов php, а не других файлов, переместите index.php
на первую позицию в dir.conf
файл, как показано ниже.
sudo vi /etc/apache2/mods-enabled/dir.conf
Вот содержимое вышеуказанного файла.
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Переместите файл index.php
на первое. После внесения изменений ваш файл dir.conf
будет выглядеть, как показано ниже.
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Нажмите клавишу ESC
и введите :wq
, чтобы сохранить и закрыть файл. Перезапустите службу Apache, чтобы изменения вступили в силу.
sudo systemctl restart apache2
3.2. Установите PHP-модули
Чтобы улучшить функциональность PHP, вы можете установить некоторые дополнительные модули PHP.
Чтобы просмотреть список доступных модулей PHP, запустите:
sudo apt-cache search php- | less
Пример вывода:
Список доступных модулей PHP в Ubuntu
Используйте клавиши со стрелками, чтобы просмотреть результат. Чтобы выйти, введите q
.
Чтобы узнать подробности о каком-либо конкретном модуле PHP, например php-gd, запустите:
sudo apt-cache show php-gd
Чтобы установить модуль php, выполните:
sudo apt install php-gd
Не забудьте перезапустить службу Apache после установки модуля php. Чтобы проверить, загружен модуль или нет, откройте файл info.php в браузере и проверьте, присутствует ли он.
Поздравляем! Как видите, установить apache, mysql, php (стек LAMP) в Ubuntu 20.04 LTS очень просто. Теперь вы можете начать размещать свои веб-сайты с помощью стека LAMP.
Читать далее:
- Установить phpMyAdmin со стеком LAMP в Ubuntu 20.04 LTS
Связанное чтение:
- Установить Nginx, MySQL, PHP (стек LEMP) в Ubuntu 20.04 LTS
- Установить Apache, MariaDB, PHP (стек LAMP) в CentOS 8