Установка WordPress на Ubuntu 22.04 LTS
Всем привет! Установка WordPress на Ubuntu 22.04 LTS требует установки на Ubuntu 22.04 LTS необходимой инфраструктуры, а именно, всего того, что указано в этой статье: Установка Nginx, MySQL 8, PHP8.1-FPM на Ubuntu 22.04 LTS с нуля.
Итак, теперь у нас есть Ubuntu 22.04 LTS и MySQL 8 + PHP8.1-FPM у нее на борту. Перейдем к установке WordPress.
Если Вы ещё думаете над тем, какого провайдера VPS/VDS выбрать, то советую рассмотреть https://firstvds.ru, этот сайт (dnevnik.dev) размещен именно там.
Установка WordPress: техническая часть
Проверим пользователя
Убедимся, что мы находимся в нужной папке (директории) и не под пользователем root:
serveruser@ИМЯСЕРВЕРА:/root$
Если у Вас как на примере выше (вместо serveruser может быть другой пользователь, главное, чтобы не root), то все хорошо. А если у Вас так:
root@ИМЯСЕРВЕРА:~#
То выполите инструкции по созданию нового пользователя из этой статьи: Установка Nginx, MySQL 8, PHP8.1-FPM на Ubuntu 22.04 LTS с нуля.
Скачаем WordPress
Перейдем в нужный каталог, введем:
cd /var/www/
Затем, нужно создать каталог для нашего будущего сайта (у меня НАЗВАНИЕ_САЙТА это dnevnik):
sudo mkdir НАЗВАНИЕ_САЙТА
sudo chown -R www-data:www-data НАЗВАНИЕ_САЙТА
Если нужно проверить, свободно ли выбранное Вами название сайта, то сделать это можно здесь: https://reg.ru.
Переместимся в созданный каталог, и скачаем WordPress:
cd НАЗВАНИЕ_САЙТА
sudo -u www-data wget https://wordpress.org/latest.tar.gz
Распакуем архив:
sudo -u www-data tar -xzvf latest.tar.gz
И удалим его:
sudo -u www-data rm latest.tar.gz
Затем переместим содержимое папки wordpress в родительскую для ее директорию:
sudo -u www-data mv wordpress/* .
И удалим папку wordpress:
sudo -u www-data rm -R wordpress
Создадим базу данных в MySQL
Войдем в командную строку MySQL:
sudo mysql
Создадим новую базу данных:
CREATE DATABASE НАЗВАНИЕ_САЙТА;
Создадим нового пользователя:
CREATE USER 'НАЗВАНИЕ_САЙТА'@'localhost' IDENTIFIED BY 'aef@234R345t2iJhfvar';
«aef@234R345t2iJhfvar» — это пароль пользователя НАЗВАНИЕ_САЙТА.
Дадим пользователю НАЗВАНИЕ_САЙТА права на базу данных НАЗВАНИЕ_САЙТА:
GRANT ALL ON НАЗВАНИЕ_САЙТА.* TO 'НАЗВАНИЕ_САЙТА'@'localhost';
Выйдем из командной строки MySQL:
exit
Теперь давайте войдем в командную строку MySQL под новым MySQL-пользователем:
mysql -u НАЗВАНИЕ_САЙТА -p
Вас попросят ввести пароль, введите его. Если Вы не меняли его в примере выше, то он будет такой:
aef@234R345t2iJhfvar
Вот мы и вошли под новым пользователем. Посмотрим, какие базы данных ему видны, введем:
SHOW DATABASES;
Результат будет такой:
+---------------------------+
| Database |
+---------------------------+
| information_schema |
| НАЗВАНИЕ_САЙТА |
+---------------------------+
2 rows in set (0.06 sec)
Видим нашу базу НАЗВАНИЕ_САЙТА, отлично, выйдем из командной строки MySQL:
exit
Давайте двигаться дальше, настроим Nginx.
Настроим Nginx
Тут нужно сказать, что я буду иметь в виду под «НАЗВАНИЕ_САЙТА», «НАЗВАНИЕ_САЙТА.ДОМЕН» и «www.НАЗВАНИЕ_САЙТА.ДОМЕН».
На примере моего сайта это будет так:
НАЗВАНИЕ_САЙТА = dnevnik
НАЗВАНИЕ_САЙТА.ДОМЕН = dnevnik.dev
www.НАЗВАНИЕ_САЙТА.ДОМЕН = www.dnevnik.dev
Если Вам нужен домен, советую приобретать его здесь: https://reg.ru. К примеру, домен этого сайта (dnevnik.dev) зарегистрирован именно там.
Создадим новый конфигурационный файл для Nginx, для этого введем:
sudo vim /etc/nginx/sites-available/НАЗВАНИЕ_САЙТА
Команда выше создаст новый пустой файл. Вставим в него содержимое:
server {
listen 80;
server_name НАЗВАНИЕ_САЙТА.ДОМЕН www.НАЗВАНИЕ_САЙТА.ДОМЕН;
root /var/www/НАЗВАНИЕ_САЙТА;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
И для сохранения файла, нажмите «:wq», а затем Enter. Файл сохранен.
Активируем конфигурацию этой командой:
sudo ln -s /etc/nginx/sites-available/НАЗВАНИЕ_САЙТА /etc/nginx/sites-enabled/
Перезапустим Nginx, чтобы изменения вступили в силу:
sudo systemctl reload nginx
Теперь нужно настроить WordPress.
Настроим WordPress
Переместимся в директорию сайта:
cd /var/www/НАЗВАНИЕ_САЙТА
Переименуем файл wp-config-sample.php:
sudo -u www-data mv wp-config-sample.php wp-config.php
И откроем его для редактирования:
sudo -u www-data vim wp-config.php
Увидим что-то вроде этого:
<?php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the installation.
* You don't have to use the web site, you can copy this file to "wp-config.php"
* and fill in the values.
*
* This file contains the following configurations:
*
* * Database settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://wordpress.org/support/article/editing-wp-config-php/
*
* @package WordPress
*/
// ** 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', '' );
/**#@+
* Authentication unique keys and salts.
*
* Change these to different unique phrases! You can generate these using
* the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
*
* You can change these at any point in time to invalidate all existing cookies.
* This will force all users to have to log in again.
*
* @since 2.6.0
*/
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' );
/**#@-*/
/**
* WordPress database table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';
/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*
* For information on other constants that can be used for debugging,
* visit the documentation.
*
* @link https://wordpress.org/support/article/debugging-in-wordpress/
*/
define( 'WP_DEBUG', false );
/* Add any custom values between this line and the "stop editing" line. */
/* That's all, stop editing! Happy publishing. */
/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';
Тут нам нужно заменить следующее:
- database_name_here на НАЗВАНИЕ_САЙТА
- username_here на НАЗВАНИЕ_САЙТА
- password_here на aef@234R345t2iJhfvar (или на тот пароль, который Вы придумали)
- put your unique phrase here на набор случайных букв и символов
Сохраним файл. Нажмем «:wq», затем Enter.
Всё, мы готовы к запуску установки WordPress!
Установка WordPress: запуск скрипта установки
Чтобы начать скрипт установки WordPress, нужно перейти по адресу:
http://НАЗВАНИЕ_САЙТА.ДОМЕН
И увидим это:
Выберем язык, и увидим подобное:
Введите данные, и нажмите «Установить WordPress». После успешной установки увидите такой экран:
Далее нажмите «Войти», и введите только что придуманные имя пользователя и пароль:
Ещё раз нажмите «Войти», и, добро пожаловать в WordPress!
Заключение
Вот и завершена установка WordPress на Ubuntu 22.04 LTS! Если у Вас остались какие-то вопросы, пожелания, или возникли ошибки в процессе установки — задавайте их в сообщения сообщества https://vk.com/webdevdiary, буду рад помочь!
Пока!
А вот и нет!
Адрес сайта сейчас http://НАЗВАНИЕ_САЙТА.ДОМЕН, а должен быть https://НАЗВАНИЕ_САЙТА.ДОМЕН.
Давайте исправлять!
Установка Certbot
Введем команду:
sudo snap install core; sudo snap refresh core
А затем:
sudo snap install --classic certbot
И, наконец:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Запуск Certbot
Введем:
sudo certbot
Выведется это:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel):
Нужно ввести свой e-mail — вводим, и жмем «Enter». Далее везде отвечаем «Y», и выведется такое:
Account registered.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: НАЗВАНИЕ_САЙТА.ДОМЕН
2: www.НАЗВАНИЕ_САЙТА.ДОМЕН
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
Далее можете просто нажать «Enter», и сертификаты установятся для обоих адресов:
Requesting a certificate for НАЗВАНИЕ_САЙТА.ДОМЕН and www.НАЗВАНИЕ_САЙТА.ДОМЕН
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/НАЗВАНИЕ_САЙТА.ДОМЕН/fullchain.pem
Key is saved at: /etc/letsencrypt/live/НАЗВАНИЕ_САЙТА.ДОМЕН/privkey.pem
This certificate expires on 2022-10-14.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for НАЗВАНИЕ_САЙТА.ДОМЕН to /etc/nginx/sites-enabled/НАЗВАНИЕ_САЙТА
Successfully deployed certificate for www.НАЗВАНИЕ_САЙТА.ДОМЕН to /etc/nginx/sites-enabled/НАЗВАНИЕ_САЙТА
Congratulations! You have successfully enabled HTTPS on https://НАЗВАНИЕ_САЙТА.ДОМЕН and https://www.НАЗВАНИЕ_САЙТА.ДОМЕН
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
После этого, когда Вы зайдете на свой сайт http://НАЗВАНИЕ_САЙТА.ДОМЕН, Вы будете автоматически перенаправлены на https://НАЗВАНИЕ_САЙТА.ДОМЕН.
Если Вам нужен сертификат с более высоким статусом, советую приобретать его здесь: https://reg.ru.
Теперь точно все!
4 комментария
Установил и настроил сервер по вашему мануалу: «Установка Nginx, MySQL 8, PHP8.1-FPM на Ubuntu 22.04 LTS с нуля». Затем установил WordPress. Все это на локальном адресе 192.168.1.х
После установки все отлично работает внутри локальной сети, однако, когда я на роутере (у меня есть белый ip) делаю проброс 80 порта с белого ip на новый сервер, то доступа к серверу снаружи нет. При проверке 80 порта у своего внешнего ip на portscaner.ru пишет, что порт открыт. Возможно требуется какая-то дополнительная настройка файла конфигурации nginx?
Здравствуйте! Может Вам нужно прокинуть 443 порт (если пытаетесь по https)? Вы открываете в браузере по внешнему IP, или есть домен?
Хотя, я думаю, Вы уже наверняка успели решить вопрос, с моей скоростью ответа 🙂 Удалось ли найти проблему?
А зависимости php для word press не нужно разве ставить?
Здравствуйте! Да, я перепроверю статью с этой точки зрения, и отпишусь здесь же. Наверняка каких-то расширений PHP не будет хватать «из коробки», например, для работы с изображениями (при их загрузке во время написания статей). Возможно, нужно будет ещё донастроить Nginx и PHP, касательно максимальных размеров запросов и загружаемых файлов. Благодарю за полезный комментарий!