Введение

В этом кратком руководстве мы расскажем об установке комплекта LEMP на сервере под управлением Ubuntu 20.04.

Более подробную информацию с разъяснениями каждого шага можно найти в обучающем модуле «Установка комплекта Linux, Nginx, MySQL, PHP (LEMP) на сервере Ubuntu 20.0».

Предварительные требования

php illustration for: Предварительные требования

Для выполнения этого руководства вам потребуется доступ к серверу Ubuntu 20.04 с пользователем с правами sudo.

Шаг 1 — Установка Nginx

Обновите кэш диспетчера пакетов и установите Nginx с помощью следующей команды:

				
					
sudo apt update

sudo apt install nginx

				
			

После завершения установки вам нужно будет изменить настройки брандмауэра, чтобы разрешить трафик HTTP на вашем сервере. Запустите следующую команду, чтобы разрешить внешний доступ к порту 80 (HTTP):

				
					
sudo ufw allow in "Nginx"

				
			

После добавления нового правила брандмауэра вы можете проверить, запущен ли сервер, запросив доступ к публичному IP-адресу или доменному имени сервера из вашего веб-браузера. Страница будет выглядеть следующим образом:

Шаг 2 — Установка MySQL

Теперь мы установим MySQL, популярную СУБД, используемую в средах PHP.

Используйте apt для получения и установки этого программного обеспечения:

				
					
sudo apt install mysql-server

				
			

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

				
					
sudo mysql_secure_installation

				
			

Скрипт запросит подтверждение настройки плагина VALIDATE PASSWORD PLUGIN. Выберите Y для активации или любой другой вариант, чтобы продолжить без активации этой функции. Если вы выберете ответ «yes» («Да»), вам будет предложено выбрать уровень подтверждения паролем.

Затем сервер попросит вас выбрать и подтвердить пароль для пользователя root СУБД MySQL. Хотя в MySQL метод аутентификации пользователя root по умолчанию не требует использования пароля даже при его наличии, задайте надежный пароль для обеспечения дополнительной безопасности.

Для всех остальных вопросов нужно выбирать Y и нажимать ENTER в каждом диалоге.

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

Шаг 3 — Установка PHP

Для установки пакетов php-fpm и php-mysql воспользуйтесь следующей командой:

				
					
sudo apt install php-fpm php-mysql

				
			

Шаг 4 — настройка Nginx для PHP

В этом руководстве мы настроим домен your_domain, но вы должны заменить это имя собственным доменным именем.

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

Создайте корневую веб-директорию для your_domain следующим образом:

				
					
sudo mkdir /var/www/<^>your_domain<^>

				
			

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

				
					
sudo chown -R $USER:$USER /var/www/<^>your_domain<^>

				
			

После этого откройте новый файл конфигурации в директории Nginx sites-available с помощью любого редактора командной строки. Мы будем использовать nano:

				
					
sudo nano /etc/nginx/sites-available/<^>your_domain<^>

				
			

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

				
					
[label /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;

 }



}





				
			

Когда вы закончите редактирование, сохраните и закройте файл. Если вы используете nano, можно ввести CTRL+X, а затем y и ENTER для подтверждения.

Активируйте вашу конфигурацию посредством привязки к файлу конфигурации из директории Nginx 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 в этом расположении, чтобы убедиться, что веб-сервер работает, как ожидалось:

				
					
nano /var/www/&lt;^&gt;your_domain&lt;^&gt;/index.html

				
			

Внесите в файл следующее:

				
					
[label /var/www/your_domain/index.html]

&lt;html&gt;

 &lt;head&gt;

 &lt;title&gt;&lt;^&gt;your_domain&lt;^&gt; website&lt;/title&gt;

 &lt;/head&gt;

 &lt;body&gt;

 &lt;h1&gt;Hello World!&lt;/h1&gt;



 &lt;p&gt;This is the landing page of &lt;strong&gt;&lt;^&gt;your_domain&lt;^&gt;&lt;/strong&gt;.&lt;/p&gt;

 &lt;/body&gt;

&lt;/html&gt;

				
			

Теперь откройте браузер и получите доступ к доменному имени сервера или IP-адресу, как указано в директиве server_name в файле конфигурации вашего серверного блока:

				
					
http://&lt;^&gt;server_domain_or_IP&lt;^&gt;

				
			

Страница будет выглядеть следующим образом:

Шаг 5 — Тестирование PHP с помощью Nginx

Теперь мы создадим тестовый скрипт PHP для подтверждения возможности принимать и обрабатывать запросы файлов PHP в Nginx.

Создайте новый файл с именем info.php в корневой папке сайта:

				
					
nano /var/www/&lt;^&gt;your_domain&lt;^&gt;/info.php

				
			

В результате откроется пустой файл. Добавьте в файл следующее:

				
					
[label /var/www/your_domain/info.php]

&lt;?php

phpinfo();

				
			

После завершения редактирования сохраните и закройте файл.

Теперь вы можете получить доступ к этой странице в веб-браузере, посетив доменное имя или публичный IP-адрес, настроенный в файле конфигурации Nginx, добавив /info.php в конце:

				
					
http://&lt;^&gt;server_domain_or_IP&lt;^&gt;/info.php

				
			

Вы увидите веб-страницу, содержащую подробную информацию о вашем сервере:

После проверки соответствующей информации о вашем сервере PHP с помощью данной страницы рекомендуется удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и о вашем сервере Ubuntu. Вы можете использовать rm для удаления этого файла:

				
					
sudo rm /var/www/&lt;^&gt;your_domain&lt;^&gt;/info.php

				
			

Другие обучающие руководства

Ниже представлены ссылки на более подробные материалы, связанные с настоящим обучающим руководством: