- Как установить Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 18.04/20.04
- Установка LEMP Linux в один клик
- Сравнение серверов Apache и Nginx
- 1 этап. Подготовка сервера
- Создание пользователя
- Обновление операционной системы
- 2 этап. Установка Nginx
- Настройка Nginx
- 3 этап. Установка MySQL
- Настройка безопасности MySQL
- Работа с базой данных
- Как создать пользователя
- Как создать базу данных
- 4 этап. Установка PHP Ubuntu
- Настройка PHP Ubuntu
- Как установить PHP 8
- Как выбрать версию PHP по умолчанию в Ubuntu
- 5 этап. Настройка Nginx и связь с PHP
- Проверка настроек
Как установить 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 секунд.
Сравнение серверов Apache и Nginx
- Разрабатывается с 1995 года, огромное количество пользователей, многочисленные модули, предназначенные для расширения его функциональности.
- Медленная работа веб-сервера из-за поточно-ориентированного подхода при большой нагрузке. Необходимость создавать новые процессы и увеличивать объём потребляемой памяти.
- Необходимость устанавливать ограничения по потребляемым ресурсам. При достижении ограничений новые соединения будут отклонены.
- Веб-сервер с открытым исходным кодом, написанный как аналог Apache для решения проблем с производительностью и масштабируемостью.
- Механизм, управляемый событиями, асинхронный и неблокирующий, не создаёт новые процессы для каждого веб-запроса.
1 этап. Подготовка сервера
Все действия по установке производятся на сервере через подключение по SSH.
Создание пользователя
Все действия по установке LEMP рекомендуем выполнять не через пользователя root. Рекомендуем создать пользователя с sudo-правами. Так вы дополнительно обезопасите свой сервис и избежите случайных ошибок, которые могут сломать вашу операционную систему.
Чтобы создать пользователя, введите команду:
Где UserName — имя нового пользователя.
Система попросит ввести пароль для нового пользователя и дополнительную информацию:
Теперь установите права доступа, чтобы новый пользователь мог использовать команду sudo. Для этого выполните команду:
Где UserName — имя созданного ранее пользователя.
Готово. Новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем. Или введите команду:
Обновление операционной системы
Прежде чем установить на 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
Если вы планируете использовать SSL-сертификат, для подключения по HTTPS выполните команду:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
При переходе по IP-адресу вашего сервера откроется страница Nginx:
Готово. Установка Nginx завершена.
3 этап. Установка MySQL
Далее нам необходимо установить систему управления базами данных MySQL.
sudo apt-get install mysql-server
В зависимости от версии MySQL во время установки вам будет предложено ввести пароль root-пользователя (пароль администратора) сервера баз данных:
Если это окно не появилось, значит настройка MySQL для вашей версии выполняется без пароля. Аутентификация для пользователя root в этом случае происходит при помощи плагина auth_socket. Чтобы проверить способ аутентификации:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Если у пользователя root в столбце «plugin» указано «auth_socket», значит доступ для этого пользователя выполняется при помощи плагина без пароля.
Настройка безопасности MySQL
После того как вы смогли установить MySQL в Ubuntu, выполните скрипт безопасности. Для этого следуйте инструкции:
sudo mysql_secure_installation
- 0 — слабый пароль из 8 и более символов. Использование цифр и специальных символов не обязательно;
- 1 — средний пароль из 8 и более символов. Обязательно использование цифр и специальных символов;
- 2 — сложный пароль из 8 и более символов. Обязательное использование цифр и специальных символов и запрет на использование общих фраз.
Для этого введите нужную цифру и нажмите Enter. Затем задайте и подтвердите пароль. В будущем плагин не позволит использовать пароли, которые не соответствуют уровню, который вы выбрали.
- удалите анонимных пользователей,
- запретите удалённое подключение для root-пользователя,
- удалите тестовую базу данных,
- перезагрузите таблицу привилегий.
Готово, первоначальная настройка безопасности MySQL выполнена.
Работа с базой данных
Для работы с базой данных вам необходимо создать пользователя и саму базу.
После установки MySQL автоматически будет создан root-пользователь. Работать с базой данных под root небезопасно, поэтому необходимо создать нового пользователя и назначить ему права доступа.
Запустите сервер базы данных с помощью команды:
Система запросит пароль, который был указан при установке MySQL.
Как создать пользователя
CREATE USER 'user-name'@'localhost' IDENTIFIED BY 'password';
- вместо user-name укажите логин пользователя базы данных;
- вместо password укажите пароль нового пользователя.
GRANT ALL PRIVILEGES ON * . * TO 'user-name'@'localhost';
Как создать базу данных
Для создания базы данных введите команду:
Где BaseName — это название базы данных.
Готово. Теперь вы можете удалённо подключиться к базе данных или привязать её к вашему проекту. Чтобы завершить работу с MySQL, нажмите Ctrl + D.
4 этап. Установка PHP Ubuntu
Для установки PHP введите команду:
sudo apt-get install php-fpm php-mysql
Настройка PHP Ubuntu
Теперь настройте безопасность интерпретатора, чтобы избежать запуск нежелательных файлов. Для этого откройте файл конфигурации командой:
sudo nano /etc/php/7.2/fpm/php.ini
sudo nano /etc/php/7.4/fpm/php.ini
Если ни одна из команд не подходит, узнайте версию PHP на вашем сервере командой:
sudo nano /etc/php/X.X/fpm/php.ini
Вместо X.X подставьте версию PHP на вашем сервере.
Найдите в файле параметр cgi.fix_pathinfo , раскомментируйте его, убрав точку с запятой перед ним, и установите значение «0». В редакторе nano вы можете воспользоваться поиском по файлу клавишей F6.
По умолчанию, если запрашиваемый PHP файл будет не найден, то интерпретатор попытается исполнить ближайший файл, который сможет найти. Данная настройка позволит ограничить доступ к файлам.
Сохраните изменения в файле и закройте его:
Перезапустите PHP командой:
sudo systemctl restart php7.2-fpm
sudo systemctl restart php7.4-fpm
Как установить PHP 8
На данный момент в официальных репозиториях Ubuntu нет PHP версии 8. Чтобы установить эту версию:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
apt install php8.0-mysql php8.0-fpm
Готово, PHP 8 установлен на ваш сервер.
Как выбрать версию PHP по умолчанию в Ubuntu
Если на вашем сервере установлено несколько версий PHP, вы можете выбрать одну из них в качестве версии, которая будет использоваться по умолчанию. Для этого:
sudo update-alternatives --config php
На экране вы увидите список установленных версий. Версия по умолчанию будет отмечена звёздочкой: Нажмите 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.
Сохраните изменения и закройте файл. Результат:
Чтобы проверить файл на наличие ошибок, выполните команду:
Если система выдала сообщение о наличии ошибок, исправьте их перед тем, как следовать инструкции дальше.
Затем перезагрузите Nginx командой:
sudo systemctl reload nginx
Готово. Nginx и связь с PHP настроена. Далее вы можете проверить корректность работы сервера.
Проверка настроек
Для проверки работы PHP введите команду:
sudo bash -c 'echo "" > /var/www/html/info.php'
Затем перейдите по адресу 123.123.123.123/info.php (где 123.123.123.123 — IP-адрес вашего сервера) или введите домен, который указали на этапе «Настройка Nginx и связь с PHP».
Откроется страница с информацией о настройках веб-сервера PHP:
Важно! После проверки обязательно удалите этот файл, иначе любой пользователь сможет получить доступ к конфиденциальной информации о сервере.