Как установить BookWyrm на сервер Rocky Linux 9 с помощью Docker

BookWyrm – это федеративная социальная сеть с открытым исходным кодом для читателей книг. Она является альтернативой Goodreads, не содержащей рекламы. Она использует протокол ActivityPub для передачи и получения пользовательской активности между другими экземплярами BookWyrm и другими сервисами, использующими этот протокол, например, Mastodon. Он предлагает множество функций, таких как рецензии на книги, рейтинги, читательская активность, книжные полки, такие как «для чтения», «в данный момент читаю» и «прочитано», списки книг, а также слежение за другими пользователями и их успехами в чтении. В этом руководстве вы узнаете, как установить BookWyrm на сервер Rocky Linux 9.

Шаг 0 – Подготовка

Убедитесь, что все обновлено.

sudo dnf update

Установим несколько пакетов, которые необходимы в дальнейшем.

sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y

Некоторые из этих пакетов могут быть уже установлены в вашей системе.

Шаг 1 – Настройка брандмауэра

Первым шагом является настройка брандмауэра. В Rocky Linux используется брандмауэр Firewalld. Проверьте состояние брандмауэра.

sudo firewall-cmd --state
running

Брандмауэр работает с различными зонами, и по умолчанию мы будем использовать публичную зону. Перечислите все службы и порты, активные на брандмауэре.

sudo firewall-cmd --permanent --list-services

Вы должны увидеть следующий результат.

cockpit dhcpv6-client ssh

Разрешите порты HTTP и HTTPS.

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

Проверьте статус брандмауэра.

sudo firewall-cmd --permanent --list-services

Вы должны увидеть аналогичный результат.

cockpit dhcpv6-client http https ssh

Перезагрузите брандмауэр, чтобы включить изменения.

sudo firewall-cmd --reload

Шаг 2 – Установка Docker и Docker Compose

Этот шаг необходим как на сервере, так и на клиентских машинах. Установите официальный репозиторий Docker.

sudo dnf install yum-utils
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

Установите Docker.

sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Включите и запустите демон Docker.

sudo systemctl enable docker --now

Проверьте состояние службы Docker.

? docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
     Active: active (running) since Wed 2023-09-13 09:15:08 UTC; 6s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 6425 (dockerd)
      Tasks: 9
     Memory: 33.2M
        CPU: 282ms
     CGroup: /system.slice/docker.service
             ??6425 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Добавьте системного пользователя в группу Docker, чтобы избежать использования sudo для выполнения команд Docker.

sudo usermod -aG docker $(whoami)

После выхода из системы снова войдите на сервер, чтобы активировать изменения.

Шаг 3 – Установите Git

BookWyrm для загрузки файлов необходим Git, который по умолчанию недоступен в Rocky Linux. Выполните следующую команду для установки Git.

sudo dnf install git

Проверьте установку.

git --version
git version 2.39.3

Вы можете настроить Git на свое имя и адрес электронной почты для дальнейшего использования. Этот шаг необязателен.

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

Шаг 4 – Установка Nginx

Rocky Linux 9 поставляется со старой версией Nginx. Для установки последней версии необходимо скачать официальный репозиторий Nginx. Создайте и откройте для редактирования файл /etc/yum.repos.d/nginx.repo.

sudo nano /etc/yum.repos.d/nginx.repo

Вставьте в него следующий код.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

После завершения работы сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Установите Nginx.

sudo dnf install nginx

Проверьте установку.

nginx -v
nginx version: nginx/1.24.0

Включите и запустите службу сервера Nginx.

sudo systemctl enable nginx --now

Проверьте статус службы.

? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
     Active: active (running) since Wed 2023-09-13 09:16:59 UTC; 8s ago
       Docs: http://nginx.org/en/docs/
    Process: 8786 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 8787 (nginx)
      Tasks: 3 (limit: 22979)
     Memory: 2.8M
        CPU: 12ms
     CGroup: /system.slice/nginx.service
             ??8787 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??8788 "nginx: worker process"
             ??8789 "nginx: worker process"

Шаг 5 – Установка SSL

Для генерации SSL-сертификата нам необходимо установить Certbot. Для этого мы воспользуемся программой установки пакетов Snapd. Поскольку Rocky Linux не поставляется вместе с ним, установите программу установки Snapd. Для ее работы необходим репозиторий EPEL (Extra Packages for Enterprise Linux).Установите репозиторий EPEL.

sudo dnf install epel-release

Установите Snapd.

sudo dnf install -y snapd

Включите и запустите службу Snap.

sudo systemctl enable snapd --now

Установите основной пакет Snap и убедитесь, что ваша версия Snapd актуальна.

sudo snap install core && sudo snap refresh core

Создайте необходимые ссылки для работы Snapd.

sudo ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Выполните следующую команду для установки Certbot.

sudo snap install --classic certbot

Используйте следующую команду для обеспечения возможности запуска команды Certbot, создав символическую ссылку на каталог /usr/bin.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверьте установку.

certbot --version
certbot 2.6.0

Генерируйте SSL-сертификат.

sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d bookwyrm.example.com

Вышеуказанная команда загрузит сертификат в каталог /etc/letsencrypt/live/bookwyrm.example.com на вашем сервере. Сгенерируйте сертификат группы Диффи-Хеллмана.

sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

sudo systemctl list-timers

Вы найдете snap.certbot.renew.service в числе служб, запланированных к запуску.

NEXT                        LEFT          LAST                        PASSED       UNIT                         ACTIVATES
------------------------------------------------------------------------------------------------------------------             
Wed 2023-09-13 10:45:51 UTC 1h 25min left Wed 2023-09-13 09:19:00 UTC 1min 13s ago dnf-makecache.timer          dnf-makecache.service
Wed 2023-09-13 18:33:00 UTC 9h left       -                           -            snap.certbot.renew.timer     snap.certbot.renew.service
Thu 2023-09-14 00:00:00 UTC 14h left      Wed 2023-09-13 08:32:04 UTC 48min ago    logrotate.timer              logrotate.service

Выполните пробный запуск процесса, чтобы проверить, все ли в порядке с обновлением SSL.

sudo certbot renew --dry-run

Если ошибок нет, все готово. Ваш сертификат будет обновлен автоматически.

Шаг 6 – Загрузка BookWyrm

Создайте каталог для BookWyrm.

mkdir ~/bookwyrm

Перейдите в этот каталог.

cd ~/bookwyrm

Клонируйте рабочую ветку приложения BookWyrm с GitHub.

git clone https://github.com/bookwyrm-social/bookwyrm.git .

Перейдите в рабочую ветку.

git checkout production

Создайте файл окружения, скопировав файл примера.

cp .env.example .env

Шаг 7 – Настройка файла окружения BookWyrm

Сгенерируйте секретный ключ для BookWyrm.

openssl rand 60 | openssl base64 -A
kahYlt56TI2fZQwj0oX054u2aJE7bptHyInK4RXQadLLmXwGSDm8N1vW9uacA9N6FHoXPINPwOFTmnaT

Откройте файл окружения для редактирования.

sudo nano .env

Настройте следующие переменные.

SECRET_KEY="kahYlt56TI2fZQwj0oX054u2aJE7bptHyInK4RXQadLLmXwGSDm8N1vW9uacA9N6FHoXPINPwOFTmnaT"
DOMAIN=bookwyrm.example.com
EMAIL=user@example.com
POSTGRES_PASSWORD=Your_Password
POSTGRES_USER=bookwyrmuser
POSTGRES_DB=bookwyrm
POSTGRES_HOST=localhost
REDIS_ACTIVITY_HOST=localhost
REDIS_ACTIVITY_PORT=6379
REDIS_ACTIVITY_PASSWORD=Your_Redis_Password
REDIS_ACTIVITY_DB_INDEX=0
REDIS_BROKER_HOST=localhost
REDIS_BROKER_PORT=6379
REDIS_BROKER_PASSWORD=Your_Redis_Password
REDIS_BROKER_DB_INDEX=1
FLOWER_USER=username
FLOWER_PASSWORD=flowerpassword
EMAIl_HOST=
EMAIL_PORT=587
EMAIL_HOST_USER=AmazonSESUSER
EMAIL_HOST_PASSWORD=AmazonSESPASSWORD
EMAIL_USE_TLS=true
EMAIL_USE_SSL=false
EMAIL_SENDER_NAME=HowtoForge
EMAIL_SENDER_DOMAIN=example.com
## only enable it if you have a fairly powered server with a minimum of 2 CPU Cores and 2GB of RAM
ENABLE_PREVIEW_IMAGES=true

Перейдем к рассмотрению всех переменных в файле окружения.

  • SECRET_KEY – ключ, который вы сгенерировали выше
  • DOMAIN – полное доменное имя (FQDN) для вашего экземпляра BookWyrn. В нашем случае это будет bookwyrm.example.com .
  • POSTGRES_PASSWORD – пароль PostgreSQL настроенный в шаге 2.
  • POSTGRES_HOST – установите значение db, которое является служебным именем PostgreSQL в файле docker-compose.yml.
  • POSTGRES_USER – установите значение bookwyrmuser, которое вы выбрали в шаге 2.
  • POSTGRES_DB – установите значение bookwyrm, как было выбрано в шаге 2.
  • REDIS_ACTIVITY_HOST и REDIS_BROKER_HOST – установите значение localhost, если вы размещаете сервер Redis на той же машине.
  • REDIS_ACTIVITY_PORT и REDIS_BROKER_PORT – установите значение порта Redis по умолчанию 6379.
  • REDIS_ACTIVITY_DB и REDIS_BROKER_DB – установите значения 0 и 1 соответственно. Мы будем использовать разные базы данных для обеих.
  • REDIS_ACTIVITY_PASSWORD и REDIS_BROKER_PASSWORD – установите для них пароль Redis, выбранный в шаге 3.
  • FLOWER_USER – выберите имя пользователя для сервиса Flower, которое необходимо BookWyrm.
  • FLOWER_PASSWORD – выберите пароль для сервиса Flower.
  • EMAIL_HOST – установите на SMTP-хост используемого почтового сервиса.
  • EMAIL_PORT – установите на SMTP-порт почтового сервиса.
  • EMAIL_HOST_USER – имя пользователя SMTP.
  • EMAIL_HOST_PASSWORD – пароль SMTP.
  • EMAIL_USE_TLS – установить значение true, если почтовый сервис использует TLS.
  • EMAIL_USE_SSL – установить значение true, если почтовый сервис использует SSL.
  • EMAIL_SENDER_NAME – выбрать имя отправителя для писем, отправляемых вашим экземпляром.
  • EMAIL_SENDER_DOMAIN – установить значение доменного имени, используемого почтовым сервисом.
  • ENABLE_PREVIEW_IMAGES – установите значение true, если вы хотите, чтобы ваш экземпляр автоматически генерировал изображения предварительного просмотра. Однако убедитесь, что ваш сервер имеет достаточно процессора и оперативной памяти для этого, поскольку это интенсивный процесс.

После завершения работы сохраните файл, нажав клавишу Ctrl + X и введя Y при появлении запроса.

Шаг 8 – Настройка Docker-файла BookWyrm

Откройте файл Docker compose для редактирования.

nano docker-compose.yml

Как вы видите, docker-файл состоит из сервисов Nginx и Certbot. Но в нашем учебном пособии мы будем использовать Nginx в качестве внешнего обратного прокси-сервера. Поэтому мы не будем использовать в файле службу Certbot. В разделе services >>nginx >>ports закомментируйте порты по умолчанию и добавьте строку ` – «8001:8001», как показано ниже. Также закомментируйте тома certbot под службой Nginx. Служба Nginx должна выглядеть следующим образом. И, наконец, закомментируйте всю секцию службы certbot.

services:
  nginx:
    image: nginx:latest
    logging: *default-logging
    restart: unless-stopped
    ports:
    #  - "80:80"
    #  - "443:443"
      - "8001:8001"
    depends_on:
      - web
    networks:
      - main
    volumes:
      - ./nginx:/etc/nginx/conf.d
    #  - ./certbot/conf:/etc/nginx/ssl
    #  - ./certbot/data:/var/www/certbot
      - static_volume:/app/static
      - media_volume:/app/images
  #certbot:
  #  image: certbot/certbot:latest
  #  command: certonly --webroot --webroot-path=/var/www/certbot --email ${EMAIL} --agree-tos --no-eff-email -d ${DOMAIN} -d www.${DOMAIN}
    #command: renew --webroot --webroot-path /var/www/certbot
  #  logging: *default-logging
  #  volumes:
  #    - ./certbot/conf:/etc/letsencrypt
  #    - ./certbot/logs:/var/log/letsencrypt
  #    - ./certbot/data:/var/www/certbot

Больше никаких изменений не требуется. После завершения работы сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Шаг 8 – Настройка Nginx и файлов Nginx

Сделайте копию файла шаблона Nginx production и настройте его для использования с docker-сервисом Nginx.

cp nginx/production nginx/default.conf

Откройте файл default.conf для редактирования.

nano nginx/default.conf

Замените your-domain.com на ваше реальное доменное имя BookWyrm. В нашем случае это bookwyrm.example.com. Если вы не используете версию www-your-domain.com вашего домена, удалите ее из server_name. Также закомментируйте блок location ~ /.well-known/acme-challenge под блоком первый сервер.

Вот как должен выглядеть ваш файл default.conf.

include /etc/nginx/conf.d/server_config;
upstream web {
    server web:8000;
}
server {
    listen [::]:80;
    listen 80;
    server_name bookwyrm.example.com;
#    location ~ /.well-known/acme-challenge {
#        allow all;
#        root /var/www/certbot;
#    }
#     # redirect http to https
#     return 301 https://your-domain.com$request_uri;
}
# server {
....
}
# Reverse-Proxy server
 server {
     listen [::]:8001;
     listen 8001;
     server_name bookwyrm.example.com;
     location / {
         proxy_pass http://web;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $host;
         proxy_redirect off;
     }
     location /images/ {
         alias /app/images/;
     }
     location /static/ {
         alias /app/static/;
     }
 }

После завершения работы сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Создайте и откройте для редактирования файл /etc/nginx/conf.d/bookwyrm.conf.

sudo nano /etc/nginx/conf.d/bookwyrm.conf

Вставьте в него следующий код.

server {
    server_name bookwyrm.example.com;
    listen [::]:80;
    listen 80;
    # redirect http to https
    return 301 https://bookwyrm.example.com$request_uri;
}
server {
    access_log /var/log/nginx/bookwyrm.access.log;
    error_log  /var/log/nginx/bookwyrm.error.log;
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name bookwyrm.example.com;
    # SSL code
    ssl_certificate /etc/letsencrypt/live/bookwyrm.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/bookwyrm.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/bookwyrm.example.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
    resolver_timeout 2s;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    location / {
        proxy_pass http://localhost:8001;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
    location /images/ {
        proxy_pass http://localhost:8001;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
    location /static/ {
        proxy_pass http://localhost:8001;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}

После завершения работы сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Откройте для редактирования файл /etc/nginx/nginx.conf.

sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Проверьте синтаксис файла конфигурации Nginx.

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите службу Nginx для включения новой конфигурации.

sudo systemctl restart nginx

Шаг 9 – Установка BookWyrm

Перейдите в каталог Bookwyrm.

cd ~/bookwyrm

Инициализируйте базу данных. Выполнение команды займет несколько минут.

./bw-dev migrate

После завершения вы увидите аналогичный вывод.

..............................
  Applying django_celery_beat.0005_add_solarschedule_events_choices... OK
  Applying django_celery_beat.0006_auto_20180322_0932... OK
  Applying django_celery_beat.0007_auto_20180521_0826... OK
  Applying django_celery_beat.0008_auto_20180914_1922... OK
  Applying django_celery_beat.0006_auto_20180210_1226... OK
  Applying django_celery_beat.0006_periodictask_priority... OK
  Applying django_celery_beat.0009_periodictask_headers... OK
  Applying django_celery_beat.0010_auto_20190429_0326... OK
  Applying django_celery_beat.0011_auto_20190508_0153... OK
  Applying django_celery_beat.0012_periodictask_expire_seconds... OK
  Applying django_celery_beat.0013_auto_20200609_0727... OK
  Applying django_celery_beat.0014_remove_clockedschedule_enabled... OK
  Applying django_celery_beat.0015_edit_solarschedule_events_choices... OK
  Applying django_celery_beat.0016_alter_crontabschedule_timezone... OK
  Applying sessions.0001_initial... OK

Запустите приложение, скомпилировав Docker-образ для BookWyrm, Celery и Flower.

docker compose up --build

Этот процесс займет не менее 10-15 минут в зависимости от ресурсов вашего сервера. Дождитесь окончания компиляции всех образов. После завершения процесса остановите его, нажав клавишу Ctrl + C. По завершении процесса вы должны увидеть нечто подобное.

bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 30#30: http file cache: /var/cache/nginx/bookwyrm_cache 0.000M, bsize: 4096
bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 1#1: signal 17 (SIGCHLD) received from 30
bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 1#1: cache loader process 30 exited with code 0
bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 1#1: signal 29 (SIGIO) received
bookwyrm-redis_broker-1 | 1:M 13 Sep 2023 10:24:32.018 * 100 changes in 300 seconds. Saving...
bookwyrm-redis_broker-1 | 1:M 13 Sep 2023 10:24:32.018 * Background saving started by pid 21
bookwyrm-redis_broker-1 | 21:C 13 Sep 2023 10:24:32.022 * DB saved on disk
bookwyrm-redis_broker-1 | 21:C 13 Sep 2023 10:24:32.023 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
bookwyrm-redis_broker-1 | 1:M 13 Sep 2023 10:24:32.119 * Background saving terminated with success
^CGracefully stopping... (press Ctrl+C again to force)
Aborting on container exit...
canceled

Инициализация приложения.

./bw-dev setup

На этом процесс завершится, и вы получите код администратора.

*******************************************
Use this code to create your admin account:
299f3181-e57e-4f16-94c9-51cfc427b8df
*******************************************

Инициализация приложения будет завершена.
Код можно получить в любой момент, выполнив следующую команду.

./bw-dev admin_code
*******************************************
Use this code to create your admin account:
299f3181-e57e-4f16-94c9-51cfc427b8df
*******************************************

На последнем этапе установки BookWyrm необходимо запустить все оставшиеся контейнеры.

docker compose up -d

Проверить состояние контейнеров можно с помощью следующей команды.

docker ps

Вы должны получить аналогичный результат.

CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS        PORTS                                               NAMES
083c2dfc81f4   nginx:latest             "/docker-entrypoint.…"   26 hours ago   Up 26 hours   80/tcp, 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp   bookwyrm-nginx-1
8618c3a7b460   bookwyrm-web             "gunicorn bookwyrm.w…"   26 hours ago   Up 26 hours   0.0.0.0:32768->8000/tcp, :::32768->8000/tcp         bookwyrm-web-1
3e67c639e21f   bookwyrm-celery_beat     "celery -A celerywyr…"   26 hours ago   Up 26 hours                                                       bookwyrm-celery_beat-1
86a774a5bb6d   bookwyrm-flower          "celery -A celerywyr…"   26 hours ago   Up 26 hours                                                       bookwyrm-flower-1
ac2ff1e91bb4   bookwyrm-celery_worker   "celery -A celerywyr…"   26 hours ago   Up 26 hours                                                       bookwyrm-celery_worker-1
bc6a64fac55c   redis                    "docker-entrypoint.s…"   26 hours ago   Up 26 hours   6379/tcp                                            bookwyrm-redis_activity-1
ef78760b967b   bookwyrm-db              "/bookwyrm-entrypoin…"   26 hours ago   Up 26 hours   5432/tcp                                            bookwyrm-db-1
5ededaed00ab   redis                    "docker-entrypoint.s…"   26 hours ago   Up 26 hours   6379/tcp                    

Также можно проверить состояние с помощью следующей команды.

docker compose ps

В этот раз результат будет немного другим.Следующий шаг – доступ к BookWyrm и настройка вашего экземпляра.

Шаг 10 – Доступ к BookWyrm

Если все в порядке, нажмите кнопку Продолжить, чтобы перейти на следующую страницу.

Введите ключ администратора, полученный на предыдущем шаге, и учетные данные учетной записи администратора. После этого нажмите кнопку Подписаться, чтобы перейти на следующую страницу.

Здесь вам будет предложено настроить ваш сайт и добавить информацию и политики сайта.

Далее проверьте настройки электронной почты, нажав кнопку Система >>Настройка электронной почты на левой боковой панели. Подтвердите указанные на странице настройки и нажмите кнопку Отправить тестовое письмо, чтобы отправить себе тестовое письмо.

Если письмо было отправлено успешно, вы должны получить следующее письмо.

Вы также можете настроить остальные параметры, перейдя к ним с левой боковой панели. После этого ваш экземпляр BookWyrm готов к работе.

Шаг 11 – Резервное копирование BookWyrm

BookWyrm поставляется с утилитой Backup для установки в Docker. Резервные копии создаются внутри каталога backups контейнера базы данных. Резервные копии создаются ежедневно в полночь по Гринвичу. Для входа в SSH-оболочку контейнера выполните следующую команду.

docker exec -it bookwyrm-db-1 bash

После входа в контейнер проверьте содержимое каталога резервных копий. Эта команда покажет резервные копии только после того, как пройдет 24 часа с момента создания контейнера.

ls backups -al
total 252
drwxr-xr-x. 2 root root 56 Sep 12 00:00 .
drwxr-xr-x. 1 root root 39 Sep 11 11:47 ..
-rw-r--r--. 1 root root 250380 Sep 12 00:00 backup_bookwyrm_2023-09-12.sql
-rw-r--r--. 1 root root 44 Sep 11 11:47 .env

Выход из оболочки.

exit

Вы можете скопировать резервные копии на локальную машину, выполнив следующую команду.

docker cp bookwyrm-db-1:/backups<host machine path>

Функция автоматического обрезания базы данных по умолчанию отключена. Чтобы включить ее, откройте файл ~/bookwyrm/postgres-docker/cronfile для редактирования.

nano ~/bookwyrm/postgres-docker/cronfile

Откорректируйте последнюю строку, удалив хэш ( # ) перед ней. Ваш файл cronfile должен выглядеть следующим образом.

0 0 * * * /usr/local/bin/bookwyrm-backup.sh
# If uncommented, this script will weed the backups directory. It will keep the 14
# most-recent backups, then one backup/week for the next four backups, then one
# backup/month after that.
0 5 * * * /usr/local/bin/bookwyrm-weed.sh -d 14 -w 4 -m -1 /backups

После этого сохраните файл, нажав клавишу Ctrl + X и введя Y при появлении запроса. Приведенный выше сценарий сохранит 14 последних резервных копий.

Шаг 12 – Обновление BookWyrm

Обновление экземпляра BookWyrm включает в себя несколько шагов. Во-первых, извлеките последние изменения из репозитория BookWyrm на GitHub.

cd ~/bookwyrm
git pull

Если есть конфликты, сначала нужно выполнить git pull отдельно. Пересоберите образы.

docker compose rebuild

Запустите миграцию базы данных с использованием вновь созданных образов Docker.

docker compose run --rm web python manage.py migrate 

Скомпилируйте темы BookWyrm.

docker compose run --rm web python manage.py compile_themes

Загрузите все обновленные статические файлы.

docker compose run --rm web python manage.py collectstatic --no-input

Отключите существующие контейнеры.

docker compose down --remove-orphans

Перезапустите контейнеры, используя вновь созданные образы.

docker compose up -d

Потоки для каждого пользователя хранятся в базе данных Redis. Чтобы переполнить поток, выполните следующую команду.

./bw-dev populate_streams

Или вы можете использовать следующую команду для переполнения потоков.

docker compose run --rm web python manage.py populate_streams

Если это не сработало или что-то сломалось, вы можете удалить данные потока с помощью следующей команды.

docker compose run --rm web python manage.py erase_streams

Шаг 13 – Инструмент командной строки BookWyrm

До сих пор вы видели, как мы использовали bw-dev инструмент командной строки для BookWyrm. Этот инструмент может выполнять множество полезных задач и даже запускать команды Docker. Ниже приведены некоторые популярные варианты использования этого инструмента.

Подтверждение учетной записи пользователя вручную

Следующая команда подтверждает электронную почту пользователя (имя пользователя) вручную и помечает ее как активную.

./bw-dev confirm_email<username>

Генерировать изображения предварительного просмотра

Если в дальнейшем вы включите опцию предварительного просмотра изображений, то вам необходимо будет обновить их для ранее загруженных данных. Для этого выполните следующую команду.

./bw-dev generate_preview_images --all

Генерировать эскизы обложек книг

Следующая команда генерирует эскизы обложек книг.

./bw-dev generate_thumbnails

Это некоторые из опций. Полный список можно найти в разделе BookWyrm CLI manual.

Заключение

На этом установка социальной сети BookWyrm на сервер Rocky Linux 9 закончена.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.howtoforge.com

Похожие статьи

Комментарии (0)