Быстрая установка стека LEMP в Ubuntu 20.04

Данный мануал коротко расскажет, как установить все компоненты стека LEMP на сервер Ubuntu 20.04.

Примечание: Более подробную версию мануала вы найдете здесь.

Требования

Для работы вам понадобится сервер Ubuntu 20.04, настроенный по этому мануалу.

1: Установка Nginx

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

sudo apt update
sudo apt install nginx

Если ранее вы включили брандмауэр ufw, сейчас нужно разблокировать в нем порты сервиса Nginx. Чтобы включить профиль Nginx, зарегистрированный в ufw во время установки веб-сервера, введите:

sudo ufw allow 'Nginx HTTP'

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

http://server_domain_or_IP
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

2: Установка MySQL

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

Чтобы установить MySQL, используйте apt:

sudo apt install mysql-server

После установки MySQL нужно защитить базу данных. Для этого можно запустить простой скрипт безопасности, который удалит рискованные настройки. Запустите его:

sudo mysql_secure_installation

Сначала он предложит настроить Validate Password Plugin, который проверяет надежность вашего пароля. Если вы хотите включить этот плагин, введите Y, после чего вам будет предложено выбрать уровень проверки пароля. Наивысший уровень можно включить, нажав 2.

Затем сервер попросит вас выбрать и подтвердить пароль для пользователя root MySQL. MySQL по умолчанию не требует пароля, даже если пароль установлен; несмотря на это, вы должны определить здесь надежный пароль – в качестве дополнительной меры безопасности.

На остальные вопросы можно нажать Y и Enter. Это удалит анонимных пользователей и тестовые базы данных, отключит удалённый root логин и обновит текущие настройки MySQL.

Примечание: На момент написания этого мануала PHP-библиотека MySQL mysqlnd не поддерживает caching_sha2_authentication, метод аутентификации по умолчанию для MySQL 8. Потому при создании пользователей БД для приложений PHP на MySQL 8 вам необходимо убедиться, что они используют mysql_native_password. Подробнее об этом мы рассказываем в разделе 6 этого мануала.

3: Установка PHP

Чтобы установить пакеты php-fpm и php-mysql, запустите:

sudo apt install php-fpm php-mysql

4: Настройка Nginx для поддержки PHP

Примечание: В данном мануале мы используем условный домен your_domain, который вы должны заменить своим доменом.

В Ubuntu 20.04 Nginx поставляется с одним блоком server, он включен по умолчанию и настроен на обслуживание документов каталога /var/www/html. Это хорошо работает для одного сайта, но управлять несколькими сайтами так не получится. Вместо того чтобы изменять /var/www/html, создайте структуру каталогов в /var/www для веб-сайта your_domain, оставив /var/www/html в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не совпадает ни с одним другим сайтом.

Создайте корневой каталог для вашего домена:

sudo mkdir /var/www/your_domain

Затем укажите владельца каталога с помощью переменной среды $USER, которая должна ссылаться на вашего текущего системного пользователя:

sudo chown -R $USER:$USER /var/www/your_domain

Откройте новый конфигурационный файл в каталоге sites-available:

sudo nano /etc/nginx/sites-available/your_domain

Вы увидите пустой файл. Вставьте в него такие строки:

server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}

Сохраните и закройте файл.

Активируйте свою конфигурацию, создав симлинк из каталога sites-enabled:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Теперь Nginx сможет использовать конфигурацию при следующей перезагрузке. Сначала проверьте вашу конфигурацию на наличие ошибок:

sudo nginx -t

Если команда обнаружила какие-то ошибки, вернитесь и перепроверьте файл, прежде чем продолжить.

Затем перезагрузите Nginx, чтобы внести изменения в настройку:

sudo systemctl reload nginx

Ваш новый веб-сайт теперь включен, но корневой каталог /var/www/your_domain все еще пуст. Создайте в нем файл index.html, чтобы проверить, правильно ли работает ваш новый блок server:

nano /var/www/your_domain/index.html

Вставьте в файл строки:

<html>
<head>
<title>your_domain website</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is the landing page of <strong>your_domain</strong>.</p>
</body>
</html>

Теперь откройте браузер и перейдите по своему домену или IP-адресу, который вы указали в server_name.

http://server_domain_or_IP

На экране вы увидите:

Hello World!
This is the landing page of your_domain

5: Тестирование установки

Теперь осталось убедиться, что веб-сервер успешно обслуживает файлы PHP.

Для этого нужно создать тестовый файл info.php в каталоге document root.

nano /var/www/your_domain/info.php

Вставьте в этот файл такие строки:

<?php
phpinfo();

Сохраните и закройте файл.

Теперь попробуйте открыть его в браузере:

http://server_domain_or_IP/info.php

На экране появится страница, содержащая информацию о сервере. Если такая страница появилась, Nginx правильно обслуживает файлы PHP.

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

sudo rm /var/www/your_domain/info.php

При необходимости вы сможете легко восстановить эту страницу.

Читайте также: Начальная настройка сервера Ubuntu 20.04

Tags: , , , , ,