Tutorial

Установка комплекта Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 20.04 [Краткое руководство]

Published on June 11, 2020

Developer Advocate

Русский
Установка комплекта Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 20.04 [Краткое руководство]

Введение

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

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

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

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

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

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

  1. sudo apt update
  2. sudo apt install nginx

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

  1. sudo ufw allow in "Nginx"

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

Страница Nginx по умолчанию

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

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

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

  1. sudo apt install mysql-server

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

  1. 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 воспользуйтесь следующей командой:

  1. 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 следующим образом:

  1. sudo mkdir /var/www/your_domain

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

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

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

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

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

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

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

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

  1. sudo nginx -t

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

Когда будете готовы, перезагрузите Nginx для внесения необходимых изменений:

  1. sudo systemctl reload nginx

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

  1. nano /var/www/your_domain/index.html

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

/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

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

Серверный блок Nginx

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

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

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

  1. nano /var/www/your_domain/info.php

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

/var/www/your_domain/info.php
<?php
phpinfo();

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

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

http://server_domain_or_IP/info.php

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

PHPInfo Ubuntu 20.04

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

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

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

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more