Перейти к основному контенту

Как установить Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 18.04/20.04

LEMP — стек технологий, используемый для развертывания веб-приложений. В отличии от LAMP, в LEMP вместо Apache устанавливается Nginx.

В REG.RU вы можете заказать облачный сервер с установленным шаблоном LEMP на базе операционной системы Ubuntu 20.04. В данной статье описана ручная установка LEMP на Ubuntu 18.04/20.04.

Установка LEMP Linux в один клик

LEMP — это набор программного обеспечения, который используется для отображения динамических веб-страниц и веб-приложений. Установка NGINX, MySQL и PHP-FPM на вашем сервере c Ubuntu, менее чем за 30 секунд.

Заказать сервер с LEMP

Сравнение серверов Apache и Nginx

Apache:

  • Разрабатывается с 1995 года, огромное количество пользователей, многочисленные модули, предназначенные для расширения его функциональности.
  • Медленная работа веб-сервера из-за поточно-ориентированного подхода при большой нагрузке. Необходимость создавать новые процессы и увеличивать объём потребляемой памяти.
  • Необходимость устанавливать ограничения по потребляемым ресурсам. При достижении ограничений новые соединения будут отклонены.

Nginx:

  • Веб-сервер с открытым исходным кодом, написанный как аналог Apache для решения проблем с производительностью и масштабируемостью.
  • Механизм, управляемый событиями, асинхронный и неблокирующий, не создаёт новые процессы для каждого веб-запроса.

1 этап. Подготовка сервера

Все действия по установке производятся на сервере через подключение по SSH.

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

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

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

adduser userName

Где UserName — имя нового пользователя.

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

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

usermod -aG sudo UserName

Где UserName — имя созданного ранее пользователя.

Готово. Новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем. Или введите команду:

su - userName

Обновление операционной системы

Прежде чем установить на Ubuntu LEMP, нужно обновить операционную систему до актуального состояния с помощью команды:

sudo apt-get update && apt-get upgrade -y

2 этап. Установка Nginx

Для установки Nginx введите команду:

sudo apt-get install nginx

На этом установка закончена. В Ubuntu Nginx настроен на запуск сразу после установки.

Настройка Nginx

Для корректной работы Nginx необходимо настроить firewall, открыть порты для подключения к серверу.

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

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables-save

Если вы планируете использовать SSL-сертификат, для подключения по HTTPS выполните команду:

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables-save

При переходе по IP-адресу вашего сервера откроется страница Nginx:

Готово. Установка Nginx завершена.

3 этап. Установка MySQL

Далее нам необходимо установить систему управления базами данных MySQL.

  1. 1.

    Выполните команду:

    sudo apt-get install mysql-server
  2. 2.

    В зависимости от версии MySQL во время установки вам будет предложено ввести пароль root-пользователя (пароль администратора) сервера баз данных:

    ubuntu mysql Ubuntu MySQL

Если это окно не появилось, значит настройка MySQL для вашей версии выполняется без пароля. Аутентификация для пользователя root в этом случае происходит при помощи плагина auth_socket. Чтобы проверить способ аутентификации:

  1. 1.

    Запустите MySQL:

    mysql
  2. 2.

    Выполните команду:

    SELECT user,authentication_string,plugin,host FROM mysql.user;

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

    Тип аутентификации пользователей MySQL

  3. 3.
    Если у пользователя root в столбце «plugin» указано «auth_socket», значит доступ для этого пользователя выполняется при помощи плагина без пароля.

Настройка безопасности MySQL

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

  1. 1.

    Запустите скрипт командой:

    sudo mysql_secure_installation
  2. 2.

    Введите «Y» и нажмите Enter:

    Допустимая сложность пароля в валидаторе MySQL

    Вам нужно задать допустимую сложность пароля от 0 до 2 при помощи плагина VALIDATE PASSWORD, где:

    • 0 — слабый пароль из 8 и более символов. Использование цифр и специальных символов не обязательно;

    • 1 — средний пароль из 8 и более символов. Обязательно использование цифр и специальных символов;

    • 2 — сложный пароль из 8 и более символов. Обязательное использование цифр и специальных символов и запрет на использование общих фраз.

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

  3. 3.

    На каждом следующем этапе вам нужно ввести «Y» и нажать Enter. Таким образом вы:

    • удалите анонимных пользователей,

    • запретите удалённое подключение для root-пользователя,

    • удалите тестовую базу данных,

    • перезагрузите таблицу привилегий.

Готово, первоначальная настройка безопасности MySQL выполнена.

Работа с базой данных

Для работы с базой данных вам необходимо создать пользователя и саму базу.

После установки MySQL автоматически будет создан root-пользователь. Работать с базой данных под root небезопасно, поэтому необходимо создать нового пользователя и назначить ему права доступа.

Запустите сервер базы данных с помощью команды:

mysql -u root -p

Система запросит пароль, который был указан при установке MySQL.

Как создать пользователя

  1. 1.

    Создайте пользователя с помощью команды:

    CREATE USER 'user-name'@'localhost' IDENTIFIED BY 'password';

    Замените значения внутри кавычек:

    • вместо user-name укажите логин пользователя базы данных;
    • вместо password укажите пароль нового пользователя.
  2. 2.

    Назначьте все права доступа для созданного пользователя:

    GRANT ALL PRIVILEGES ON * . * TO 'user-name'@'localhost';

    Не забудьте изменить user-name на логин, который был указан при создании пользователя.

  3. 3.

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

    FLUSH PRIVILEGES;

Как создать базу данных

Для создания базы данных введите команду:

CREATE DATABASE BaseName;

Где BaseName — это название базы данных.

Готово. Теперь вы можете удалённо подключиться к базе данных или привязать её к вашему проекту. Чтобы завершить работу с MySQL, нажмите Ctrl + D.

4 этап. Установка PHP Ubuntu

Для установки PHP введите команду:

sudo apt-get install php-fpm php-mysql

Настройка PHP Ubuntu

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

  • Для Ubuntu 18.04
sudo nano /etc/php/7.2/fpm/php.ini
  • Для Ubuntu 20.04
sudo nano /etc/php/7.4/fpm/php.ini

Если ни одна из команд не подходит, узнайте версию PHP на вашем сервере командой:

php -v

Затем выполните команду:

sudo nano /etc/php/X.X/fpm/php.ini

Вместо X.X подставьте версию PHP на вашем сервере.

Найдите в файле параметр cgi.fix_pathinfo, раскомментируйте его, убрав точку с запятой перед ним, и установите значение «0». В редакторе nano вы можете воспользоваться поиском по файлу клавишей F6.

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

Сохраните изменения в файле и закройте его:

Ubuntu php-fpm ubuntu php-fpm

Перезапустите PHP командой:

  • Для Ubuntu 18.04
sudo systemctl restart php7.2-fpm
  • Для Ubuntu 20.04
sudo systemctl restart php7.4-fpm

Как установить PHP 8

На данный момент в официальных репозиториях Ubuntu нет PHP версии 8. Чтобы установить эту версию:

  1. 1.

    Установите программу для управления APT-пакетами:

    sudo apt install software-properties-common
  2. 2.

    Добавьте необходимый репозиторий:

    sudo add-apt-repository ppa:ondrej/php
  3. 3.
    Нажмите Enter, чтобы продолжить.
  4. 4.

    Установите PHP 8.0:

    apt install php8.0-mysql php8.0-fpm

Готово, PHP 8 установлен на ваш сервер

Как выбрать версию PHP по умолчанию в Ubuntu

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

  1. 1.

    Выполните команду:

    sudo update-alternatives --config php
  2. 2.

    На экране вы увидите список установленных версий. Версия по умолчанию будет отмечена звёздочкой:

    Как выбрать версию PHP по умолчанию в Ubuntu

    Нажмите Enter, чтобы оставить текущую версию. Или введите порядковый номер другой версии, которую хотите установить по умолчанию.

Готово, версия по умолчания установлена.

5 этап. Настройка Nginx и связь с PHP

Далее необходимо настроить Nginx для использования обработчика PHP и отображения динамического контента.

Если вы настраивали виртуальные хосты на Apache, то логика примерно одинаковая, только вместо VirtualHost будут блоки server.

Откройте дефолтный файл конфигурации Nginx командой:

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

В файле вы увидите блок server с примерным содержанием:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }

        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #       fastcgi_pass 127.0.0.1:9000;
        #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        #}

        #location ~ /\.ht {
        #       deny all;
        #}

}

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

  • В строке, где указана директива index добавьте обработку индексного файла index.php.
  • В директиве server_name вы можете указать имя своего домена (если он привязан к серверу) или IP-адрес сервера.
  • Раскомментируйте блок location ~\.php$ и строки, которые входят в него, кроме fastcgi_pass 127.0.0.1:9000;. Данный блок отвечает за обработку PHP-запросов.
  • Раскомментируйте блок location ~ /\.ht и строку внутри, он отвечает за работу с файлами .htaccess.

Сохраните изменения и закройте файл. Результат:

Чтобы проверить файл на наличие ошибок, выполните команду:

sudo nginx -t

Если система выдала сообщение о наличии ошибок, исправьте их перед тем, как следовать инструкции дальше.

Затем перезагрузите Nginx командой:

sudo systemctl reload nginx

Готово. Nginx и связь с PHP настроена. Далее вы можете проверить корректность работы сервера.

Проверка настроек

Для проверки работы PHP введите команду:

sudo bash -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php'

Затем перейдите по адресу 123.123.123.123/info.php (где 123.123.123.123 — IP-адрес вашего сервера) или введите домен, который указали на этапе «Настройка Nginx и связь с PHP».

Откроется страница с информацией о настройках веб-сервера PHP:

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

Готово.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 1 из 1