Затаскиваем 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_installationEnter 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 mysqlChange 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 unzipsudo 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.
Готово!