Установка WordPress на Ubuntu 22.04 LTS

Установка WordPress на Ubuntu 22.04 LTS

Установка 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 комментария

  1. Михаил:

    Установил и настроил сервер по вашему мануалу: «Установка Nginx, MySQL 8, PHP8.1-FPM на Ubuntu 22.04 LTS с нуля». Затем установил WordPress. Все это на локальном адресе 192.168.1.х
    После установки все отлично работает внутри локальной сети, однако, когда я на роутере (у меня есть белый ip) делаю проброс 80 порта с белого ip на новый сервер, то доступа к серверу снаружи нет. При проверке 80 порта у своего внешнего ip на portscaner.ru пишет, что порт открыт. Возможно требуется какая-то дополнительная настройка файла конфигурации nginx?

    • web-developer:

      Здравствуйте! Может Вам нужно прокинуть 443 порт (если пытаетесь по https)? Вы открываете в браузере по внешнему IP, или есть домен?
      Хотя, я думаю, Вы уже наверняка успели решить вопрос, с моей скоростью ответа 🙂 Удалось ли найти проблему?

  2. Вася:

    А зависимости php для word press не нужно разве ставить?

    • web-developer:

      Здравствуйте! Да, я перепроверю статью с этой точки зрения, и отпишусь здесь же. Наверняка каких-то расширений PHP не будет хватать «из коробки», например, для работы с изображениями (при их загрузке во время написания статей). Возможно, нужно будет ещё донастроить Nginx и PHP, касательно максимальных размеров запросов и загружаемых файлов. Благодарю за полезный комментарий!

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *