Cách cài đặt BookWyrm trên máy chủ Debian 12

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 mạng xã hội liên kết BookWyrm cho trình đọc sách trên máy chủ Debian 12.

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


  • Máy chủ chạy Debian 12.

  • 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ủ của bạn.

  • 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 apt update
$ sudo apt upgrade
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

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. Debian đi kèm với ufw (Uncomplicated Firewall) theo mặc định.

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Bạn sẽ nhận được kết quả sau.
Mã:
Status: inactive
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Mã:
$ sudo ufw allow OpenSSH
Cho phép cả cổng HTTP và HTTPS.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Bật Tường lửa
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy trạng thái tương tự đầu ra.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt và cấu hình PostgreSQL​

Ubuntu 22.04 được cài đặt sẵn PostgreSQL 14 theo mặc định. Thay vào đó, chúng tôi sẽ sử dụng PostgreSQL 15.

Chạy lệnh sau để thêm khóa GPG PostgreSQL.
Mã:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Bây giờ, bạn có thể cài đặt PostgreSQL bằng lệnh bên dưới.
Mã:
$ sudo apt install postgresql postgresql-contrib
Gói postgresql-contrib chứa một số tiện ích bổ sung.

Kiểm tra trạng thái của dịch vụ PostgreSQL.
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled) Active: active (exited) since Sat 2023-09-09 07:39:21 UTC; 16s ago Main PID: 3653 (code=exited, status=0/SUCCESS) CPU: 1ms
Sep 09 07:39:21 bookwyrm systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 09 07:39:21 bookwyrm systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
Bạn có thể thấy rằng dịch vụ được bật và chạy theo mặc định.

Khởi chạy PostgreSQL shell.
Mã:
$ sudo -i -u postgres psql
Tạo cơ sở dữ liệu BookWyrm.
Mã:
postgres=# CREATE DATABASE bookwyrm TEMPLATE template0 ENCODING 'UNICODE';
Tạo người dùng BookWyrm và chọn một mật khẩu.
Mã:
postgres-# CREATE USER bookwyrmuser WITH PASSWORD 'Your_Password';
Đổi chủ sở hữu cơ sở dữ liệu thành người dùng BookWyrm.
Mã:
postgres-# ALTER DATABASE bookwyrm OWNER TO bookwyrmuser;
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng BookWyrm.
Mã:
postgres-# GRANT ALL PRIVILEGES ON DATABASE bookwyrm TO bookwyrmuser;
Thoát khỏi shell.
Mã:
postgres-# \q
Xác minh thông tin đăng nhập của bạn work.
Mã:
$ psql --username bookwyrmuser --password --host localhost bookwyrm
Password:
psql (15.4 (Debian 15.4-1.pgdg120+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
bookwyrm=>
Thoát khỏi shell bằng cách nhập \q.

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

Magento sử dụng Redis để lưu trữ phiên và bộ nhớ đệm. Hoàn toàn tùy chọn và bạn có thể sử dụng cơ sở dữ liệu để lưu trữ phiên. Nhưng Redis làm tốt hơn. Phiên bản mới nhất của Magento hoạt động với Redis 7.0. Ubuntu đi kèm với Redis 6.0 nên chúng ta sẽ sử dụng kho lưu trữ Redis để cài đặt.

Nhập khóa GPG Redis chính thức.
Mã:
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Phát hành lệnh sau để cài đặt máy chủ Redis.
Mã:
$ sudo apt install redis
Xác nhận Redis phiên bản.
Mã:
$ redis-server -v
Redis server v=7.2.1 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=95712a67f5005c28
Chúng ta hãy xác minh kết nối dịch vụ bằng cách sử dụng lệnh sau.
Mã:
$ redis-cli
Bạn sẽ được chuyển sang shell Redis.

Bước đầu tiên là đặt mật khẩu cho người dùng mặc định của Redis. Thay thế Your_Redis_Password bằng mật khẩu mạnh mà bạn chọn. Đảm bảo bạn thêm tiền tố mật khẩu bằng ký tự >.
Mã:
127.0.0.1:6379> acl setuser default >Your_Redis_Password
Kiểm tra Redis Xác thực.
Mã:
127.0.0.1:6379> AUTH Your_Redis_Password
OK
Ping dịch vụ.
Mã:
127.0.0.1:6379> ping
PONG
Thoát khỏi dịch vụ bằng cách nhập exit.

Nếu muốn, bạn có thể sử dụng lệnh sau để tạo mật khẩu Redis.
Mã:
$ openssl rand 60 | openssl base64 -A
OaYOuq6J9HhxMV0sGCeZbaGecphCl4GBfVkCOPkNjkQE1FX9DKpGSCJcDb8UV+AuFKA8tR1PgjGequn1

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

Debian 12 đ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.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt. Trên hệ thống Debian, lệnh sau chỉ hoạt động với sudo.
Mã:
$ sudo nginx -v
nginx version: nginx/1.24.0
Khởi động Nginx máy chủ.
Mã:
$ sudo systemctl start nginx
Kiểm tra trạng thái dịch vụ.
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Sat 2023-09-09 08:40:27 UTC; 1s ago Docs: https://nginx.org/en/docs/ Process: 6946 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 6947 (nginx) Tasks: 2 (limit: 1107) Memory: 1.7M CPU: 8ms CGroup: /system.slice/nginx.service ??6947 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??6948 "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. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Debian hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Debian 12 không đi kèm Snapd được cài đặt. Cài đặt gói Snapd.
Mã:
$ sudo apt install snapd
Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được 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 xem Certbot có hoạt động bình thường không.
Mã:
$ certbot --version
certbot 2.6.0
Tạo SSL chứng chỉ.
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 chứng chỉ xuống thư mục /etc/letsencrypt/live/bookwyrm.example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Mã:
$ sudo systemctl list-timers
Bạn sẽ tìm 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 ----------------------------------------------------------------------------------------------------------------
Sat 2023-09-09 23:49:00 UTC 15h left - - snap.certbot.renew.timer snap.certbot.renew.service
Sun 2023-09-10 00:00:00 UTC 15h left - - dpkg-db-backup.timer dpkg-db-backup.service
Sun 2023-09-10 00:00:00 UTC 15h left Sat 2023-09-09 06:42:47 UTC 2h 1min ago exim4-base.timer exim4-base.service
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn 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ã:
$ sudo mkdir /opt/bookwyrm
Chuyển sang thư mục.
Mã:
$ cd /opt/bookwyrm
Sao chép ứng dụng BookWyrm đang sản xuất nhánh từ GitHub.
Mã:
$ sudo git clone https://github.com/bookwyrm-social/bookwyrm.git --branch production --single-branch ./
Tạo tệp môi trường bằng cách sao chép tệp ví dụ.
Mã:
$ sudo cp .env.example .env

Bước 7 - Cấu hình BookWyrm​

Tạo khóa bí mật cho BookWyrm.
Mã:
$ openssl rand 60 | openssl base64 -A
wcMjI1FW0mL9RfyxYDNZE/8bQP88kVIAUh7ekcSNAOUQCVfNeuMeW3und4BO5WbyCYy+9KpHqoEHWCkl
Mở tệp môi trường để chỉnh sửa.
Mã:
$ sudo nano .env
Cấu hình như sau biến.
Mã:
SECRET_KEY="wcMjI1FW0mL9RfyxYDNZE/8bQP88kVIAUh7ekcSNAOUQCVfNeuMeW3und4BO5WbyCYy+9KpHqoEHWCkl"
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 tệp môi trường.
  • 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 localhost nếu bạn đang lưu trữ trên cùng một máy.
  • POSTGRES_USER - đặt thành bookwyrmuser mà bạn đã chọn trong bước 2.
  • POSTGRES_DB - đặt thành bookwyrm như đã chọn trong 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 ở 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 Nginx​

Sao chép tệp /opt/bookwyrm/nginx/server_config vào cấu hình Nginx thư mục.
Mã:
$ sudo cp /opt/bookwyrm/nginx/server_config /etc/nginx/conf.d/server_config
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ã:
include /etc/nginx/conf.d/server_config;
upstream web { server localhost:8000;
}
server { listen [::]:80; listen 80; server_name bookwyrm.example.com; # redirect http to https return 301 https://bookwyrm.example.com$request_uri;
}
server { access_log /var/log/nginx/bookwyrm.access.log cache_log; error_log /var/log/nginx/bookwyrm.error.log; listen [::]:443 ssl http2; listen 443 ssl http2; server_name bookwyrm.example.com; client_max_body_size 3M; if ($host != "bookwyrm.example.com") { return 301 $scheme://bookwyrm.example.com$request_uri; } # 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; tcp_nopush on; types_hash_max_size 2048; gzip on; proxy_read_timeout 1800s; # store responses to anonymous users for up to 1 minute proxy_cache bookwyrm_cache; proxy_cache_valid any 1m; add_header X-Cache-Status $upstream_cache_status; # ignore the set cookie header when deciding to # store a response in the cache proxy_ignore_headers Cache-Control Set-Cookie Expires; # PUT requests always bypass the cache # logged in sessions also do not populate the cache # to avoid serving personal data to anonymous users proxy_cache_methods GET HEAD; proxy_no_cache $cookie_sessionid; proxy_cache_bypass $cookie_sessionid; # tell the web container the address of the outside client proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; location ~ ^/(login[^-/]|password-reset|resend-link|2fa-check) { limit_req zone=loginlimit; proxy_pass http://web; } # do not log periodic polling requests from logged in users location /api/updates/ { access_log off; proxy_pass http://web; } location / { proxy_pass http://web; } # directly serve images and static files from the # bookwyrm filesystem using sendfile. # make the logs quieter by not reporting these requests location ~ ^/(images|static)/ { root /opt/bookwyrm; try_files $uri =404; add_header X-Cache-Status STATIC; access_log off; } # monitor the celery queues with flower, no caching enabled location /flower/ { proxy_pass http://localhost:8888; proxy_cache_bypass 1; }
}
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​

Trước khi cài đặt BookWyrm, chúng ta cần cài đặt một số Python gói.
Mã:
$ sudo apt install python3-venv python3-pip python3-dev libpq-dev
Chuyển sang thư mục Bookwyrm.
Mã:
$ cd /opt/bookwyrm
Thay đổi quyền sở hữu thư mục thành người hiện đang đăng nhập người dùng.
Mã:
$ sudo chown -R $USER:$USER .
Tạo thư mục venv Python.
Mã:
$ python3 -m venv ./venv
Cài đặt các phụ thuộc Python của BookWyrm bằng gói pip quản lý.
Mã:
$ ./venv/bin/pip3 install -r requirements.txt
Di chuyển lược đồ cơ sở dữ liệu.
Mã:
$ venv/bin/python3 manage.py migrate
Khởi tạo cơ sở dữ liệu.
Mã:
$ venv/bin/python3 manage.py initdb
Biên dịch các chủ đề.
Mã:
$ venv/bin/python3 manage.py compile_themes
Tạo tĩnh tệp.
Mã:
$ venv/bin/python3 manage.py collectstatic --no-input
Tạo và thiết lập người dùng hệ thống BookWyrm.
Mã:
$ sudo useradd bookwyrm -r
Thay đổi chủ sở hữu của thư mục cài đặt thành người dùng BookWyrm.
Mã:
$ sudo chown -R bookwyrm:bookwyrm /opt/bookwyrm
Từ bây giờ, để chạy bất kỳ lệnh nào liên quan đến BookWyrm, hãy chạy lệnh đó với tư cách là người dùng BookWyrm.
Mã:
$ sudo -u bookwyrm echo I am the ${whoami} user
I am the bookwyrm user

Tạo BookWyrm tệp đơn vị dịch vụ​

BookWyrm đi kèm với các tệp đơn vị dịch vụ cho dịch vụ, công nhân và trình lập lịch. Sao chép chúng vào thư mục /etc/systemd/system.
Mã:
$ sudo cp /opt/bookwyrm/contrib/systemd/*.service /etc/systemd/system/
Bật và khởi động các dịch vụ bằng cách sử dụng lệnh sau lệnh.
Mã:
$ sudo systemctl enable bookwyrm bookwyrm-worker bookwyrm-scheduler --now
Kiểm tra trạng thái của dịch vụ BookWyrm.
Mã:
$ sudo systemctl status bookwyrm
? bookwyrm.service - BookWyrm Loaded: loaded (/etc/systemd/system/bookwyrm.service; enabled; preset: enabled) Active: active (running) since Mon 2023-09-11 00:05:54 UTC; 7s ago Main PID: 28583 (gunicorn) Tasks: 2 (limit: 1107) Memory: 99.2M CPU: 1.254s CGroup: /system.slice/bookwyrm.service ??28583 /opt/bookwyrm/venv/bin/python3 /opt/bookwyrm/venv/bin/gunicorn bookwyrm.wsgi:application --bind 0.0.0.0:8000 ??28603 /opt/bookwyrm/venv/bin/python3 /opt/bookwyrm/venv/bin/gunicorn bookwyrm.wsgi:application --bind 0.0.0.0:8000
Tương tự, bạn có thể kiểm tra trạng thái của hai dịch vụ còn lại.

Bước cuối cùng trong quá trình cài đặt bao gồm việc tạo mã quản trị viên cần thiết để tạo quản trị viên tài khoản.
Mã:
$ sudo -u bookwyrm /opt/bookwyrm/venv/bin/python3 /opt/bookwyrm/manage.py admin_code
Bạn có thể lấy mã bất kỳ lúc nào bằng cách chạy lại cùng một lệnh.

Bạn sẽ nhận được kết quả tương tự.
Mã:
*******************************************
Use this code to create your admin account:
299f3181-e57e-4f16-94c9-51cfc427b8df
*******************************************
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 đi kèm với tiện ích Sao lưu nhưng được tùy chỉnh cho cài đặt Docker. Tiện ích này cũng đi kèm với 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. Chúng tôi sẽ thay đổi tiện ích sao lưu cho phù hợp với phương pháp cài đặt của mình và sử dụng tiện ích cắt tỉa sao lưu được cung cấp cùng với nó.

Tạo tệp ~/bookwyrm-backup.sh và mở tệp đó để chỉnh sửa.
Mã:
$ nano ~/bookwyrm-backup.sh
Dán mã sau vào nó.
Mã:
#!/bin/bash
POSTGRES_DB=bookwyrm
POSTGRES_USER=bookwyrmuser
if [ -z "$POSTGRES_DB" ]; then echo "Database not specified, defaulting to bookwyrm"
fi
if [ -z "$POSTGRES_USER" ]; then echo "Database user not specified, defaulting to bookwyrm"
fi
BACKUP_DB=${POSTGRES_DB:-bookwyrm}
BACKUP_USER=${POSTGRES_USER:-bookwyrm}
filename=backup_${BACKUP_DB}_$(date +%F)_$(date +%T)
PGPASSWORD="Your_Password" pg_dump -h localhost -U $BACKUP_USER $BACKUP_DB > ~/backups/$filename.sql
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Thay đổi giá trị của POSTGRES_DB, POSTGRES_USERPGPASSWORD các biến theo các giá trị bạn đã cấu hình ở bước 2.

Sao chép tệp vào /usr/local/bin thư mục.
Mã:
$ sudo cp ~/bookwyrm-backup.sh /usr/local/bin/bookwyrm-backup.sh
Làm cho tệp sao lưu có thể thực thi được.
Mã:
$ sudo chmod +x /usr/local/bin/bookwyrm-backup.sh
Tạo bản sao lưu thư mục.
Mã:
$ mkdir ~/backups
Sao chép tệp /opt/bookwyrm/postgres-docker/weed.sh vào /usr/local/bin thư mục.
Mã:
$ sudo cp /opt/bookwyrm/postgres-docker/weed.sh /usr/local/bin/bookwyrm-weed.sh
Tạo và mở cronfile để chỉnh sửa.
Mã:
$ nano cronfile
Dán mã sau vào nó.
Mã:
0 0 * * * /usr/local/bin/bookwyrm-backup.sh
# 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
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Sao chép cronfile vào /etc/cron.d thư mục.
Mã:
$ sudo cp ~/cronfile /etc/cron.d/cronfile
Đặt quyền chính xác cho cronfile.
Mã:
$ sudo chmod 0644 /etc/cron.d/cronfile
Gửi tệp đến crontab.
Mã:
$ sudo crontab /etc/cron.d/cronfile
Tạo cron.log tệp.
Mã:
$ sudo touch /var/log/cron.log
Kiểm tra bản sao lưu tạo.
Mã:
$ bookwyrm-backup.sh
Kiểm tra thư mục sao lưu.
Mã:
$ ls ~/backups -al
total 764
drwxr-xr-x 2 navjot navjot 4096 Sep 11 01:31 .
drwx------ 7 navjot navjot 4096 Sep 11 01:31 ..
-rw-r--r-- 1 navjot navjot 257577 Sep 11 01:21 backup_bookwyrm_2023-09-11.sql
-rw-r--r-- 1 navjot navjot 257577 Sep 11 01:27 backup_bookwyrm_2023-09-11_01:27:35.sql
-rw-r--r-- 1 navjot navjot 257577 Sep 11 01:31 backup_bookwyrm_2023-09-11_01:31:45.sql

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. Đầu tiên, hãy kéo những thay đổi mới nhất từ kho lưu trữ BookWyrm GitHub.
Mã:
$ cd /opt/bookwyrm
$ sudo -u bookwyrm git pull
Cài đặt các phụ thuộc Python mới.
Mã:
$ sudo -u bookwyrm venv/bin/pip install -r requirements.txt
Biên dịch chủ đề.
Mã:
$ sudo -u bookwyrm venv/bin/python3 manage.py compile_themes
Thu thập tất cả các tệp tĩnh.
Mã:
$ sudo -u bookwyrm venv/bin/python3 manage.py collectstatic --no-input
Di chuyển cơ sở dữ liệu. Trước tiên, hãy tạo bản sao lưu bằng cách sử dụng bước trước đó.
Mã:
$ sudo -u bookwyrm venv/bin/python3 manage.py migrate
Khởi động lại dịch vụ BookWyrm.
Mã:
$ sudo systemctl restart bookwyrm bookwyrm-worker bookwyrm-scheduler

Kết luận​

Bài hướng dẫn về cách cài đặt mạng xã hội BookWyrm trên máy chủ Debian 12 của chúng tôi đã kết thúc. 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