diff options
Diffstat (limited to 'LINUX/WORDPRESS.md')
| -rw-r--r-- | LINUX/WORDPRESS.md | 471 |
1 files changed, 471 insertions, 0 deletions
diff --git a/LINUX/WORDPRESS.md b/LINUX/WORDPRESS.md new file mode 100644 index 0000000..68cfc81 --- /dev/null +++ b/LINUX/WORDPRESS.md @@ -0,0 +1,471 @@ +## Установка WordPress: техническая часть + +### Проверим пользователя + +Убедимся, что мы находимся в нужной папке (директории) и не под пользователем root: + +``` +serveruser@ИМЯСЕРВЕРА:/root$ +``` + +Если у Вас как на примере выше (вместо serveruser может быть другой пользователь, главное, чтобы не root), то все хорошо. А если у Вас так: + +``` +root@ИМЯСЕРВЕРА:~# +``` + +То выполите инструкции по созданию нового пользователя из этой статьи: [Установка Nginx, MySQL 8, PHP8.1-FPM на Ubuntu 22.04 LTS с нуля](https://dnevnik.dev/2022/07/11/ustanovka-nginx-mysql-8-php8-1-fpm-na-ubuntu-22-04-lts-s-nulya/). + +### Скачаем WordPress + +Перейдем в нужный каталог, введем: + +``` +cd /var/www/ +``` + +Затем, нужно создать каталог для нашего будущего сайта (у меня НАЗВАНИЕ_САЙТА это dnevnik): + +``` +sudo mkdir НАЗВАНИЕ_САЙТА +sudo chown -R www-data:www-data НАЗВАНИЕ_САЙТА +sudo find /var/www/НАЗВАНИЕ_САЙТА/ -type d -exec chmod 750 {} \; +sudo find /var/www/НАЗВАНИЕ_САЙТА/ -type f -exec chmod 640 {} \; +``` + +Если нужно проверить, свободно ли выбранное Вами название сайта, то сделать это можно здесь: [https://reg.ru](https://www.reg.ru/domain/new/?rlink=reflink-10793423). + +Переместимся в созданный каталог, и скачаем 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](https://www.reg.ru/domain/new/?rlink=reflink-10793423). К примеру, домен этого сайта (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 +``` +======================================== +Сначала вы проверяете, что порт 80 уже работает, + +``` +sudo netstat -plunt | grep 80 + +tcp6 0 0 :::80 :::* LISTEN 1573456/apache2 +``` + +Если он запущен, то отключите apache: + +``` +sudo service apache2 stop +``` + +Теперь запустите Nginx: + +``` +sudo service nginx start +``` +======================================== + +Теперь нужно настроить 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](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](https://www.reg.ru/domain/new/?rlink=reflink-10793423). + +Теперь точно все!
\ No newline at end of file |
