Как установить стек LEMP на сервер Ubuntu 20.04

В этом руководстве показано, как установить стек LEMP (Nginx, MariaDB и PH P7.4) в Ubuntu 20.04. Программный стек — это набор программных инструментов, объединенных вместе. LEMP означает Linux, NGINX(Engine-X), MariaDB/MySQL и PHP, все они имеют открытый исходный код и бесплатны для использования. Это наиболее распространенный программный стек, который поддерживает динамические веб-сайты и веб-приложения. Linux — это операционная система; NGINX — веб-сервер; MariaDB/MySQL — это сервер базы данных, а PHP — это серверный язык сценариев, отвечающий за создание динамических веб-страниц.

 Обновление пакетов программного обеспечения

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

apt update && apt upgrade

У нас обновлении не было и мы продолжаем сразу дальше.

Установка веб сервера NGINX

NGINX — это высокопроизводительный веб-сервер, очень популярный в наши дни. Его также можно использовать в качестве обратного прокси-сервера и кэширующего сервера. Введите следующую команду, чтобы установить веб-сервер NGINX:

apt install nginx
Как установить стек LEMP на сервер Ubuntu 20.04

После его установки мы можем включить автоматический запуск NGINX во время загрузки, выполнив следующую команду:

systemctl enable nginx

Затем запустите NGINX с помощью этой команды:

systemctl start nginx

Теперь проверьте его состояние:

systemctl status nginx
Как установить стек LEMP на сервер Ubuntu 20.04

«Enabled» означает, что автозапуск во время загрузки включен, и мы видим, что NGINX работает. Вы также можете увидеть, сколько оперативной памяти использует NGINX , из вывода. Если приведенная выше команда не завершает работу сразу после запуска. Вам нужно нажать «q», чтобы выйти.

Проверьте версию NGINX:

nginx -v

У нас установленная версия:

root@firstbyte:~# nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

Теперь введите IP-адрес вашего сервера в адресной строке браузера. Вы должны увидеть веб-страницу «Welcome to nginx!», что означает, что веб-сервер NGINX работает правильно.

Как установить стек LEMP на сервер Ubuntu 20.04

Наконец, нам нужно сделать www-data (пользователя NGINX) владельцем веб-папки. По умолчанию он принадлежит пользователю root.

chown www-data:www-data /usr/share/nginx/html -R

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

Установка сервера базы данных MariaDB

MariaDB является заменой MySQL. Он разработан бывшими членами команды MySQL, которые обеспокоены тем, что Oracle может превратить MySQL в продукт с закрытым исходным кодом. Введите следующую команду, чтобы установить MariaDB:

apt install mariadb-server mariadb-client
Как установить стек LEMP на сервер Ubuntu 20.04

Подтвердим что мы хотим установить данное ПО и подождем пару минут чтобы установка завершилась:

После установки сервер MariaDB должна быть запущена автоматически. Используйте systemctl, чтобы проверить её статус:

systemctl status mariadb
Как установить стек LEMP на сервер Ubuntu 20.04

Если он не запущен, запустите его с помощью этой команды:

systemctl start mariadb

Чтобы разрешить автоматический запуск MariaDB во время загрузки ОС используйте команду:

systemctl enable mariadb

Теперь запустите сценарий безопасности после установки:

mysql_secure_installation

Когда он попросит вас ввести пароль root для MariaDB, нажмите клавишу Enter, так как пароль root еще не установлен. Затем введите «Y», чтобы установить пароль root для сервера MariaDB.

Затем можете нажать Enter, чтобы ответить на все оставшиеся вопросы, что приведет к удалению анонимного пользователя, отключению удаленного входа в систему root и удалению тестовой базы данных. Этот шаг является основным требованием для обеспечения безопасности базы данных MariaDB.

Как установить стек LEMP на сервер Ubuntu 20.04

По умолчанию пакет MariaDB в Ubuntu использует unix_socket для аутентификации пользователя при входе в систему, что в основном означает, что вы можете использовать имя пользователя и пароль ОС для входа в консоль MariaDB. Таким образом, вы можете запустить следующую команду для входа в систему, не предоставляя root-пароль MariaDB.

mariadb -u root
mariadb -u root

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

exit;

Проверьте информацию о версии сервера MariaDB:

mariadb --version
Как установить стек LEMP на сервер Ubuntu 20.04

Как видите, мы установили MariaDB, версию 10.3.38.

Установка PHP

PHP 7.4 является последней стабильной версией PHP для Ubuntu 20.04 и имеет незначительное преимущество в производительности по сравнению с PHP 7.3. Введите следующую команду, чтобы установить PHP 7.4 и некоторые распространенные модули PHP:

apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

Расширения PHP обычно необходимы для систем управления контентом (CMS), таких как WordPress . Например, если в вашей установке отсутствует php7.4-xml, то некоторые страницы вашего сайта WordPress могут быть пустыми, и вы можете найти ошибку в логах ошибок NGINX, например:

PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function xml_parser_create()

Установка этих расширений PHP гарантирует бесперебойную работу вашей CMS. Теперь запустите php7.4-fpm:

systemctl start php7.4-fpm

Также желательно включить автозапуск во время загрузки:

systemctl enable php7.4-fpm

Затем мы можем проверить его состояние:

Как установить стек LEMP на сервер Ubuntu 20.04

Если приведенная выше команда не завершает работу сразу после запуска. Вам нужно нажать «q», чтобы выйти.

Как создать серверный блок NGINX

Блок сервера NGINX похож на виртуальный хост в Apache. Мы не будем использовать блок сервера по умолчанию, потому что он не подходит для запуска PHP-кода, и если мы его изменим, он превратится в беспорядок. Поэтому удалите default символическую ссылку в sites-enabled папке, выполнив следующую команду: (Он все еще доступен как /etc/nginx/sites-available/default.)

rm /etc/nginx/sites-enabled/default

Затем используйте текстовый редактор командной «nano«, чтобы создать новый файл блока сервера в папке /etc/nginx/conf.d/:

nano /etc/nginx/conf.d/default.conf

Вставьте следующий текст в файл. Следующий фрагмент заставит NGINX прослушивать порт 80:

server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /usr/share/nginx/html/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Сохраните файл, нажав CTRL+X, а затем Enter.

Как установить стек LEMP на сервер Ubuntu 20.04

Затем протестируйте конфигурации NGINX:

nginx -t
Как установить стек LEMP на сервер Ubuntu 20.04

Если тест прошел успешно, перезагрузите NGINX:

systemctl restart nginx

Протестируйте PHP

Чтобы протестировать PHP-FPM с веб-сервером NGINX, нам нужно создать файл info.php в корневой папке где задумано загружать файлы сайта:

nano /usr/share/nginx/html/info.php

Вставьте следующий код PHP в файл:

<?php phpinfo(); ?>

И сохраните файл, нажав CTRL+X, а затем нажмите на Enter.

Теперь заходим на инфо страницу помощью ссылки:

http://IP-АДРЕС/info.php
Как установить стек LEMP на сервер Ubuntu 20.04

У вас получилось! Вы успешно установили NGINX, MariaDB и PHP 7.4 в Ubuntu 20.04. В целях безопасности вашего сервера вам следует удалить info.php файл сейчас, чтобы злоумышленники не увидели его.

rm /usr/share/nginx/html/info.php

Отлично! Теперь никто кроме вас или вашей команды не будет знать, какая точно конфигурация у вашего веб сервера и PHP.

Заключение

Мы надеемся что для вас было очень полезно научить, как можно установить LEMP на свой сервер с ОС Ubuntu 20.04.