Установка LEMP-стека с php7.4 на Ubuntu 20

Это обновлённая версия этой статьи для Ubuntu 20.04 LTS

Из этого мануала вы узнаете как установить Nginx, MariaDB и PHP7.4 на Ubuntu 20.04. Данный материал может быть применен как для выделенного сервера, так и для локального компьютера. PHP версии 7.4 доступен в Ubuntu 20 и содержит улучшения производительности и безопасности.

Требования

Данный материал применим к любой машине с установленной Ubuntu 20. 

Шаг 1. Обновление и подготовка

Перед обновлением хорошим тоном будет обновить существующие приложения в системе.

sudo apt update

Внимание: при установке пакетов приложений описанных ниже, если каким-то образом автозагрузка для них не включилась (при вызове systemctl status package_name в строке Loaded написано Disabled), то следующая команда исправит это

systemctl enable package_name

Если так же по какой-то причине после установки приложение не запустилось, то для запуска выполните

systemctl start package_name

Теперь можно приступить к установке

Шаг 2. Установка Nginx

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

sudo apt install nginx

Проверим версию:

nginx -v

Вывод должен быть таким

nginx version: nginx/1.18.0 (Ubuntu)

Теперь можно в адресной строке браузера ввести IP-адрес вашей машины и попасть на стартовую страницу веб-сервера.

Наконец нужно сделать пользователя www-data владельцем директории в которой лежат web-файлы.

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

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

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

sudo apt install mariadb-server mariadb-client

После установки сервер должен автоматически запуститься. Используйте первый пункт статьи если это не так.

Теперь выполним скрипт настройки безопасности sql-сервера

sudo mysql_secure_installation

При запросе пароля для root просто нажмите Enter, поскольку пароль для рута еще не установлен. Затем нажмите y, чтобы установить его

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

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

Для проверки корректности установки сервера, введите:

mariadb --version
mariadb Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Шаг 4. Установка php7.4

php7.4 включен в основной репозиторий Ubuntu 20 и для его установки введите следующую команду.

sudo 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

После установки php7.4-fpm должен автоматически запуститься. Используйте первый пункт статьи если это не так.

Шаг 5. Создание блока server в Nginx

Блок в Nginx — как виртуальный хост в Apache. Использовать установленный по-умолчанию не будем, поскольку в нём не прописана поддержка php, поэтому создадим свой. Так что удалим дефолтную ссылку на этот файл. (сам файл останется нетронутым и будет лежать в /etc/nginx/sites-available/)

sudo rm /etc/nginx/sites-enabled/default

Затем создадим новый блок в новом файле, находящимся в директории /etc/nginx/conf.d/

sudo 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;
  }
  location ~ /.ht {
    deny all;
  }
}

Сохраните и закройте файл. Затем протестируйте новую конфигурацию Nginx.

sudo nginx -t

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

sudo systemctl reload nginx

Шаг 6 (необязательный). Проверка PHP

Для тестирования создадим файл в директории web-файлов Nginx. 

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

И вставим такой текст

<?php phpinfo(); ?>

Сохраним и выйдем из редактора.

Теперь заходим на http://ваш_IP/info.php

Если всё было выполнено правильно, то будет отображена подробная информация о вашем сервере, в том числе и версии php на нём. 

Страница проверки версии php

Поздравляем! Вы успешно установили Nginx, MariaDB и PHP7.4 на Ubuntu 20.04. Для безопасности удалим файл info.php, чтобы не «светить» своей информацией.

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

Вот и всё! Надеюсь этот туториал вам помог и вы успешно установили LEMP-стек на Ubuntu 20.04.

5 thoughts on “Установка LEMP-стека с php7.4 на Ubuntu 20

  1. На подскоке

    Речь наверное про смайлики в Nextcloud Talk. Если MariaDB и всё перевёл на баракуду — то смайликов всё равно нет, а знаки вопроса только вместо них. Когда ставишь Mysql, то смайлы по дефолту есть, без плясок с бубном.

    1. DiDim Автор записи

      Сделал всё по инструкции по включению 4-х байтовой кодировки, смайлики появились, хотя да, до включения были одни знаки вопроса. База — MariaDB. Тестировал на чистом Nextcloud.

  2. Александр

    Спасибо, что поддерживаешь свой сайт регулярными инструкциями.
    Хочу кстати отметить, что ставил МашуДБ и как бы я не плясал, как бы не переводил всё на Барракуду — вместо смайликов были «????». В итоге накатил MySQL и кайфую со смайликами. Никаких проблем. И да, подскажи как избавиться от проблемы в логах php /var/log/php7.4-fpm.log
    [22-Apr-2020 19:14:45] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

    [23-Apr-2020 09:00:21] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 2 idle, and 9 total children

    У тебя почему-то не разобран этот момент совсем.
    Не знаю еще, зависит ли это от самоподписного сертификата или моей 512 МБ ОЗУ ВПС, но у меня пинги до сайта http://ipvps страшные:
    Amsterdam: 200 (531ms)
    London: 200 (573ms)
    Frankfurt: 200 (442ms)
    Moscow: 200 (298ms)
    В то время как пинги чисто по айпи хорошие:
    Latest response times:
    Amsterdam: ON (50ms)
    London: ON (53ms)
    Frankfurt: ON (46ms)
    Moscow: ON (1ms)

    Надеюсь просвятишь меня хоть бы по части вопросов. Спасибо

    1. DiDim Автор записи

      Про переход на 4-х байтовую кодировку я писал в обновляемой статье про Nextcloud — https://kurazhov.ru/nextcloud-tuning/ Если там ничего не помогло, то помочь пока не могу. У меня смайлики показываются, но я их всё равно не использую в именах файлов. И ни разу не попадались.
      Насчёт проблем с php-fpm. Нашёл у себя только в логах месячной давности на машине с облаком Видимо эта проблема на малонагруженном сервере меня не сильно беспокоит. Судя по описанию, там рекомендуют в файле /etc/php/7.4/fpm/pool.d/www.conf подкрутить нужные переменные, рассчитав необходимые значения. Информации по этому в инете навалом.
      По поводу пингов не понял, что, куда и откуда.

      1. На подскоке

        Речь наверное про смайлики в Nextcloud Talk. Если MariaDB и всё перевёл на баракуду — то смайликов всё равно нет, а знаки вопроса только вместо них. Когда ставишь Mysql, то смайлы по дефолту есть, без плясок с бубном.

Добавить комментарий

Ваш адрес email не будет опубликован.