create database wordpress default character set utf8 collate utf8_unicode_ci;
Создаем отдельного юзера для wordpress:
create user 'wordpressuser'@'localhost' identified with mysql_native_password by '<password>';-- Вместо локалхоста, если подключаться будут по сети, нужно ввести IP, с которого будем подключаться-- mysql_native_password используется для совместимости с PHP-- Удалять юзера можно так:drop user 'username'@'hostname';
Даем юзеру права на все таблицы в db (по сути, на весь db):
grant all on wordpress.* to 'wordpressuser'@'localhost';flush privileges;\q-- flush обновляет привилегии, чтобы mysql узнал об измененных привилегиях
PHP
В этом стеке PHP выступает в роли интерпретатора, языка, который будет обрабатывать запросы.
Нужно установить модули/плагины для работы с nginx и mysql: php-fpm, php-mysql соответственно (сам php установится вместе с ними):
sudo apt install -y php-fpm php-mysql# И проверь, что сервис php-fmp запустилсяsystemctl status php7.4-fpm.service# И перезапускай, чтобы быть точно уверенным, что все установленные модули подхватились сервисомsystemctl restart php7.4-fpm.service
php-fpm после установки создаст сокет php*-fmp.sock в папке /var/run/php/ php-fpm использует этот сокет для обмена данными с nginx.
Указание пути к файлу robots.txt, в котором описывается поведение (что он должен индексировать, а что - не должен) робота интернет-поисковика (google, yandex и т.п.), когда он приходит на сайт:
log_not_found off;→ указывает, что nginx не должен писать в логи ошибки о ненаходе(😱) данного файла. Позволяет не захламлять логи.
access_log off;→ указывает, что nginx не должен писать в логи инфу об обращении (access) к данному файлу. Позволяет не захламлять логи.
allow all;→разрешает любому юзер получать доступ к данному файлу
expires max;→ указывает, что клиенты должны кэшировать эти файлы на максимальное значение срока действия, чтобы уменьшить кол-во таких требовательных запросов к серверу.
Определение настроек для обработки запросов, которые относятся к корневому каталогу сайта:
Ищется каталог, соответствующий $uri/ (запрошенный URL) и индексного файла в этом же каталоге
При ненаходе(🤨) перенаправляет запрос файлу index.php (для дальнейшей обработки этого запроса) с передачей параметров $is_args и $args, а не выводит “404 Not Found” как в дефолтном конфиге
Настройки для URL-адресов, содержащих файлы с расширением .php (в этом случае, запросы, которые заканчиваются на .php):
/etc/nginx/sites-available/default
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;}
include snippets/fastcgi-php.conf;→ указывает, что нужно включить конфиг fastcgi-php.conf - настройки для обработки PHP-скриптов.
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;→ указывает, что nginx должен передавать обработку PHP-скриптов FastCGI-серверу, которая работает локально по такому пути: /var/run/php/php7.4-fpm.sock .
Проверка конфига и nginx restart
После применения настроек нужно проверить конфиги на валидность и перезагрузить конфиги nginx:
sudo nginx -tsudo systemctl reload nginx
WordPress
Установка
Скачать последнюю версию wp можно с офиц сайта:
wget https://wordpress.org/latest.tar.gztar xzvf latest.tar.gz && rm latest.tar.gz# И следует создать папку, которую мы в конфиге nginx настроили как корневуюsudo mkdir /var/www/wordpress#
И туда же копируй содержимое извлеченной папки из архива со всеми скрытыми файлами и с разрешениями всех файлов:
sudo cp -a wordpress/. /var/www/wordpress/# -a копирует с разрешениями, а точка после директории указывает
Указываем владельца папки /var/www/wordpress юзера и группу www-data→ это юзер и группа nginx-а, поэтому ему нужен доступ к этой папке:
sudo chown -R www-data:www-data /var/www/wordpress# -R означает рекурсивно
Конфигурация wordpress
Копируем sample конфига в дефолтный конфиг wp-config.php (чтобы иметь основу для последующих изменений). Копируем сразу от юзера www-data, чтобы потом еще и не chown-ить из root-а в www-data:
Нужно поменять секретные ключи в конфиге wp-config.php; они будут использоваться только внутри WP и лишние действия производить не нужно будет → с удобством использования проблем не будет. Чтобы сгенерировать эти ключи можно использовать API с офиц сайта WP:
Его нужно вставить в конфиг wordpress вместо этого шаблона:
wp-config.php
define('AUTH_KEY', 'put your unique phrase here');define('SECURE_AUTH_KEY', 'put your unique phrase here');define('LOGGED_IN_KEY', 'put your unique phrase here');define('NONCE_KEY', 'put your unique phrase here');define('AUTH_SALT', 'put your unique phrase here');define('SECURE_AUTH_SALT', 'put your unique phrase here');define('LOGGED_IN_SALT', 'put your unique phrase here');define('NONCE_SALT', 'put your unique phrase here');
Нужно изменить параметры БД в этом месте:
wp-config.php
// ** Database settings - You can get this info from your web host ** ///** The name of the database for WordPress */define( 'DB_NAME', 'database_name_here' );/** Database username */define( 'DB_USER', 'username_here' );/** Database password */define( 'DB_PASSWORD', 'password_here' );/** Database hostname */define( 'DB_HOST', 'localhost' );/** Database charset to use in creating database tables. */define( 'DB_CHARSET', 'utf8' );/** The database collate type. Don't change this if in doubt. */define( 'DB_COLLATE', '' );
А именно:
wp-config.php
/** The name of the database for WordPress */define( 'DB_NAME', 'wordpress' );/** Database username */define( 'DB_USER', 'wordpressuser' );/** Database password */define( 'DB_PASSWORD', '<password>' );
И нужно ниже добавить настройку метода, которым WP будет пользоваться для записи данных в БД (по сути, даем веб-серверу разрешение на запись):
wp-config.php
/**Даем веб-серверу разрешение на запись в БД*/define( 'FS_METHOD', 'direct' );
Завершение настройки через WebUI
Нужно зайти на страницу (я захожу со своего ПК, поэтому просто ввожу в браузере IP виртуалки, т.к. там стоит веб-сервер).
После выбора языка нужно будет ввести название сайта, username, пароль к сайту, email и нажать Установить WordPress.
После этого мы попадем на wp-admin - панель управления WP. Получить к нему доступ можно по URL https:///wp-admin
Unsolved PHP dependencies for WordPress
WP будет ругаться, что не все нужные расширения установлены, поэтому можно их установить командой: