Поиск по сайту:

Установите стек Apache, MySQL, PHP (LAMP) в Ubuntu 18.04 LTS

Стек LAMP – это популярная платформа веб-разработки с открытым исходным кодом, которую можно использовать для запуска и развертывания динамических веб-сайтов и веб-приложений. Обычно стек LAMP состоит из веб-сервера Apache, баз данных MariaDB/MySQL, языков программирования PHP/Python/Perl. LAMP — это аббревиатура от Linux, MariaDB/MYSQL, PHP/P<ython/Perl. В этом руководстве описывается, как установить Apache, MySQL, PHP (стек LAMP) на сервере Ubuntu 18.04 LTS.

Установите стек Apache, MySQL, PHP (LAMP) в Ubuntu 18.04 LTS

Для целей этого руководства мы будем использовать следующий тестовый блок Ubuntu.

  • Операционная система: Ubuntu 18.04.1 LTS Server Edition.
  • IP-адрес: 192.168.225.22/24.

1. Установите веб-сервер Apache.

Прежде всего обновите сервер 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: en
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2019-02-05 10:48:03 UTC; 1min 5s ago
 Main PID: 2025 (apache2)
    Tasks: 55 (limit: 2320)
   CGroup: /system.slice/apache2.service
           ├─2025 /usr/sbin/apache2 -k start
           ├─2027 /usr/sbin/apache2 -k start
           └─2028 /usr/sbin/apache2 -k start

Feb 05 10:48:02 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Feb 05 10:48:03 ubuntuserver apachectl[2003]: AH00558: apache2: Could not reliably
Feb 05 10:48:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.

Поздравляем! Служба Apache запущена и работает!!

1.1 Настройте брандмауэр, чтобы разрешить веб-сервер Apache

По умолчанию доступ к веб-браузеру Apache из удаленных систем невозможен, если вы включили брандмауэр UFW в Ubuntu 18.04 LTS. Вы должны разрешить порты http и https, выполнив следующие действия.

Сначала перечислите профили приложений, доступные в вашей системе Ubuntu, с помощью команды:

sudo ufw app list

Пример вывода:

Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Как видите, в приложениях Apache и OpenSSH установлены профили UFW. Вы можете вывести информацию о каждом профиле и включенных в него правилах с помощью команды «ufw app info «Имя профиля» .

Давайте посмотрим на профиль Полный Apache. Для этого запустите:

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

Если вы видите экран, подобный приведенному выше, все готово. Сервер Apache работает!

2. Установите MySQL

Чтобы установить 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: enab
Active: active (running) since Tue 2019-02-05 11:07:50 UTC; 17s ago
Main PID: 3423 (mysqld)
Tasks: 27 (limit: 2320)
CGroup: /system.slice/mysql.service
└─3423 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Feb 05 11:07:49 ubuntuserver systemd[1]: Starting MySQL Community Server...
Feb 05 11:07:50 ubuntuserver systemd[1]: Started MySQL Community Server.

MySQL работает!

2.1 Настройка пароля администратора базы данных (root)

По умолчанию пароль пользователя MySQL root пуст. Вам необходимо защитить свой сервер MySQL, запустив следующий скрипт:

sudo mysql_secure_installation

Вас спросят, хотите ли вы установить плагин ПРОВЕРИТЬ ПАРОЛЬ или нет. Этот плагин позволяет пользователям настраивать надежный пароль для учетных данных базы данных. Если этот параметр включен, он автоматически проверяет надежность пароля и заставляет пользователей устанавливать только те пароли, которые достаточно безопасны. Можно оставить этот плагин отключенным. Однако для учетных данных базы данных необходимо использовать надежный и уникальный пароль. Если вы не хотите включать этот плагин, просто нажмите любую клавишу, чтобы пропустить этап проверки пароля и продолжить остальные шаги.

Если ваш ответ Да, вам будет предложено выбрать уровень проверки пароля.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

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 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:

Теперь введите пароль для пользователя root MySQL. Помните, что вы должны использовать пароль для пользователя root MySQL в зависимости от политики паролей, которую вы выбрали на предыдущем шаге. Если вы не включили плагин, просто используйте любой надежный и уникальный пароль по вашему выбору.

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

После того, как вы введете пароль дважды, вы увидите надежность пароля (в нашем случае это 50). Если вас это устраивает, нажмите 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!

Вот и все. Пароль для пользователя root MySQL установлен.

2.2 Изменение метода аутентификации для root-пользователя MySQL

По умолчанию root-пользователь MySQL настроен на аутентификацию с использованием плагина auth_socket в MySQL 5.7 и более новых версиях в Ubuntu. Несмотря на то, что это повышает безопасность, это также усложняет ситуацию при доступе к серверу базы данных с помощью любых внешних программ, например phpMyAdmin. Чтобы устранить эту проблему, вам необходимо изменить метод аутентификации с auth_socket на mysql_native_password. Для этого войдите в командную строку MySQL, используя команду:

sudo mysql

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

SELECT user,authentication_string,plugin,host FROM mysql.user;

Пример вывода:

+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *F126737722832701DD3979741508F05FA71E5BA0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Как видите, пользователь root MySQL использует плагин auth_socket для аутентификации.

Чтобы изменить эту аутентификацию на метод mysql_native_password, выполните следующую команду в командной строке mysql. Не забудьте заменить пароль надежным и уникальным паролем по вашему выбору. Если вы включили плагин ПРОВЕРКИ, убедитесь, что вы использовали надежный пароль в соответствии с текущими требованиями политики.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Обновите изменения с помощью команды:

FLUSH PRIVILEGES;

Теперь проверьте еще раз, изменен ли метод аутентификации или нет, с помощью команды:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Пример вывода:

Хороший! Теперь пользователь root myql может пройти аутентификацию с использованием пароля для доступа к оболочке mysql.

Выход из командной строки MySQL:

exit

3. Установите PHP

Чтобы установить PHP, запустите:

sudo apt install php libapache2-mod-php php-mysql

После установки PHP создайте файл info.php в корневой папке документов Apache. Обычно корневой папкой документов Apache будет /var/www/html/ или /var/www/ в большинстве дистрибутивов Linux на основе Debian. В Ubuntu 18.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.

тестовая страница 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

Пример вывода:

Используйте клавиши со стрелками, чтобы просмотреть результат. Чтобы выйти, введите q и нажмите клавишу ENTER.

Чтобы узнать подробности о каком-либо конкретном модуле PHP, например php-gd, запустите:

sudo apt-cache show php-gd

Чтобы установить модуль php, выполните:

sudo apt install php-gd

Чтобы установить все модули (хотя это не обязательно), запустите:

sudo apt-get install php*

Не забудьте перезапустить службу Apache после установки любого модуля php. Чтобы проверить, загружен модуль или нет, откройте файл info.php в браузере и проверьте, присутствует ли он.

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

  • Установить phpMyAdmin со стеком LAMP в Ubuntu 18.04 LTS

Поздравляем! Мы успешно настроили стек LAMP на сервере Ubuntu 18.04 LTS.

Читайте также:

  • Установить стек Nginx, MariaDB, PHP (LEMP) в Ubuntu 18.04 LTS
  • Установить стек Apache, MariaDB, PHP (LAMP) в Arch Linux
  • Установить стек Nginx, MariaDB, PHP (LEMP) в Arch Linux

И это все на данный момент. Как видите, настройка стека LAMP в Ubuntu абсолютно проста и понятна.

Ссылка:

  • Цифровой океан

Статьи по данной тематике