Найти в Дзене
myServer 2.0

Установка LAMP на Ubuntu Server

LAMP – это программный стек, происходит от Linux Apache MySQL PHP. Это один из самых популярных комплексов для развертки веб сервера на Linux.

LAMP – это программный стек, происходит от Linux Apache MySQL PHP. Это один из самых популярных комплексов для развертки веб сервера на Linux, на данный момент Apache не такой производительный как NGINX, но зато простой в настройке.

На основе NGINX тоже есть подобный стек, называется LEMP, но о нем в другой статье. Вообще есть прекрасная практика использования обоих веб серверов, NGINX используют на фронтэнде, а Apache на бэкэнде, NGINX обрабатывает запросы с веб страницы, а Apache занимается работой с PHP.

Ну, от слов к делу, у нас уже есть установленная система на базе Linux, например Ubuntu Server 18.04 lts. Логинимся в системе, и начинаем работу с командной строкой. Первым дело установим веб сервер Apache:

$ sudo apt install apache2

У меня стоит внешний firewall, но у вас, если нет такой структуры стоит настроить защиту на самом сервере. Если у вас запущен firewall, то надо настроить разрешения для трафика HTTP и HTTPS, для начала посмотрим есть ли у нас профили Apache в UFW

$ sudo ufw app list

Вывод
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Проверяем настройку профиля Apache Full, убеждаемся что в нем есть разрешения для трафика по портам 80 и 443

$ 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

Разрешаем входящий трафик для этого профиля

$ sudo ufw allow in "Apache Full"

Проверяем работу веб сервера, вводим в адресной строке нашего браузера внешний адрес своего сервера

http://ваш_адрес

Если все сделали правильно, будет загружена стандартная страница Apache

-2

Теперь, когда наш веб сервер установлен и работает, можно приступать к установке сервера баз данных, мы будем использовать MySQL, для начала установим

$ sudo apt install mysql-server

Далее запустим настройки безопасности командой

$ sudo mysql_secure_installation

В результате вам будет предложено настроить плагин валидации паролей (VALIDATE PASSWORD PLUGIN)

Вывод
VALIDATE PASSWORD PLUGIN can be used to test passwords<br>and improve security. It checks the strength of password<br>and allows the users to set only those passwords which are<br>secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:

Нажимаем Y если согласны с настройкой, в таком случае надо выбрать уровень валидации паролей, выбрав самый сложный уровень (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: 1

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

Вывод
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

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

В последних версиях MySQL (начиная с версии 5.7), по умолчанию для пользователя root настраивается доступ не по паролю, а с помощью плагина auth_socket, в этом нет ничего страшного, но если вы будете использовать phpmyadmin, то стоит перенастроить этот метод с auth_socket на mysql_native_password, для этого заходим в MySQL

$ sudo mysql

выводим список пользователей с методами аутентификации

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

Здесь мы видим, что пользователь root использует плагин auth_socket для аутентификации в системе, для изменения этих настроек используем команду ALTER USER, 'password' меняем на свой сильный пароль

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

Выполняем команду FLUSH PRIVILEGES, тем самым вносим изменения

mysql> FLUSH PRIVILEGES;

Проверяем

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

Теперь пользователь root будет аутентифицироваться с помощью пароля, выходим из mysql

mysql> exit;

На данном этапе наша система уже имеет веб сервер и работает с базами данных, осталось установить интерпретатор PHP, это самый распространенный обработчик кода для отображения динамического контента. Устанавливаем PHP и модули к нему, для работы с Apache и MySQL

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

Если все прошло без ошибок, то можем смело тестировать работу PHP, для этого создадим в папке /var/www/html/ файл info.php

$ sudo nano /var/www/html/info.php

В только что созданный пустой файл добавляем код PHP

<?php
phpinfo();
?>

После внесения изменений нажимаем Ctrl-x и подтверждаем клавишей Y нажимаем Enter тем самым мы сохранили файл под именем которое вводили при создании. Теперь мы можем проверить как работает в нашей системе PHP, а заодно и вывести всю информацию о веб сервере, для этого заходим по адресу

Http://наш_ip_адрес/info.php

Мы должны увидеть примерно такой вывод на странице

-3

Эта страница полезна для отладки, посмотреть какие модули подгружены, какие версии ПО используются. Если страница вывелась, значит интерпретатор PHP работает. Можно смело удалять этот файл

$ sudo rm /var/www/html/info.php

На этом базовая настройка вашего стека закончена, уже на этом этапе можно работать с веб сервером, устанавливать CMS для сайта, работать с БД.

Все статьи можно посмотреть на сайте или на Zen Yandex