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 закончена.
Комментарии (0)