Установка LEMP-стека с php7.2 на Ubuntu 18

 

1. Обновление

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

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

4. Установка php7.2

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

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

 

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

 

Требования

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

 

1. Обновление

 

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

 

$ sudo apt update

$ sudo apt-get dist-upgrade

$ sudo apt-get autoremove

$ sudo apt-get autoclean

 

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

 

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

 

$ sudo apt install nginx

 

Когда Nginx установится, поместим его в автозагрузку

 

$ sudo systemctl enable nginx

 

Проверим, что он работает

 

$ systemctl status nginx

 

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

-----------------------------------------

● nginx.service - A high performance web server and a reverse proxy server

  Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

  Active: active (running) since Thu 2018-05-17 02:20:05 UTC; 2min 56s ago

    Docs: man:nginx(8)

Main PID: 19851 (nginx)

   Tasks: 2 (limit: 2059)

  CGroup: /system.slice/nginx.service

          ├─19851 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

          └─19853 nginx: worker process

-----------------------------------------

 

Если всё так, то нажмите «q»

 

А если это не так, то запустим его

 

$ sudo systemctl start nginx

 

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

 

$ nginx -v

 

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

 

nginx version: nginx/1.14.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 18.04.

 

$ sudo apt install mariadb-server mariadb-client

 

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

 

$ systemctl status mariadb

 

Вывод:

-----------------------------------------

● mariadb.service - MariaDB database server

  Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)

  Active: active (running) since Thu 2018-05-17 02:39:57 UTC; 49s ago

Main PID: 21595 (mysqld)

  Status: "Taking your SQL requests now…"

   Tasks: 27 (limit: 2059)

  CGroup: /system.slice/mariadb.service

          └─21595 /usr/sbin/mysqld

-----------------------------------------

 

Если процесс не выполняется, то запустите его следующей командой

 

$ sudo systemctl start mariadb

 

Для автозагрузки используем следующую команду

 

$ sudo systemctl enable mariadb

 

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

 

$ sudo mysql_secure_installation

 

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

 

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

 

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

 

$ sudo mariadb -u root

 

Чтобы выйти:

 

exit;

 

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

 

$ mariadb --version

 

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

 

4. Установка php7.2

 

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

 

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

 

После установки проверим статус:

 

$ systemctl status php7.2-fpm

 

Вывод:

-----------------------------------------

● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager

  Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor prese

  Active: active (running) since Thu 2018-05-17 03:04:46 UTC; 2min 43s ago

    Docs: man:php-fpm7.2(8)

Main PID: 31922 (php-fpm7.2)

  Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se

   Tasks: 3 (limit: 2059)

  CGroup: /system.slice/php7.2-fpm.service

          ├─31922 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)

          ├─31939 php-fpm: pool www

          └─31940 php-fpm: pool www

-----------------------------------------

 

Если php7.2 не запустился автоматически, то запустим следующей командой

 

$ sudo systemctl start php7.2-fpm

 

Поставим в автозагрузку.

 

$ sudo systemctl enable php7.2-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.2-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 на нём.

 

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

 

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