Cách cài đặt BookWyrm trên máy chủ Rocky Linux 9 bằng Docker

theanh

Administrator
Nhân viên
BookWyrm là mạng xã hội liên kết nguồn mở dành cho người đọc sách. Nó hoạt động như một giải pháp thay thế Goodreads không có quảng cáo. Nó sử dụng giao thức ActivityPub để gửi và nhận hoạt động của người dùng giữa các phiên bản BookWyrm khác và các dịch vụ khác sử dụng giao thức như Mastodon. Nó cung cấp nhiều tính năng như đánh giá sách, xếp hạng, hoạt động đọc, giá sách như "đang đọc", "đang đọc" và "đã đọc", danh sách sách và theo dõi những người dùng khác cùng tiến trình đọc của họ. Nó cũng cung cấp các tính năng kiểm duyệt người dùng như chặn hoặc chấp thuận thủ công người theo dõi và nhiều cấp độ riêng tư cho trạng thái, giá sách và danh sách.

Trong hướng dẫn này, bạn sẽ học cách cài đặt BookWyrm trên máy chủ Rocky Linux 9.

Điều kiện tiên quyết​


  • Máy chủ chạy Rocky Linux 9 với tối thiểu 2GB RAM và 2 lõi CPU.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) như bookwyrm.example.com trỏ đến máy chủ.

  • Tài khoản SMTP có dịch vụ email như Amazon SES hoặc Mailgun.

  • Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo dnf update
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
Một số gói này có thể đã được cài đặt trên system.

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Tường lửa hoạt động với các vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Nó sẽ hiển thị đầu ra sau.
Mã:
cockpit dhcpv6-client ssh
Cho phép HTTP và HTTPS cổng.
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Bạn sẽ thấy đầu ra tương tự.
Mã:
cockpit dhcpv6-client http https ssh
Tải lại tường lửa để kích hoạt các thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 2 - Cài đặt Docker và Docker Compose​

Bước này là bắt buộc trên cả máy chủ và máy khách.

Cài đặt kho lưu trữ Docker chính thức.
Mã:
$ sudo dnf install yum-utils
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Cài đặt Docker.
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Bật và chạy Docker daemon.
Mã:
$ sudo systemctl enable docker --now
Kiểm tra trạng thái của dịch vụ Docker.
Mã:
$ sudo systemctl status 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
Thêm người dùng hệ thống của bạn vào nhóm Docker để tránh sử dụng sudo để chạy lệnh Docker.
Mã:
$ sudo usermod -aG docker $(whoami)
Đăng nhập lại vào máy chủ của bạn sau khi đăng xuất để kích hoạt thay đổi.

Bước 3 - Cài đặt Git​

BookWyrm cần Git để tải xuống các tệp và theo mặc định, Git không khả dụng trên Rocky Linux. Chạy lệnh sau để cài đặt Git.
Mã:
$ sudo dnf install git
Xác minh cài đặt.
Mã:
$ git --version
git version 2.39.3
Bạn có thể cấu hình Git bằng tên và địa chỉ email của mình để sử dụng sau này. Tuy nhiên, bước này là tùy chọn.
Mã:
$ git config --global user.name "Your Name"
$ git config --global user.email "[emailprotected]"

Bước 4 - Cài đặt Nginx​

Rocky Linux 9 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.

Tạo và mở tệp /etc/yum.repos.d/nginx.repo để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Dán mã sau vào đó.
Mã:
[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
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cài đặt Nginx.
Mã:
$ sudo dnf install nginx
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Bật và khởi động máy chủ Nginx dịch vụ.
Mã:
$ sudo systemctl enable nginx --now
Kiểm tra trạng thái dịch vụ.
Mã:
$ sudo systemctl status nginx
? 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"

Bước 5 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho việc đó. Vì Rocky Linux không đi kèm với nó, hãy cài đặt trình cài đặt Snapd. Yêu cầu kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux) để hoạt động.

Cài đặt kho lưu trữ EPEL.
Mã:
$ sudo dnf install epel-release
Cài đặt Snapd.
Mã:
$ sudo dnf install -y snapd
Bật và khởi động Snap dịch vụ.
Mã:
$ sudo systemctl enable snapd --now
Cài đặt gói lõi Snap và đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
Tạo các liên kết cần thiết để Snapd làm việc.
Mã:
$ 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
Phát hành lệnh sau để cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Xác minh cài đặt.
Mã:
$ certbot --version
certbot 2.6.0
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d bookwyrm.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /etc/letsencrypt/live/bookwyrm.example.com thư mục trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Mã:
$ sudo systemctl list-timers
Bạn sẽ thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
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
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 6 - Tải xuống BookWyrm​

Tạo thư mục cho BookWyrm.
Mã:
$ mkdir ~/bookwyrm
Chuyển sang thư mục.
Mã:
$ cd ~/bookwyrm
Sao chép nhánh sản xuất của ứng dụng BookWyrm từ GitHub.
Mã:
$ git clone https://github.com/bookwyrm-social/bookwyrm.git .
Chuyển sang nhánh sản xuất.
Mã:
$ git checkout production
Tạo tệp môi trường bằng cách sao chép tệp ví dụ.
Mã:
$ cp .env.example .env

Bước 7 - Cấu hình tệp môi trường BookWyrm​

Tạo khóa bí mật cho BookWyrm.
Mã:
$ openssl rand 60 | openssl base64 -A
kahYlt56TI2fZQwj0oX054u2aJE7bptHyInK4RXQadLLmXwGSDm8N1vW9uacA9N6FHoXPINPwOFTmnaT
Mở tệp môi trường cho chỉnh sửa.
Mã:
$ sudo nano .env
Cấu hình các biến sau.
Mã:
SECRET_KEY="kahYlt56TI2fZQwj0oX054u2aJE7bptHyInK4RXQadLLmXwGSDm8N1vW9uacA9N6FHoXPINPwOFTmnaT"
DOMAIN=bookwyrm.example.com
[emailprotected]
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
Chúng ta hãy xem xét tất cả các biến trong môi trường tệp.
  • SECRET_KEY - khóa mà bạn đã tạo ở trên
  • DOMAIN - tên miền đủ điều kiện (FQDN) cho phiên bản BookWyrn của bạn. Trong trường hợp của chúng tôi, nó sẽ là bookwyrm.example.com.
  • POSTGRES_PASSWORD - Mật khẩu PostgreSQL được cấu hình trong bước 2.
  • POSTGRES_HOST - đặt thành db là tên dịch vụ của PostgreSQL trong docker-compose.yml tệp.
  • POSTGRES_USER - đặt thành bookwyrmuser mà bạn đã chọn ở bước 2.
  • POSTGRES_DB - đặt thành bookwyrm như đã chọn ở bước 2.
  • REDIS_ACTIVITY_HOSTREDIS_BROKER_HOST - đặt chúng thành localhost nếu bạn đang lưu trữ máy chủ Redis trên cùng một máy.
  • REDIS_ACTIVITY_PORTREDIS_BROKER_PORT - đặt chúng thành cổng Redis mặc định 6379.
  • REDIS_ACTIVITY_DBREDIS_BROKER_DB - đặt chúng thành 0 và 1 tương ứng. Chúng tôi sẽ sử dụng các cơ sở dữ liệu khác nhau cho cả hai.
  • REDIS_ACTIVITY_PASSWORDREDIS_BROKER_PASSWORD - đặt chúng thành mật khẩu Redis như đã chọn trong bước 3.
  • FLOWER_USER - chọn tên người dùng cho dịch vụ Hoa mà BookWyrm cần.
  • FLOWER_PASSWORD - chọn mật khẩu cho Hoa dịch vụ.
  • EMAIL_HOST - đặt thành máy chủ SMTP của dịch vụ email bạn đang sử dụng.
  • EMAIL_PORT - đặt thành cổng SMTP của email dịch vụ.
  • EMAIL_HOST_USER - đặt thành tên người dùng SMTP.
  • EMAIL_HOST_PASSWORD - đặt thành SMTP mật khẩu.
  • EMAIL_USE_TLS - đặt thành true nếu dịch vụ email của bạn sử dụng TLS.
  • EMAIL_USE_SSL - đặt thành true nếu dịch vụ email của bạn sử dụng SSL.
  • EMAIL_SENDER_NAME - chọn tên người gửi cho các email được gửi bởi phiên bản của bạn.
  • EMAIL_SENDER_DOMAIN - đặt thành tên miền được email sử dụng dịch vụ.
  • ENABLE_PREVIEW_IMAGES - đặt thành true nếu bạn muốn phiên bản của mình tự động tạo hình ảnh xem trước. Tuy nhiên, hãy đảm bảo máy chủ của bạn có đủ CPU và RAM cho việc này vì đây là một quá trình chuyên sâu.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 8 - Cấu hình Tệp Docker BookWyrm​

Mở tệp Docker compose để chỉnh sửa.
Mã:
$ nano docker-compose.yml
Như bạn có thể thấy, tệp docker bao gồm cả dịch vụ Nginx và Certbot. Nhưng đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng Nginx bên ngoài như một máy chủ proxy ngược. Vì vậy, chúng ta sẽ không sử dụng dịch vụ Certbot trong tệp. Ngoài ra, chúng ta cần thay đổi dịch vụ Nginx cho phù hợp.

Trong services >> nginx >> ports hãy chú thích các cổng mặc định và thêm dòng ` - "8001:8001" như hiển thị bên dưới. Ngoài ra, hãy chú thích các ổ đĩa certbot bên dưới dịch vụ Nginx. Dịch vụ Nginx sẽ trông như sau. Và cuối cùng, hãy chú thích toàn bộ phần dịch vụ certbot.
Mã:
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
Không cần thay đổi gì thêm nữa. Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 8 - Cấu hình Nginx và các tệp Nginx​

Tạo một bản sao của tệp mẫu sản xuất Nginx và thiết lập để sử dụng với dịch vụ docker Nginx.
Mã:
$ cp nginx/production nginx/default.conf
Mở default.conf để chỉnh sửa.
Mã:
$ nano nginx/default.conf
Thay thế your-domain.com bằng tên miền BookWyrm thực tế của bạn trong các khối máy chủ thứ nhất và thứ ba. Trong trường hợp của chúng tôi, đó là bookwyrm.example.com. Nếu bạn không sử dụng phiên bản www-your-domain.com của miền, hãy xóa phiên bản này khỏi server_name. Ngoài ra, hãy bình luận về khối location ~ /.well-known/acme-challenge bên dưới khối máy chủ đầu tiên.

Đây là giao diện của default.conf thích.
Mã:
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/; } }
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo và mở tệp /etc/nginx/conf.d/bookwyrm.conf cho chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/bookwyrm.conf
Dán mã sau vào đó.
Mã:
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; }
}
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh tệp cấu hình Nginx cú pháp.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
Mã:
$ sudo systemctl restart nginx

Bước 9 - Cài đặt BookWyrm​

Chuyển sang Bookwyrm thư mục.
Mã:
$ cd ~/bookwyrm
Khởi tạo cơ sở dữ liệu. Lệnh sẽ mất vài phút để hoàn tất.
Mã:
$ ./bw-dev migrate
Sau khi hoàn tất, bạn sẽ thấy kết quả tương tự.
Mã:
.............................. 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
Chạy ứng dụng bằng cách biên dịch hình ảnh Docker cho BookWyrm, Celery và Flower.
Mã:
$ docker compose up --build
Quá trình này sẽ mất ít nhất 10-15 phút để hoàn tất tùy thuộc vào tài nguyên của máy chủ. Đợi cho đến khi quá trình biên dịch tất cả hình ảnh hoàn tất. Đầu ra cuối cùng của bạn sẽ trông giống như sau.

Khi quá trình hoàn tất, hãy dừng quá trình bằng cách nhấn Ctrl + C.

Bạn sẽ thấy thông tin tương tự khi quá trình hoàn tất.
Mã:
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
Khởi tạo ứng dụng.
Mã:
$ ./bw-dev setup
Quá trình này sẽ kết thúc với mã quản trị của bạn.
Mã:
*******************************************
Use this code to create your admin account:
299f3181-e57e-4f16-94c9-51cfc427b8df
*******************************************
Bạn có thể lấy mã bất kỳ lúc nào bằng cách chạy lệnh sau.
Mã:
$ ./bw-dev admin_code
*******************************************
Use this code to create your admin account:
299f3181-e57e-4f16-94c9-51cfc427b8df
*******************************************
Bước cuối cùng trong quá trình cài đặt BookWyrm là khởi động tất cả các container.
Mã:
$ docker compose up -d
Bạn có thể kiểm tra trạng thái của container bằng lệnh sau.
Mã:
$ docker ps
Bạn sẽ nhận được kết quả tương tự.




Mã:
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 bookwyrm-redis_broker-1
Bạn cũng có thể kiểm tra trạng thái bằng lệnh sau.
Mã:
$ docker compose ps
Tuy nhiên, đầu ra lần này sẽ hơi khác một chút.

Bước tiếp theo là truy cập BookWyrm và thiết lập phiên bản của bạn.

Bước 10 - Truy cập BookWyrm​

Mở URL https://bookwyrm.example.com trong trình duyệt của bạn và bạn sẽ nhận được trang sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22385%22%3E%3C/svg%3E


Nếu mọi thứ có vẻ ổn, hãy nhấp vào nút Tiếp tục để chuyển sang trang tiếp theo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22480%22%3E%3C/svg%3E


Điền khóa quản trị mà bạn đã nhận được ở bước trước cùng với thông tin đăng nhập tài khoản quản trị viên. Nhấp vào nút Đăng ký khi hoàn tất để chuyển sang trang tiếp theo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22480%22%3E%3C/svg%3E


Tại đây, bạn sẽ được yêu cầu cấu hình trang web của mình và thêm thông tin cũng như chính sách trang web.

Tiếp theo, hãy kiểm tra cài đặt email của bạn bằng cách nhấp vào Hệ thống >> Cấu hình email từ thanh bên trái. Xác nhận cài đặt email của bạn được liệt kê trên trang và nhấp vào nút Gửi email thử nghiệm để tự gửi cho mình một email thử nghiệm.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22471%22%3E%3C/svg%3E


Nếu thư đã được gửi thành công, bạn sẽ nhận được email sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22655%22%20height=%22320%22%3E%3C/svg%3E


Bạn cũng có thể cấu hình các thiết lập còn lại bằng cách truy cập chúng từ thanh bên trái. Sau khi hoàn tất tất cả các bước đó, phiên bản BookWyrm của bạn đã sẵn sàng để sử dụng.

Bước 11 - Sao lưu BookWyrm​

BookWyrm được cung cấp kèm tiện ích Sao lưu để cài đặt Docker. Nó cũng đi kèm với một tiện ích cắt tỉa sao lưu tự động giúp tự động dọn dẹp thư mục sao lưu.

Các bản sao lưu được tạo bên trong thư mục backups của vùng chứa cơ sở dữ liệu. Các bản sao lưu được tạo hàng ngày vào lúc nửa đêm UTC. Chạy lệnh sau để vào shell SSH của vùng chứa.
Mã:
$ docker exec -it bookwyrm-db-1 bash
Khi đã vào bên trong vùng chứa, hãy kiểm tra nội dung thư mục sao lưu. Lệnh này sẽ chỉ hiển thị bản sao lưu sau 24 giờ kể từ thời điểm tạo vùng chứa.
Mã:
$ 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
Thoát khỏi shell.
Mã:
$ exit
Bạn có thể sao chép bản sao lưu vào máy cục bộ của mình bằng cách chạy lệnh sau lệnh.
Mã:
$ docker cp bookwyrm-db-1:/backups
Tính năng cắt tỉa cơ sở dữ liệu tự động bị tắt theo mặc định. Để bật tính năng này, hãy mở tệp ~/bookwyrm/postgres-docker/cronfile để chỉnh sửa.
Mã:
$ nano ~/bookwyrm/postgres-docker/cronfile
Bỏ chú thích dòng cuối cùng bằng cách xóa dấu thăng (#) ở phía trước nó. cronfile của bạn sẽ trông giống như sau.
Mã:
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
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tập lệnh trên sẽ giữ lại 14 bản sao lưu gần nhất.

Xây dựng lại phiên bản của bạn.
Mã:
$ cd ~/bookwyrm
$ docker compose up --build

Bước 12 - Cập nhật BookWyrm​

Việc cập nhật phiên bản BookWyrm của bạn liên quan đến khá nhiều bước. Trước tiên, hãy kéo những thay đổi mới nhất từ kho lưu trữ BookWyrm GitHub.
Mã:
$ cd ~/bookwyrm
$ git pull
Nếu có xung đột, trước tiên bạn sẽ cần chạy git pull riêng biệt.

Xây dựng lại hình ảnh.
Mã:
$ docker compose rebuild
Chạy di chuyển Cơ sở dữ liệu bằng cách sử dụng hình ảnh Docker mới được xây dựng.
Mã:
$ docker compose run --rm web python manage.py migrate
Biên dịch BookWyrm chủ đề.
Mã:
$ docker compose run --rm web python manage.py compile_themes
Tải bất kỳ tệp tĩnh nào đã cập nhật.
Mã:
$ docker compose run --rm web python manage.py collectstatic --no-input
Tắt container.
Mã:
$ docker compose down --remove-orphans
Khởi động lại container bằng các hình ảnh mới được xây dựng.
Mã:
$ docker compose up -d
Nguồn cấp dữ liệu cho mỗi người dùng được lưu trữ trong cơ sở dữ liệu Redis. Để điền lại một luồng, hãy chạy lệnh sau.
Mã:
$ ./bw-dev populate_streams
Hoặc bạn có thể sử dụng lệnh sau để điền lại các luồng.
Mã:
$ docker compose run --rm web python manage.py populate_streams
Nếu không hoạt động hoặc mọi thứ bị hỏng, bạn có thể xóa dữ liệu luồng bằng cách sử dụng lệnh sau lệnh.
Mã:
$ docker compose run --rm web python manage.py erase_streams

Bước 13 - Công cụ dòng lệnh BookWyrm​

Cho đến nay, bạn đã thấy chúng tôi sử dụng công cụ dòng lệnh bw-dev cho BookWyrm. Công cụ này có thể thực hiện nhiều tác vụ hữu ích và thậm chí chạy lệnh Docker. Sau đây là một số cách sử dụng phổ biến của công cụ này.

Xác nhận tài khoản người dùng theo cách thủ công​

Lệnh sau đây xác nhận email của người dùng (tên người dùng) theo cách thủ công và đánh dấu là đang hoạt động.
Mã:
$ ./bw-dev confirm_email

Tạo hình ảnh xem trước​

Nếu bạn bật tùy chọn hình ảnh xem trước sau đó, bạn sẽ cần cập nhật chúng cho dữ liệu đã tải lên trước đó. Chạy lệnh sau để thực hiện tương tự.
Mã:
$ ./bw-dev generate_preview_images --all

Tạo hình thu nhỏ cho bìa sách​

Lệnh sau sẽ tạo hình thu nhỏ cho bìa sách.
Mã:
$ ./bw-dev generate_thumbnails
Đây là một số tùy chọn. Để biết danh sách đầy đủ, hãy tham khảo Hướng dẫn sử dụng BookWyrm CLI.

Kết luận​

Đây là phần kết thúc hướng dẫn cài đặt mạng xã hội BookWyrm trên máy chủ Rocky Linux 9. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên