В этом руководстве показано, как установить стек 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

После его установки мы можем включить автоматический запуск NGINX во время загрузки, выполнив следующую команду:
systemctl enable nginx
Затем запустите NGINX с помощью этой команды:
systemctl start nginx
Теперь проверьте его состояние:
systemctl status nginx
«Enabled» означает, что автозапуск во время загрузки включен, и мы видим, что NGINX работает. Вы также можете увидеть, сколько оперативной памяти использует NGINX , из вывода. Если приведенная выше команда не завершает работу сразу после запуска. Вам нужно нажать «q», чтобы выйти.
Проверьте версию NGINX:
nginx -v
У нас установленная версия:
root@firstbyte:~# nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
Теперь введите IP-адрес вашего сервера в адресной строке браузера. Вы должны увидеть веб-страницу «Welcome to nginx!», что означает, что веб-сервер NGINX работает правильно.
Наконец, нам нужно сделать 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
Подтвердим что мы хотим установить данное ПО и подождем пару минут чтобы установка завершилась:
После установки сервер MariaDB должна быть запущена автоматически. Используйте systemctl, чтобы проверить её статус:
systemctl status mariadb
Если он не запущен, запустите его с помощью этой команды:
systemctl start mariadb
Чтобы разрешить автоматический запуск MariaDB во время загрузки ОС используйте команду:
systemctl enable mariadb
Теперь запустите сценарий безопасности после установки:
mysql_secure_installation
Когда он попросит вас ввести пароль root для MariaDB, нажмите клавишу Enter, так как пароль root еще не установлен. Затем введите “Y”, чтобы установить пароль root для сервера MariaDB.
Затем можете нажать Enter, чтобы ответить на все оставшиеся вопросы, что приведет к удалению анонимного пользователя, отключению удаленного входа в систему root и удалению тестовой базы данных. Этот шаг является основным требованием для обеспечения безопасности базы данных MariaDB.
По умолчанию пакет MariaDB в Ubuntu использует unix_socket для аутентификации пользователя при входе в систему, что в основном означает, что вы можете использовать имя пользователя и пароль ОС для входа в консоль MariaDB. Таким образом, вы можете запустить следующую команду для входа в систему, не предоставляя root-пароль MariaDB.
mariadb -u root
mariadb -u root
Для выхода из консоли MariaDB выполните команду:
exit;
Проверьте информацию о версии сервера MariaDB:
mariadb --version
Как видите, мы установили 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
Затем мы можем проверить его состояние:
Если приведенная выше команда не завершает работу сразу после запуска. Вам нужно нажать «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.
Затем протестируйте конфигурации NGINX:
nginx -t
Если тест прошел успешно, перезагрузите 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
У вас получилось! Вы успешно установили NGINX, MariaDB и PHP 7.4 в Ubuntu 20.04. В целях безопасности вашего сервера вам следует удалить info.php файл сейчас, чтобы злоумышленники не увидели его.
rm /usr/share/nginx/html/info.php
Отлично! Теперь никто кроме вас или вашей команды не будет знать, какая точно конфигурация у вашего веб сервера и PHP.
Заключение
Мы надеемся что для вас было очень полезно научить, как можно установить LEMP на свой сервер с ОС Ubuntu 20.04.