WordPress – это самая популярная в мире система управления контентом (CMS), которая позволяет быстро развернуть сайт или блог на бэкенде MariaDB и PHP

 Подготовим систему и установим зависимости и статьи LAMP - Установка 

1. Создаем Базу данных

mariadb

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

GRANT ALL ON wordpress.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'password';

FLUSH PRIVILEGES;

exit

 

2. Устновим PHP

apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

systemctl restart apache2

 

3. Включим поддержку .htaccess и модуль rewrite

Откроем

nano /etc/apache2/sites-available/wordpress.conf

Вставим:

<Directory /var/www/wordpress/>
AllowOverride All
</Directory>

Включим модуль

a2enmod rewrite

Проверка 

apache2ctl configtest

 Перезагрузим APACHE

systemctl restart apache2

 

4. Загрузка WordPress

cd /tmp

curl -O https://wordpress.org/latest.tar.gz

tar xzvf latest.tar.gz

touch /tmp/wordpress/.htaccess

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

mkdir /tmp/wordpress/wp-content/upgrade

cp -a /tmp/wordpress/. /var/www/wordpress

 

5. Настройка самого WordPress

chown -R www-data:www-data /var/www/wordpress

 

find /var/www/wordpress/ -type d -exec chmod 750 {} \;

find /var/www/wordpress/ -type f -exec chmod 640 {} \;

 

Получаем ключи 

curl -s https://api.wordpress.org/secret-key/1.1/salt/

 

И вставляем их сюда 

nano /var/www/wordpress/wp-config.php

 

Так же в этом же файле требуется отредактировать 

define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress_user');
define('DB_PASSWORD', 'password');

 

6. Заходим на вашу машину в браузере и продолжаем настройку.

 

7. Включаем и настраиваем HTTPS

В Nginx к остальным параметрам проксирования добавить строчку:

proxy_set_header X-Forwarded-Protocol "https";

Затем в wp-config.php добавить следующую проверку:

 

// Проверка https

if( !empty( $_SERVER['HTTP_X_FORWARDED_PROTOCOL'] ) ) {

$_SERVER['HTTPS'] = 'on';

}

 

Этот код нужно добавлять перед строкой

require_once(ABSPATH . ‘wp-settings.php’);

8. Создаем самоподписанные ключи можно посмотреть как это делать тут - Самоподписанный Сертификат - Debian

Включаем поддержку SSL

a2enmod ssl
a2ensite default-ssl.conf

Затем отредактируем  default-ssl.conf

nano /etc/apache2/sites-available/default-ssl.conf

Эти строки 

DocumentRoot /var/www/wordpress

SSLCertificateFile /etc/apache2/ssl/1.crt
SSLCertificateKeyFile /etc/apache2/ssl/1.key
 

Перезагрузим apache 

systemctl restart apache2

 

9. Конфиг NGINX

erver {
if ($host = YOUR_NAME_OF_SITE) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
server_name YOUR_NAME_OF_SITE;
return 301 https://$host$request_uri;
error_page 497 https://$host:$server_port$request_uri;


}
server {
listen 443 ssl;
listen [::]:443 ssl;

server_name YOUR_NAME_OF_SITEi;
access_log /var/log/nginx/access.1.log;
error_log /var/log/nginx/error.1.log;
root /usr/share/nginx/sd;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling_verify on;

location / {
proxy_pass https://YOUR_LOCAL_HOST_VPS;
proxy_set_header X-Forwarded-Protocol "https";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}

}

 

10. Зайти в админку WP  и. полностью пропишем веб адрес вашего домена (внешний адрес)