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 и. полностью пропишем веб адрес вашего домена (внешний адрес)