Заказали тут у меня статейку про установку wordpress на ubuntu 18.04, ну вопщем, что бы не было всяких этих ваших краж оригинального текста и прочей шушеры, вот ссылка на гуглодоку со статьёй

А вот и сама статья:


Установка и базовая настройка WordPress в связке nginx и php-fpm

В рамках этой статьи рассмотрим подробную установку популярного движка WordPress для блогов, лендингов и интернет магазинов на сервере под управлением Ubuntu 18.04 (для более старых, но актуальных версий ubuntu процесс отличается не очень сильно).

Версии ПО используемые для установки в данном руководстве:

    nginx — версии 1.14

    php-fpm — версии 7.3

    mysql — percona-server 5.7

Настройка дистрибутива, добавление репозиториев и обновление списка пакетов.

Начать установку любого нового сервера нужно с добавления репозиториев и обновления списков пакетов, поэтому добавим несколько репозиториев где версии ПО актуальнее чем в системных:

sudo apt install curl wget gnupg2 ca-certificates lsb-releaseустанавливаем базовый набор ПО
sudo add-apt-repository ppa:ondrej/phpДобавляем репозиторий с php, подтверждаем добавление
sudo echo «deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx» \  | sudo tee /etc/apt/sources.list.d/nginx.list curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key addДобавляем репозиторий nginx
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.debsudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.debsudo percona-release setup ps57Добавляем репозиторий Percona для установки mysql

И обновим систему:

sudo apt update && sudo apt upgrade

На все вопросы от ОС отвечаем yes. 

ВАЖНО!! — На уже работающих давно серверах процедура обновления системы не только не требуется, но еще и может быть опасной.

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

    НАПИСАТЬ ПРО СИСКТЛЬ?

Установка и базовая настройка nginx, php-fpm, mysql

Установка

В установке wordpress нет ничего сложного, начнём установку ПО с установки требуемых компонентов web-сервера, а именно:

Nginx

Mysql (percona server 5.7)

php-fpm и необходимые модули

    sudo apt install nginx percona-server-server-5.7 php7.3 php7.3-fpm php7.3-zip php7.3-mysql php7.3-curl php7.3-gd php7.3-mbstring php7.3-xml php7.3-xmlrpc

Процесс установки проходит без каких либо трудностей кроме того, что сервер mysql попросит придумать пароль для входа под root:

Придумываем и записываем пароль, у нас для примера будет пароль сгенерированный утилитой pwgen: 

ieyah7Aew6oom8ohsooghies

Вводим пароль, подтверждаем, установка продолжится.

После окончания процедуры установки можно проверить запущены ли у нас сервисы которые мы установили и их версии:

Как видим, nginx у нас не запущен. Запускаем его:

systemctl start nginx

Настройка

NGINX

Nginx, в отличии от apache/httpd является более современным, но не имеет в себе встроенного обработчика php, поэтому для работы практически любого сайта требуется установить внешний сервис для обработки скриптов (php-fpm) и настроить nginx для взаимодействия с ним и параллельно напишем простейшую конфигурацию для виртуального хоста с wordpress.

Начнём с написания конфигурационного файла для nginx:

server {

    listen 80;

    listen 443;

    server_name ubuntu-wordpress.ru www.ubuntu-wordpress.ru; #доменное имя сайта.

    set $rootpath /var/www/ubuntu-wordpress.ru/; #указываем путь до корня сайта

    root $rootpath; #определяем что корень сайта находится в переменной rootpath

    client_max_body_size 8M; #необходимо для установки некоторых модулей wordpress

    access_log /var/log/nginx/ubuntu-wordpress.ru_access.log; #указываем пути до логов

    error_log /var/log/nginx/ubuntu-wordpress.ru_error.log;

        location / {

           root $rootpath;

           index index.html index.php index.htm;

           try_files $uri $uri/ @notfound;

                }

       location /wp-admin { #если сайт будет открыт для всего интернета, то в целях безопасности стоит закрыть доступ до админки сайта для всех кроме разрешённых IP.

           index index.php;

           try_files $uri $uri/ /index.php?$args;

           allow 127.0.0.1/32;

           allow <Ваш_ip>/32;

           deny all;

               }

       location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { #настроим кеширование статических файлов для уменьшения расхода трафика и увеличения скорости работы сайта

                expires 180m;

               }

       location ~* \.php$ { #самый важный локейшн для сайта

           root $rootpath;  

           try_files $uri = 404; #указываем что если не получилось найти файл — отдать ошибку

           fastcgi_split_path_info ^(.+\.php)(/.+)$; #необходимо для безопасности

           fastcgi_pass unix:/var/run/php-fpm/php73-ubuntu-wordpress.sock; #указываем путь к сокету или к порту пула php-fpm (это настроим позднее)

           fastcgi_index index.php; #несколько служебных параметров необходимых для корректной работы сайта

           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

           include fastcgi_params;

               }

       location @notfound {

           error_page 404 /4xx.html;

            return 404;

}

}

И запишем его в файл:

sudo vi /etc/nginx/conf.d/ubuntu-wordpress.ru.conf

Проверяем корректность конфигурации и релоадим nginx:

sudo nginx -t

sudo nginx -s reload

А так же создаём директорию в которой будет находиться сайт (её мы указывали в переменной $rootpath) и выдаём права на неё для nginx:

/var/www/ubuntu-wordpress.ru/

mkdir -p /var/www/ubuntu-wordpress.ru/

chown -R nginx:nginx /var/www/

php-fpm

Конфигурационные файлы пулов находятся по пути /etc/php/7.3/fpm/pool.d/

Удалим оттуда стандартный www.conf и напишем свой для нашего сайта:

[ubuntu-wp] ;указываем имя пула

listen = /var/run/php-fpm/php73-ubuntu-wordpress.sock ;указываем путь до сокета который указывали ранее

listen.allowed_clients = 127.0.0.1 ;безопасность, указываем кто может подключаться к пулу

listen.owner = nginx ;то же

listen.group = nginx ;то же

user = nginx ;от какого пользователя будет запущен пул и кто будет иметь доступ к исполнению скриптов. Следует разделять списки пользователей для разных сайтов.

group = nginx ;от какой группы пользователей будет запущен пул.

pm = dynamic ;балансирование нагрузки, режим динамический

pm.max_children = 50 ;сколько максимально воркеров может создать php-fpm

pm.start_servers = 5 ;стартовое количество воркеров

pm.min_spare_servers = 5 ; минимальное количество воркеров

pm.max_spare_servers = 35

;pm.status_path = /fpm-php-status ;статусная страница, нужна для мониторинга и оценки состояния, можно отключить.

php_admin_value[error_log] = /var/log/php-fpm/www-error.log ;указываем путь до логов ошибок

php_admin_flag[log_errors] = on

php_value[session.save_handler] = files ;тип файлов сессий, необходимо для их сохранинеия, авторизации и прочего фунуционала сайта

php_value[session.save_path] = /var/lib/php/session ;путь до файлов сессий

Запишем его в файл /etc/php/7.3/fpm/pool.d/ubuntu-wp.conf

И перезапустим php-fpm:

systemctl reload php7.3-fpm

systemctl status php7.3-fpm

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

По тексту ошибки ERROR: unable to bind listening socket for address ‘/var/run/php-fpm/php73-ubuntu-wordpress.sock’: No such file or directory ясно, что сервис не может создать сокет т.к нет такой директории (мы забыли её создать) или прав на неё, создаём:

mkdir /var/run/php-fpm/

chown -R nginx:nginx /var/run/php-fpm/

systemctl start php7.3-fpm

systemctl  status php7.3-fpm 

Сервис успешно запущен.

Давайте проверим работу php-fpm в связке с nginx на сайте. Добавим локально в файл /etc/hosts запись вида <ip_сервера> ubuntu-wordpress.ru и файл phpinfo.php в корень сайта с таким содержимым:

<?php

phpinfo();

phpinfo(INFO_MODULES);

?>

Перейдем в браузере на адрес вида http://ubuntu-wordpress.ru/phpinfo.php и если получаем страницу такого вида, то всё отлично и всё работает:

Можно переходить к настройке следующего сервиса.

mysql (Percona-server 5.7)

Для начала создадим в домашней папке пользователя файл .my.cnf /home/YOUR_NAME/.my.cnf :

С вот таким содержимым:

[client]

user = root

password = <ваш пароль>

Пароль — назначенный ранее.

И проверим вход в базу введя в консоли команду mysql:

Отлично, быстрый вход для себя мы настроили. Если это не нужно — можно входить через команду mysql -uroot -p  и вводить пароль. 

Теперь создадим пользователя и базу данных для нашего сайта, сделать это можно командами CREATE DATABASE DB_NAME; CREATE USER ‘user_name’@’localhost’ IDENTIFIED BY ‘password’; и GRANT ALL PRIVILEGES ON DB_NAME .* TO ‘user_name’@’localhost’;

Рассмотрим их использование на примере.

Создаём базу:

create database wp_mysitedb;

Создаём пользователя:

CREATE USER ‘wpuser1’@’localhost’ IDENTIFIED BY ‘samplepassword’;

Даём права доступа этому пользователю для ранее созданной базы данных:

GRANT ALL PRIVILEGES ON  wp_mysitedb. * TO ‘wpuser1’@’localhost’;

И обновляем привилегии чтобы изменения вступили в силу:

FLUSH PRIVILEGES; 

Готово, пользователь и база созданы, права на базу выданы.

Обязательно запишите имя базы которую создали, пароль и имя пользователя.

Переходим к установке WordPress.

Установка WordPress

Установка WP сводится к простому “далее-далее-готово” поэтому скачиваем с официального сайта архив с самим движком:

или прямая ссылка https://ru.wordpress.org/latest-ru_RU.tar.gz

Переходим в корневой каталог сайта и загружаем архив используя утилиту wget:

cd /var/www/ubuntu-wordpress.ru/

wget https://ru.wordpress.org/latest-ru_RU.tar.gz               

распаковываем архив, переносим файлы сайта в корень даём права на доступ к файлам для nginx + php-fpm:

tar -xvf latest-ru_RU.tar.gz

rsync -av wordpress/ .

chown -R nginx:nginx

Переходим на сайт:

http://ubuntu-wordpress.ru/

Нажимаем “Вперёд!”, заполняем на следующей странице все формы данными от mysql — база, пользователь, пароль:

Отправляем

Заканчиваем настройку сайта указанием пароля для админки и имени сайта:

Готово!