ЛР 2.7 - Настройка LEMP-сервера

LEMP = Linux Engine-X (nginx) MySQL PHP.
Настройка выполняется на хосте web.

Настройка NGINX

  1. Установите nginx:
    apt-get install nginx
  2. Создайте директорию для размещения файлов сайта:
    mkdir /var/www/web
  3. Создайте новый конфиг для сайта web.lab.lan:
    nano /etc/nginx/sites-available/web.lab.lan
server {
        listen 80;
        root /var/www/web;
        index index.php index.html index.htm;
        server_name web.lab.lan;

        location / {
                try_files $uri $uri/ =404;
        }
}
  1. Создайте символьную ссылку на новый конфиг:
    ln -s /etc/nginx/sites-available/web.lab.lan /etc/nginx/sites-enabled/web.lab.lan
  2. Протестируйте конфиг на наличие синтаксических ошибок:
    nginx -t
  3. Перезапустите демон nginx:
    systemctl restart nginx

Настройка MySQL

  1. Найдите в кэше репозиториев пакет для установки сервера mysql и установите его.
  2. Подключитесь к консоли СУБД командой mysql и задайте пароль для mysql-пользователя root.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'specialist';
mysql> quit;
  1. Финализируйте установку командой mysql_secure_installation

Настройка php-fpm

  1. Установите пакеты:
    apt install php-fpm php-mysql
  2. Найдите в системе файл сокета php-fpm.
    find / -name *fpm.sock
  3. Отредактируйте конфиг nginx будущего сайта, добавив ещё одну секцию location:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:<путь к сокету php-fpm>;
}
  1. Создайте в директории будущего сайта файл info.php со следующим содержимым:
<?php
phpinfo();
?>
  1. Откройте в браузере windows-машины адрес http://web.lab.lan/info.php

Установка CMS Wordpress

  1. В директорию сайта скачайте последнюю версию CMS WordPress и распакуйте ее:
    wget https://wordpress.org/latest.zip
    unzip latest.zip
  2. Переместите распакованные файлы в директорию сайта и смените владельца файлов:
    mv wordpress/* /var/www/web/
    chown -R www-data:root /var/www/
  3. Добавьте в конфиг nginx (в первый блок location) сниппет для WP, после чего перезапустите nginx:
location / {
        try_files $uri $uri/ =404;
        if (!-e $request_filename) {
                rewrite ^.+/?(/wp-.*) $1 last;
                rewrite ^.+/?(/.*\.php)$ $1 last;
                rewrite ^(.+)$ /index.php?q=$1 last;
        }
}
  1. Подключитесь к СУБД mysql и создайте пустую БД: mysql -uroot -p
mysql> CREATE DATABASE wordpress;
mysql> quit;
  1. Перейдите на сайт http://web.lab.lan/ и следуйте инструкциям по установке.

Настройка работы по HTTPS

  1. В консоли машины web создайте самоподписанный сертификат:
    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/web.key -out /etc/ssl/certs/web.crt
  2. Отредактируйте конфиг /etc/nginx/sites-available/web.lab.lan:
listen 443 ssl;
...
ssl_certificate /etc/ssl/certs/web.crt;
ssl_certificate_key /etc/ssl/private/web.key;
  1. Протестируйте конфигурацию и перезапустите nginx.
  2. Добавьте редирект с http на https:
server {
        listen 80;
        server_name web.lab.lan;
        return 301 https://web.lab.lan;
}