Заказали тут у меня статейку про установку 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
Переходим на сайт:
Нажимаем “Вперёд!”, заполняем на следующей странице все формы данными от mysql — база, пользователь, пароль:
Отправляем
Заканчиваем настройку сайта указанием пароля для админки и имени сайта:
Готово!