Данный мануал коротко расскажет, как установить все компоненты стека 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