Установка WordPress и Nginx

Для пример выполню установку WordPress с Nginx в опереационной системе Ubuntu Server 18.04.

Переключимся на root пользователя:

sudo -i

Установим nginx, php-fpm и прочие необходимые компоненты:

apt install nginx php-curl php-gd php-xml php-xmlrpc php-intl php-mbstring php-soap php-zip php-mysql php-fpm php-json php7.2-opcache php7.2-mbst

Установим сервер баз данных:

apt install mysql-server mysql-client

Подключимся к серверу баз данных:

mysql -u root -p

Создадим базу данных и пользователя:

CREATE DATABASE ixnfo;
CREATE USER test@localhost IDENTIFIED BY 'test';
GRANT ALL PRIVILEGES ON ixnfo.* TO test@localhost;
FLUSH PRIVILEGES;
exit

Скачаем архив с последней версией WordPress с официального сайта, распакуем его, создадим файл конфигурации и откроем его в текстовом редакторе (например nano):

cd ~
wget https://ru.wordpress.org/latest-ru_RU.zip
unzip latest-ru_RU.zip
cd ~/wordpress
cp wp-config-sample.php wp-config.php
nano wp-config.php

Укажем параметры для подключения к базе данных:

define('DB_NAME', 'ixnfo');
define('DB_USER', 'test');
define('DB_PASSWORD', 'test');
define('DB_HOST', 'localhost');

Также по ссылке https://api.wordpress.org/secret-key/1.1/salt/ сгенерируем уникальные ключи и укажем их в файле конфигурации.

Переместим WordPress в директорию веб сервера и укажем права и владельца от которого работает веб сервер (Nginx в Ubuntu по умолчанию работает от пользователя www-data):

sudo mv ~/wordpress/ /var/www/test
cd /var/www/test/
mkdir wp-content/uploads
sudo chown -R www-data:www-data /var/www/test/

Создадим файл конфигурации для нового сайта:

sudo nano /etc/nginx/sites-available/test

Приведу пример содержимого:

server {
   listen 80;
   #listen [::]:80;

   root /var/www/test;
   index index.php index.html index.htm;
   access_log /var/log/nginx/test_access.log;
   error_log /var/log/nginx/test_error.log;
   server_name test.ixnfo.com;

        gzip on;
        gzip_comp_level 4;
        gzip_disable "msie6";
        gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rss+xml
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/opentype
        image/bmp
        image/svg+xml
        image/x-icon
        text/cache-manifest
        text/css
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy;

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

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

   location ~ /\.ht {
      deny all;
    }

   location ~ /\. {
    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 ~* /(?:uploads|files)/.*\.php$ {
    deny all;
   }

   location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
   }

   location ~* /(wp-config.php|readme.html|license.txt) {
    deny all;
   }

}

Если установлен php7.2-fpm, то убедимся что в файле /etc/php/7.2/fpm/pool.d/www.conf указано:

listen = /run/php/php7.2-fpm.sock

Создадим ссылку на файл конфигурации в директорию «sites-enabled» тем самым активировав его:

ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/test

Проверим корректность конфигурации и загрузим ее:

nginx -t
service nginx reload

При необходимости можно полностью перезапустить Nginx:

service nginx restart

Убедимся что Nginx запустится при запуске системы:

sudo systemctl is-enabled nginx
sudo systemctl enable nginx

Если редактировать PHP параметры в файле /etc/php/7.2/fpm/php.ini, то чтобы применить изменения нужно перезапустить php-fpm:

service php7.2-fpm status
service php7.2-fpm restart

Для завершения установки, откроем WordPress в браузере, например
http://test.ixnfo.com/wp-admin/install.php
и выполним инструкции. После установки откроем страницу «Здоровье сайта» /wp-admin/site-health.php и выполним рекомендации.

Если например нужно часто указывать «unix:/run/php/php7.2-fpm.sock», то это можно сделать так:

upstream php {
        server unix:/run/php/php7.2-fpm.sock;
}

...

   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass php;
   }

...

Смотрите также мои статьи:
Установка и настройка WordPress в Ubuntu
Установка и настройка Nginx
Решение ошибки с REST API «Ответ не является допустимым ответом JSON» WordPress+Nginx

Вливайтесь в общение

2 комментария

Добавить комментарий

  1. Добрый день!
    А как Nginx обрабатывает привила в htaccess?
    Судя по настройкам (location ~ /\.ht { deny all; }) они игнорируются.
    Какая есть альтернатива обработки подобных правил в Nginx?

    1. Можно найти в интернете онлайн конвертеры htaccess для nginx и потом результат указать в конфигурации nginx или настроить nginx как прокси для apache2.