Затаскиваем Wordpress на сервак

Стек сервера для установки wordpress

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

Хорошо, попросил друг значит делаем. Стек будет такой Ubuntu 22.04 + nginx 1.28 + php8.4 (выкуси питон), mariadb (mysql здорового человека).

MariaDB

Я не буду вдаваться в подроности почему именно MariaDB, можно и MySql, для Wordpress разницы нет.

sudo apt updatesudo apt install mariadb-server

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

sudo mysql_secure_installation
Enter current password for root (enter for none)Switch to unix_socket authenticationChange the root passwordRemove anonymous usersDisallow root login remotelyRemove test database and access to itReload privilege tables now

Для тех кому надо побыстрее: y n y y y y. Но потом не спрашивайте как зайти в базу.

Enter current password for root (enter for none)

Тут просто enter. пароль руту не задаем. Потому, что:

Switch to unix_socket authentication?

Тут отвечаем y. Это позволит нам входить так:

sudo mysql

Change the root password

Устанавливаем наш надежный пароль.

Remove anonymous users?

Я не проверял, но вероятно ставятся какие-то тестовые анонимные пользователи, конечно выкидываем их из автобуса и ставим y.

Disallow root login remotely?

Запрещаем руту заходить удаленно (ибо нефиг): y.

Remove test database and access to it?

Ага, вот и тестовая бд, вот откуда тестовые пассажиры, которых ранее мы попросили выйти. Выкидываем вещи из автобуса в след за зайцами: y.

Reload privilege tables now?

Просто обновляем привелегии, в соответствии с ответами выше: y.

PHP

Установим php8.4, для этого подключим PPA от Ondřej Surý (главный мейнтейнер PHP-пакетов для Debian/Ubuntu).

sudo add-apt-repository ppa:ondrej/phpsudo apt update

Теперь, на всякий пожарный, проверим есть ли там php8.4. Она там есть, но все мы помним про кота Шрёдингера.

apt search php8.4

Убедились, что оно там есть, но нам это нужно не просто, чтобы убедиться. Ставим imagemagick, эта либа имеет больше фич, чем GD и wordpress рекомендует imagick к установке. Иногда, для некоторых задач используется GD, добавим и её в список пакетов.

sudo apt install imagemagick

Далее, ставим набор пакетов, включая php8.4-imagick.

sudo apt install php8.4 php8.4-fpm php8.4-mysql php8.4-cli php8.4-curl php8.4-xml php8.4-mbstring php8.4-zip php8.4-opcache php8.4-gd php8.4-imagick php8.4-intl

Убедимся, что imagick есть, но если не было ни каких ошибок в процессе установки пакетов, можно скипнуть этот шаг.

php -m | grep imagick

Всё поставили, теперь в проверке здоровья сайта у нас будут предупреждения только по поводу не активных плагинов и тем.

NGINX

Энжин Икс, ставим из пакетного менеджера Ubuntu, но можно выбрать версию новее. На сайте nginx, есть статья в доках, как добавить их репозиторий (тогда, автоматом не будут созданы некоторые дирректории и сниппеты).

sudo apt install nginx

Так, всё готово к дальнейшим действиям.

Создаем пользователя и бд

Подключаемся к mysql и создаем нашего пользователя.

sudo mysqlCREATE USER 'НАШ_ЮЗВЕРЬ'@'localhost' IDENTIFIED BY 'ПАРОЛЬ_НЕ_КАК_У_РУТ_Я_ЗА_ВАМИ_СЛЕЖУ';

Создаем базу и выдаем привелегии пользователю.

CREATE DATABASE ИМЯ_БАЗЫ CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;GRANT ALL PRIVILEGES ON ИМЯ_БАЗЫ.* TO 'НАШ_ЮЗВЕРЬ'@'localhost';FLUSH PRIVILEGES;EXIT;

Создаем хост.

Сперва проверим жива ли пыха. Есть sock, значит ОК.

ls /run/php/php-fpm.sock  php8.4-fpm.pid  php8.4-fpm.sock

А давайте закинем сейчас wordpress в директорию сайта, серверу нужно чтобы все пути были доступны. имя сайта будет example

Предварительно установим unzip для разархивирования архва и wget (уже должен быть установлен).

sudo apt install wget unzip
sudo mkdir -p /var/www/example/logscd ~/wget https://ru.wordpress.org/latest-ru_RU.zipsudo unzip latest.zip -d /var/www/example

Вовзращаемся к хосту. Вообще на сайте wordpress есть инструкция, я оттуда кое что взял.

sudo nano /etc/nginx/sites-available/example.conf

Втыкаем туда вот это вот всё:

server {	listen 80;	server_name example;	root /var/www/example/wordpress;	location ~* /(?:uploads|files)/.*\.php$ {		deny all;	}	location = /favicon.ico {		log_not_found off;		access_log off;	}	location = /robots.txt {		allow all;		log_not_found off;		access_log off;	}	location ~ /\. {		deny all;	}	location / {		try_files $uri $uri/ /index.php?$args;	}	location ~ \.php$ {		try_files $uri =404;		fastcgi_intercept_errors on;		include fastcgi.conf;	}	location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {		expires 1y;		log_not_found off;		access_log off;	}}

Отлично! Wordpress мы распаковали в /var/www/example/wordpress. Если перезагрузить сервер и запросить localhost, покажется дефолтная страница nginx, это нас устраивает, но не полностью. Двигаемся дальше, подключаем пыху.

Ранее, мы проверяли сокеты php, я использую конкретной версии php8.4-fpm.sock.

fastcgi_pass unix:/run/php/php8.4-fpm.sock;

Строку выше, добавляем в конце файла ниже.

sudo nano /etc/nginx/fastcgi.conf

Вырубаем дефолтный хост.

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

Проверяем конфиг и перезапускаем сервер.

sudo nginx -t && sudo systemctl restart nginx

В браузере открываем http://localhost
мы должны увидеть страницу wordpress. Осталось отредактировать wp-config.php.

sudo mv /var/www/shahjam/wordpress/wp-config-sample.php /var/www/shahjam/wordpress/wp-config.phpsudo nano /var/www/shahjam/wordpress/wp-config.php

Вносим данные базы и всякие SALT которые пачкой берем здесь
Открываем http://localhost.

Готово!