Установка WordPress на LEMP — Debian 12

Подготовка сервера


apt-get update
apt-get upgrade

#Настроим часовой пояс
sudo dpkg-reconfigure tzdata

#Далее выставим локаль
sudo dpkg-reconfigure locales
# нужно выбрать ru_RU.UTF-8 UTF-8. и проверьте, что en_US.UTF-8 тоже выбрана. По умолчанию выбираем — ru_RU.UTF-8 UTF-8

MARIADB

# установка mariadb форк mysql
sudo apt install mariadb-server -y

# просмотр статуса сервера
sudo systemctl status mariadb

# если не запущен то включаем в автозагрузку и стартуем
sudo systemctl enable mariadb
sudo systemctl star mariadb

# запуск скрипта первичной настройки, отвечаем на все вопросы по умолчанию YES и надо создать пароль рута mysql
sudo mysql_secure_installation

# Можно проверить версию, но это не обязательно
mysql --version

# подключаемся к mariadb
sudo mariadb -u root -p

# создаем базу с именем wordpress
(CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;)

# создаем пользователя wordpress_user и даем права к базе
GRANT ALL ON wordpress.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'Пароль!';
FLUSH PRIVILEGES;
EXIT;

# как обычно вспоминаем что задали пароль password, заходим обратно и меняем его.

SET PASSWORD FOR 'wordpress_user'@'localhost' = PASSWORD('Пароль!');
FLUSH PRIVILEGES;
EXIT;

# проверяем пароль
mysql -u логин_пользователя -h localhost -p


# PHP
# установка набора php у дебиан 12 это php8.2
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip php-fpm php8.2-mysql -y
# проверка php
sudo systemctl status php8.2-fpm


# NGINX
# установка
sudo apt install nginx -y

# проверка
sudo systemctl status nginx

# для чистоты эксперимента перезагружаем сервер и проверяем статусы mariadb phph8.2-fpm nginx
sudo systemctl status nginx
sudo systemctl status phph8.2-fpm
sudo systemctl status mariadb.service

# если все хорошо то делаем бекап. Бекапы это наше все!!!

Настройка сайта

sudo vim /etc/nginx/sites-available/имя-сайта.ru.conf

server {
listen 80;
listen [::]:80;
server_name www.имя-сайта.ru имя-сайта.ru;
root /var/www/ваш_сайт/wordpress;
index index.php index.html index.htm index.nginx-debian.html;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~* /wp-sitemap.*\.xml {
try_files $uri $uri/ /index.php$is_args$args;
}

client_max_body_size 100M;

location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 128k;
fastcgi_intercept_errors on;
}

gzip on;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;
gzip_disable "msie6";
gzip_types application/atom+xml application/geo+json application/javascript application/x-javascript application/json application/ld+json application/manifest+json application/rdf+xml application/rss+xml application/xhtml+xml application/xml font/eot font/otf font/ttf image/svg+xml text/css text/javascript text/plain text/xml;

location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
expires 90d;
access_log off;
}

location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Access-Control-Allow-Origin "*";
expires 90d;
access_log off;
}

location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}

# Создаем симлинк
sudo ln -s /etc/nginx/sites-available/ваш_сайт.conf /etc/nginx/sites-enabled/

WordPress

# качаем wordpress
wget https://wordpress.org/latest.zip

# распаковываем
sudo unzip latest.zip -d /var/www/ваш_сайт

# задаем права и разрешения для пользователя nginx
sudo chown -R www-data:www-data /var/www/ваш_сайт/wordpress/

# для папок
sudo find /var/www/ваш_сайт/wordpress -type d -exec chmod 755 {} \;

# для файлов
sudo find /var/www/ваш_сайт/wordpress -type f -exec chmod 644 {} \;

# дальше будем делать все из самой папки, кому лень набирать полный путь
cd /var/www/ваш_сайт/wordpress/

# создадим файл с конфигом путем копирования файла с коментами из примера
sudo cp wp-config-sample.php wp-config.php

# редактируем (пользуйтесь привычным вам редактором вместо vim если есть желание то продолжайте как есть)
sudo vim wp-config.php

define( 'DB_NAME', 'database_name_here' ); <--------меняем имя базы которое задали в mariadb
define( 'DB_NAME', 'wordpress' );

define( 'DB_USER', 'username_here' ); <--------меняем имя пользователя которое задали в mariadb
define( 'DB_USER', 'wordpress_user' );

define( 'DB_PASSWORD', 'password_here' ); <--------меняем пароль которое задали пользователю в mariadb
define( 'DB_PASSWORD', 'ПарольПарольПароль' );
define( 'DB_PASSWORD', 'WORDpreSuSEr254Dkp' );

# в конец файла добавим строчки для улучшения

# задаем метод сохранения
define( 'FS_METHOD', 'direct' );

# задаем лимит памяти с шагом 128 MB, 256, 512, 1024 итд. 256 выглядит неплохо для начала, если нужно то увеличим
define('WP_MEMORY_LIMIT', '256M');

# Создаем соль (защитные ключики) и заменяем строчки на полученные с сайта https://api.wordpress.org/secret-key/1.1/salt/
# Соль на сайте генерируется рандомно

define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );

# к примеру на такой вид

define('AUTH_KEY', 'IddXGf-^U >tb%&lk Ep)!va8t~5SY,p=/xRvF.A;;xZF`OOyRD??&^ -=%@8');
define('SECURE_AUTH_KEY', '< ^>=yI<y[#;O+/+:p/yD`}A <UNFWjEYct4~~DY:+BDH6oP:XXdAJ+@#}AWG');
define('LOGGED_IN_KEY', 'gO7GHF-|1g}{9NON6H||REOo]EUlx$F@l`39p2*@Lo#ATU}*o6mb;HZt64#>S');
define('NONCE_KEY', 'JX>dR=^rn_p%)QPe|,:*Xc. pC87f}~*6W+YO/H$OvWy9*SyW(Zpl@(@uI`]<');
define('AUTH_SALT', 'oS64{c0+JT`+<-y4Y+$755`S;Uo~lS*6-}4RR{+y-3~W$6 ]7,i(mxepy?bD|');
define('SECURE_AUTH_SALT', '6]u`R^<n3`Th&-ZG( ]B,|-0-WyzGU7-Z:.xi0U3;<ePT01]nQ/sZ<^i;d{0`');
define('LOGGED_IN_SALT', '>S7-74|2Yb@iF-oyx_^n-B&y^rUS-ZzZ>1%BJY$RZ:lbyb-gj-CyFl;9q3z-+');
define('NONCE_SALT', 'T:+^~CGsR3d=O;i/3:2oBh i7FZu$+xX-uY|L[3M`CjU];TyVg9V8n MDsJX/');

# Устанавливаем
http://ваш_IP_или_FQDN_сайта/wp-admin/install.php