Установка LAMP (Apache, MySQL, PHP) на сервере Ubuntu. Linux статьи
Написать статью
Войдите, чтобы писать статьи

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

0

Установка LAMP (Apache MySQL PHP) на сервере Ubuntu

При поддержке: VEESP.com

В данном руководстве рассматривается установка веб-сервера Apache, MySQL и PHP на сервере под управлением Ubuntu Linux.

Связку Linux, Apache, MySQL и PHP кратко называют LAMP. Иногда используют понятие LAMP-стек или набор LAMP.

Набор LAMP один из первых компонентов, который обычно устанавливается на сервере для развертывания Web-проектов.

Мы предполагаем, что операционная система уже установлена на вашем сервере и вы имеете к ней удаленный доступ по SSH. Если вы используете VPS-сервер, то выбор используемой операционной системы вы, скорее всего, выполняли при оформлении заказа у вашего хостинг-провайдера.

В руководстве рассматривается установка LAMP в Ubuntu 18.04. Данное руководство затрагивает только базовую установку LAMP. Вопросы более глубокого конфигурирования (настройки) выходят за рамки данной статьи.

Все действия протестированы на настоящем VPS-сервере, предоставленным Veesp.com. Мы производили настройку на сервере в конфигурации SSD2 — это максимально сбалансированный тариф, который к тому же обладает безлимитным трафиком.

Пример выбор тарифа для Linux SSD VPS на сайте Veesp.com

Откройте терминал (командную строку)

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

  • Если вы работаете в Linux (например, в Ubuntu или любом другой дистрибутиве), то вам нужно открыть терминал. Иногда это можно сделать, нажав сочетание клавиш Ctrl+Alt+T или найти в меню запуска приложений программу Терминал (Эмулятор терминала).
  • Если вы работаете в MacOS, то запустите программу Терминал из Лаунчера (из Launchpad).
  • Если вы работаете в Windows, то можно использовать штатную программу cmd.exe. Нажмите Win+r, в отрывшемся окне впишите «cmd» (без кавычек) и нажмите ОК. Вы также можете воспользоваться бесплатной программой PuTTY, которая позволяет выполнять подключение по SSH.

Доступ по SSH

Чтобы подключиться по SSH, вам нужно знать IP-адрес вашего сервера и пароль root-пользователя. Если вы пользуетесь услугами хостинг-провайдера и используете VPS-сервер, то обычно эти данные высылаются вам по электронной почте при регистрации.

Для подключения по SSH нужно выполнить команду вида: ssh имяпользователя@ip.адрес.сервера

ssh root@192.168.123.123

При подключении может появиться сообщение: «The authenticity of host ’...’ can’t be established. ... Are you sure you want to continue connecting (yes/no)?» Соглашаемся: вводим y и нажимаем Enter.

Подключение по SSH

Если на каком-то этапе вам нужно будет завершить работу по SSH, то используйте команду: exit

Обновляем пакеты

Перед началом работы рекомендуется обновить систему. Для этого выполняем команды:

sudo apt update
sudo apt upgrade

После обновления перезагрузите систему, выполнив команду.

reboot

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

Создание пользователя

Сейчас мы подключились к серверу от имени root-пользователя. Так как root-пользователь обладает максимальными привилегиями в системе, работать от его имени небезопасно. Рекомендуется создать обычного пользователя, от имени которого выполнять все действия (используя sudo).

Создадим пользователя с именем pingvinus (вместо pingvinus укажите любое желаемое имя):

adduser pingvinus

Вводим пароль для пользователя. Рекомендуется использовать сложный пароль.

Затем появится запрос на ввод дополнительной информации о пользователе. Вы можете ничего не вводить, а просто нажимать Enter на каждый запрос.

Changing the user information for username
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]

Создание пользователя

Теперь необходимо разрешить пользователю использовать sudo, чтобы позволить ему выполнять команды с root-привилегиями. Для этого нужно добавить пользователя в группу sudo. Выполняем команду:

usermod -aG sudo pingvinus

Далее мы настроим файрволл UFW. Настройку файрвола можно производить от пользователя root. После настройки можно будет войти уже под пользователем, которого вы только что создали.

Настройка файрвола UFW

Файрвол UFW (брэндмауэр) это функциональный и в то же время очень простой в настройке файрвол, который позволяет разрешать или ограничивать доступ к вашему серверу.

Если UFW не установлен, то вы можете установить его из штатных репозиториев Ubuntu, выполнив команду:

sudo apt install ufw

Некоторые приложения создают для UFW готовые профили с настройками. Это очень удобно, так как пользователю достаточно всего лишь включить нужный профиль.

Прежде, чем включить файрвол UFW, необходимо настроить его так, чтобы он разрешал использование SSH, иначе после включения мы не сможем подключиться по SSH.

Выведем список доступных профилей:

$ ufw app list

Available applications:
OpenSSH

Нам нужно включить профиль OpenSSH. Для этого выполняем команду:

$ ufw allow OpenSSH

Rules updated
Rules updated (v6)

Включаем файрвол:

ufw enable

Скорее всего, появится следующее предупреждение, информирующее о том, что SSH-соединение может прерваться. Но так как мы разрешили использование SSH, то вводим y и нажимаем Enter.

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Если все прошло успешно, то вы по прежнему должны будете иметь SSH доступ. Выведем текущий статус UFW:

$ ufw status

Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

UFW app list Список профилей

Переключение на пользователя

Мы выполнили необходимый минимум подготовительных работ и можно перейти к установке компонентов LAMP.

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

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

su --login pingvinus

Переключиться на пользователя. su login

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

Установка Apache

Установка ApacheЧтобы установить веб-сервер Apache достаточно установить один пакет — apache2. Для установки выполняем команду:

sudo apt install apache2

После установки веб-сервер Apache автоматически запускается.

Разрешение HTTP(S) трафика в UFW

Если сейчас вы попробуете получить доступ к вашему серверу, введя IP-адрес сервера в браузере, то получите ошибку, так как UFW блокирует HTTP(S) трафик. Необходимо разрешить HTTP (порт 80) и HTTPS (порт 443) трафик в настройках UFW.

Apache во время установки создал для UFW необходимые профили. Выведем список доступных профилей:

$ sudo ufw app list

Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Как вы можете видеть, для Apache доступно 3 профиля. Мы будем использовать профиль Apache Full, так как он разрешает HTTP и HTTPS трафик. Профиль с именем Apache разрешает только HTTP трафик, а Apache Secure только HTTPS трафик.

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

$ 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 в UFW для входящего трафика:

sudo ufw allow in "Apache Full"

UFW app list

Посмотрим статус:

sudo ufw status

UFW status

Проверяем работу Apache

Мы установили Apache и разрешили использование входящего HTTP(S) трафика. Теперь можно открыть веб-браузер и набрать в адресной строке публичный IP адрес вашего сервера. То есть в строке ввода адреса перейти на: http://ip.адрес.вашего.сервера (например, http://77.555.123.123).

Должна открыться тестовая страница Apache с некоторой полезной информацией. Если страница открылась, значит Apache работает успешно.

Проверка работоспособности Apache через браузер

Можно проверить текущий статус веб-сервера Apache. Для этого выполняем команду:

$ systemctl status apache2

● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: ...
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2019-05-16 14:24:26 MSK; 46min ago
Main PID: 2281 (apache2)
Tasks: 55 (limit: 1109)
CGroup: /system.slice/apache2.service
├─2281 /usr/sbin/apache2 -k start
├─2283 /usr/sbin/apache2 -k start
└─2284 /usr/sbin/apache2 -k start

May 16 14:24:26 pingvinusru systemd[1]: Starting The Apache HTTP Server...
May 16 14:24:26 pingvinusru apachectl[2268]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using ...
May 16 14:24:26 pingvinusru systemd[1]: Started The Apache HTTP Server.

Нажмите клавишу q, чтобы закрыть просмотр статуса.

Apache status

Установка MySQL

Установка MySQLВыполним установку MySQL. Выполняем команду:

sudo apt install mysql-server

Проверим статус MySQL сервера:

$ service mysql status

status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en...
Active: active (running) since Thu 2019-05-16 15:36:30 MSK; 9min ago
Main PID: 3734 (mysqld)
Tasks: 27 (limit: 1109)
CGroup: /system.slice/mysql.service
└─3734 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

May 16 15:36:30 pingvinusru systemd[1]: Starting MySQL Community Server...
May 16 15:36:30 pingvinusru systemd[1]: Started MySQL Community Server.

MySQL status

Безопасность MySQL

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

Запуск скрипта mysql_secure_installation

Рассмотрим, процесс работы скрипта mysql_secure_installation.

Запускаем скрипт:

sudo mysql_secure_installation

Плагин VALIDATE 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?

В первую очередь предлагается включить плагин «VALIDATE PASSWORD». Данный плагин используется для того, чтобы не позволять создавать простые пароли для пользователей MySQL. Если вам важна безопасность, то рекомендуется включить этот плагин. Вводим y и нажимаем Enter.

Уровень сложности для паролей MySQL

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

Если вы включили плагин «VALIDATE PASSWORD», то далее необходимо установить уровень сложности паролей, который будет использоваться для MySQL:

  • 0 — позволить использование простых паролей,
  • 1 — позволить только пароли средней сложности (разный регистр символов, наличие цифр и специальных символов),
  • 2 — позволить только сложные пароли (то же, что и предыдущий вариант, но с использованием словаря).

Вводим желаемую цифру (в нашем примере вводим 1) и нажимаем Enter.

Пароль root

Please set the password for root here.

Появится запрос на ввод пароля для root-пользователя MySQL. Данный пароль используется для учетной записи root в MySQL. Не путайте его с пользователем root вашей системы Ubuntu. Введите желаемый пароль.

После ввода пароля появится сообщение с указанием сложности вашего пароля по стобалльной шкале.

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

Если вас все устраивает, вводим y и нажимаем Enter. Если нет, то вводим n, нажимаем Enter, и задаем другой пароль.

Запрет анонимного доступа

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

Появится предложение удалить анонимный доступ к MySQL. Он используется только в тестовых целях, поэтому на работающем сервере его нужно удалить. Вводим y и нажимаем Enter.

Запрет удаленного входа учетной записью root в MySQL

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

По умолчанию root-пользователь может получить удаленный доступ к MySQL. Для увеличения безопасности рекомендуется запретить удаленный доступ root-пользователя к MySQL. Вводим y и нажимаем Enter.

Удаление тестовой базы данных

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

MySQL устанавливается с тестовой базой данных «test», которая используется только в целях тестирования. Рекомендуется удалить ее. Вводим y и нажимаем Enter.

Применение настроек

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 и нажимаем Enter.

В результате получим сообщение:

Success.
All done!
Выполнение скрипта mysql_secure_installation

Установка PHP

Установка PHPВыполним установку PHP. Чтобы установить поддержку PHP достаточно установить пакет php. Помимо этого мы установим пакеты libapache2-mod-php и php-mysql. Это модули PHP для веб-сервера Apache и MySQL, соответственно. Выполняем установку:

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

После установки можно проверить версию PHP, выполнив команду:

php -v

Установка дополнительных модулей PHP

Дополнительные модули (расширения) для PHP можно устанавливать по мере надобности. Модули устанавливаются путем установки пакетов с именами php-имямодуля

Например, установим PHP-модули GD, CURL, mbstring и JSON:

sudo apt install php-gd php-curl php-mbstring php-json

Чтобы просмотреть список установленных модулей выполните команду:

php -m

Проверка работы PHP

Теперь проверим, что PHP успешно работает с веб-сервером Apache. Для этого мы создадим файл test.php, в котором выполним некоторый PHP код. Файл мы разместим в директории /var/www/html

Директория /var/www/html используется веб-сервером Apache по умолчанию для сайта (хоста), который доступен по IP-адресу вашего сервера. То есть, когда вы набираете в браузере адрес http://ip.адрес.вашего.сервера, то Apache обращается к каталогу /var/www/html

Воспользуемся консольным редактором nano. Скорее всего он уже установлен на вашем сервере. Если нет, то для установки выполните команду:

sudo apt install nano

Создадим файл и откроем его в редакторе nano, выполнив команду:

sudo nano /var/www/html/test.php

Введите следующий текст файла.

phpinfo();
?&rt;

Сохраните изменения и закройте редактор. Для этого нажмите сочетание клавиш Ctrl+X, далее нажмите клавишу y и Enter.

phpinfo тестовый файл

Мы создали PHP-файл test.php, который внутри себя вызывает PHP-функцию phpinfo(). Данная функция выводит подробную информацию о текущей конфигурации PHP.

Обратимся к файлу test.php из браузера. Переходим в браузере по адресу http://ip.адрес.вашего.сервера/test.php В результате в браузере должна отобразится страница следующего вида:
Тестовая страница для проверки работы PHP

Чтобы злоумышленник не смог получить информацию о конфигурации вашего сервера, крайне рекомендуется удалить данный файл. Для этого выполните команду:

sudo rm /var/www/html/test.php

Некоторые полезные команды

Ниже приведено несколько команд, которые могут быть вам полезны.

Статус Apache

systemctl status apache2

Перезапуск Apache

sudo systemctl restart apache2

Статус MySQL-сервера

service mysql status

Останов MySQL-сервера

service mysql stop

Запуск MySQL-сервера

service mysql start

Заключение

Мы рассмотрели установку базовых компонентов LAMP-стека на сервере. Тема конфигурации веб-сервера довольно обширна. При дальнейшей настройке необходимо уделить особое внимание конфигурации безопасности вашего сервера.

Подготовлено при поддержке: VEESP.com
Аренда виртуальных и выделенных серверов.
Лайков: +2
войдите, чтобы ставить лайки
0
  • Опубликовано: 20.05.2019

Комментарии

Комментариев пока не было.

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила