Как установить WordPress на сервере

Краткое руководство по поднятию WordPress на сервере, основанное на моих личных шагах. Включая настройку https протокола и базовых 301 редиректов в Nginx конфигах.

Подключение к серверу

ssh root@IP_СЕРВЕРА

Установка необходимых компонентов

apt update && apt upgrade -y

apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip unzip wget curl -y

Создаем базу данных для WordPress — подключение с localhost

Заходим в mysql

mysql -u root

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

CREATE DATABASE название_базы DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'пользователь_базы'@'localhost' IDENTIFIED BY 'указываем_пароль_от_базы';

GRANT ALL PRIVILEGES ON название_базы.* TO 'пользователь_базы'@'localhost';

FLUSH PRIVILEGES;

EXIT;

Если нужно, чтобы подключиться к базе можно было с любого IP, создаем пользователя с @’%’

CREATE DATABASE название_базы DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'пользователь_базы'@'%' IDENTIFIED BY 'указываем_пароль_от_базы';

GRANT ALL PRIVILEGES ON название_базы.* TO 'пользователь_базы'@'%';

FLUSH PRIVILEGES;

EXIT;

Далее открываем /etc/mysql/mysql.conf.d/mysqld.cnf и правим

bind-address = 0.0.0.0

После выполняем

systemctl restart mysql

Скачивание wordpress и настройка папки (может попросить установить unzip)

cd /var/www
wget https://wordpress.org/latest.zip
unzip latest.zip
mv wordpress твой_домен.ru
chown -R www-data:www-data /var/www/твой_домен.ru
chmod -R 755 /var/www/твой_домен.ru

Настройка и создание конфига Nginx

nano /etc/nginx/sites-available/твой_домен.ru

Далее вставляем дефолтный конфиг

server {
    listen 80;
    server_name твой_домен.ru твой_домен.ru;

    root /var/www/твой_домен.ru;
    index index.php index.html;

    access_log /var/log/nginx/твой_домен.access.log;
    error_log /var/log/nginx/твой_домен.error.log;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Уточни версию PHP
    }

    location ~ /\.ht {
        deny all;
    }
}

Активируй сайт и перезапусти Nginx

ln -s /etc/nginx/sites-available/твой_домен.ru /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Теперь установим SSL сертификат

apt install certbot python3-certbot-nginx -y
certbot --nginx -d твой_домен.ru -d www.твой_домен.ru

Финальный конфиг с учетом 301 редиректов и https должен выглядеть как-то так.

server {
    listen 80;
    server_name твой_домен.ru www.твой_домен.ru;

    return 301 https://твой_домен.ru$request_uri;
}

server {
    listen 443 ssl http2;
    server_name твой_домен.ru;

    root /var/www/твой_домен.ru;
    index index.php index.html;

    access_log /var/log/nginx/твой_домен.access.log;
    error_log /var/log/nginx/твой_домен.error.log;

    # SSL от Let's Encrypt
    ssl_certificate /etc/letsencrypt/live/твой_домен.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/твой_домен.ru/privkey.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

На всякий случай еще раз перезапустить Nginx

nginx -t && systemctl reload nginx

Теперь нужно зайти на сервер в директорию var/www/твой_домен.ru и найти файл wp-config-sample.php. Скопировать этот конфиг и переименовать в wp-config.php

Заполнить данные от БД и сохранить

/** The name of the database for WordPress */
define( 'DB_NAME', 'название_базы' );

/** Database username */
define( 'DB_USER', 'пользователь_базы' );

/** Database password */
define( 'DB_PASSWORD', 'указываем_пароль_от_базы' );

Теперь нужно перейти по адресу: твой_домен.ru/wp-admin/install.php и заполнить все необходимое.

Установка WP завершена =)

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля помечены *