Для пример выполню установку WordPress с Nginx в опереационной системе Ubuntu Server 18.04.
Переключимся на root пользователя:
sudo su
Установим 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
Добрый день!
А как Nginx обрабатывает привила в htaccess?
Судя по настройкам (location ~ /\.ht { deny all; }) они игнорируются.
Какая есть альтернатива обработки подобных правил в Nginx?
Можно найти в интернете онлайн конвертеры htaccess для nginx и потом результат указать в конфигурации nginx или настроить nginx как прокси для apache2.