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.
[*]
Một số gói mà hệ thống của bạn cần.
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.
Kiểm tra xem tường lửa có đang chạy không.
Bạn sẽ nhận được kết quả sau.
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ó.
Cho phép cả cổng HTTP và HTTPS.
Bật Tường lửa
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy trạng thái tương tự đầu ra.
Chạy lệnh sau để thêm khóa GPG PostgreSQL.
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Cập nhật hệ thống kho lưu trữ.
Bây giờ, bạn có thể cài đặt PostgreSQL bằng lệnh bên dưới.
Gói
Kiểm tra trạng thái của dịch vụ PostgreSQL.
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.
Tạo cơ sở dữ liệu BookWyrm.
Tạo người dùng BookWyrm và chọn một mật khẩu.
Đổi chủ sở hữu cơ sở dữ liệu thành người dùng BookWyrm.
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng BookWyrm.
Thoát khỏi shell.
Xác minh thông tin đăng nhập của bạn work.
Thoát khỏi shell bằng cách nhập
Nhập khóa GPG Redis chính thức.
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Cập nhật kho lưu trữ hệ thống danh sách.
Phát hành lệnh sau để cài đặt máy chủ Redis.
Xác nhận Redis phiên bản.
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.
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ế
Kiểm tra Redis Xác thực.
Ping dịch vụ.
Thoát khỏi dịch vụ bằng cách nhập
Nếu muốn, bạn có thể sử dụng lệnh sau để tạo mật khẩu Redis.
Nhập khóa ký của Nginx.
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Cập nhật hệ thống kho lưu trữ.
Cài đặt Nginx.
Xác minh cài đặt. Trên hệ thống Debian, lệnh sau chỉ hoạt động với
Khởi động Nginx máy chủ.
Kiểm tra trạng thái dịch vụ.
Debian 12 không đi kèm Snapd được cài đặt. Cài đặt gói 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.
Cài đặt 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
Xác minh xem Certbot có hoạt động bình thường không.
Tạo SSL chứng chỉ.
Lệnh trên sẽ tải chứng chỉ xuống thư mục
Tạo nhóm Diffie-Hellman chứng chỉ.
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Bạn sẽ tìm thấy
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.
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.
Chuyển sang thư mục.
Sao chép ứng dụng BookWyrm đang sản xuất nhánh từ GitHub.
Tạo tệp môi trường bằng cách sao chép tệp ví dụ.
Mở tệp môi trường để chỉnh sửa.
Cấu hình như sau biến.
Chúng ta hãy xem xét tất cả các biến trong tệp môi trường.
Tạo và mở tệp
Dán mã sau vào đó.
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
Thêm dòng sau vào trước dòng
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.
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
Chuyển sang thư mục 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.
Tạo thư mục venv Python.
Cài đặt các phụ thuộc Python của BookWyrm bằng gói pip quản lý.
Di chuyển lược đồ cơ sở dữ liệu.
Khởi tạo cơ sở dữ liệu.
Biên dịch các chủ đề.
Tạo tĩnh tệp.
Tạo và thiết lập người dùng hệ thống BookWyrm.
Thay đổi chủ sở hữu của thư mục cài đặt thành người dùng 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.
Bật và khởi động các dịch vụ bằng cách sử dụng lệnh sau lệnh.
Kiểm tra trạng thái của dịch vụ BookWyrm.
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.
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ự.
Bước tiếp theo là truy cập BookWyrm và thiết lập phiên bản của bạn.
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.
Tạo tệp
Dán mã sau vào nó.
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
Sao chép tệp vào
Làm cho tệp sao lưu có thể thực thi được.
Tạo bản sao lưu thư mục.
Sao chép tệp
Tạo và mở
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Sao chép
Đặt quyền chính xác cho
Gửi tệp đến
Tạo
Kiểm tra bản sao lưu tạo.
Kiểm tra thư mục sao lưu.
Cài đặt các phụ thuộc Python mới.
Biên dịch chủ đề.
Thu thập tất cả các tệp tĩnh.
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 đó.
Khởi động lại dịch vụ BookWyrm.
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
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
Mã:
Status: inactive
Mã:
$ sudo ufw allow OpenSSH
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Mã:
$ sudo ufw status
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
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'
Mã:
$ sudo apt update
Mã:
$ sudo apt install postgresql postgresql-contrib
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.
Khởi chạy PostgreSQL shell.
Mã:
$ sudo -i -u postgres psql
Mã:
postgres=# CREATE DATABASE bookwyrm TEMPLATE template0 ENCODING 'UNICODE';
Mã:
postgres-# CREATE USER bookwyrmuser WITH PASSWORD 'Your_Password';
Mã:
postgres-# ALTER DATABASE bookwyrm OWNER TO bookwyrmuser;
Mã:
postgres-# GRANT ALL PRIVILEGES ON DATABASE bookwyrm TO bookwyrmuser;
Mã:
postgres-# \q
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=>
\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
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
Mã:
$ sudo apt update
Mã:
$ sudo apt install redis
Mã:
$ redis-server -v
Redis server v=7.2.1 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=95712a67f5005c28
Mã:
$ redis-cli
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
Mã:
127.0.0.1:6379> AUTH Your_Redis_Password
OK
Mã:
127.0.0.1:6379> ping
PONG
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
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
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx
sudo
.
Mã:
$ sudo nginx -v
nginx version: nginx/1.24.0
Mã:
$ sudo systemctl start nginx
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
Mã:
$ sudo snap install core && sudo snap refresh core
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ certbot --version
certbot 2.6.0
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d bookwyrm.example.com
/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
Mã:
$ sudo systemctl list-timers
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
Mã:
$ sudo certbot renew --dry-run
Bước 6 - Tải xuống BookWyrm
Tạo thư mục cho BookWyrm.
Mã:
$ sudo mkdir /opt/bookwyrm
Mã:
$ cd /opt/bookwyrm
Mã:
$ sudo git clone https://github.com/bookwyrm-social/bookwyrm.git --branch production --single-branch ./
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ã:
$ sudo nano .env
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
-
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ànhlocalhost
nếu bạn đang lưu trữ trên cùng một máy. -
POSTGRES_USER
- đặt thànhbookwyrmuser
mà bạn đã chọn trong bước 2. -
POSTGRES_DB
- đặt thànhbookwyrm
như đã chọn trong bước 2. -
REDIS_ACTIVITY_HOST
vàREDIS_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_PORT
vàREDIS_BROKER_PORT
- đặt chúng thành cổng Redis mặc định 6379. -
REDIS_ACTIVITY_DB
vàREDIS_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_PASSWORD
vàREDIS_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.
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
/etc/nginx/conf.d/bookwyrm.conf
cho chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/bookwyrm.conf
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; }
}
Mở tệp
/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
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
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
Mã:
$ cd /opt/bookwyrm
Mã:
$ sudo chown -R $USER:$USER .
Mã:
$ python3 -m venv ./venv
Mã:
$ ./venv/bin/pip3 install -r requirements.txt
Mã:
$ venv/bin/python3 manage.py migrate
Mã:
$ venv/bin/python3 manage.py initdb
Mã:
$ venv/bin/python3 manage.py compile_themes
Mã:
$ venv/bin/python3 manage.py collectstatic --no-input
Mã:
$ sudo useradd bookwyrm -r
Mã:
$ sudo chown -R bookwyrm:bookwyrm /opt/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/
Mã:
$ sudo systemctl enable bookwyrm bookwyrm-worker bookwyrm-scheduler --now
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
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 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 10 - Truy cập BookWyrm
Mở URLhttps://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
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
POSTGRES_DB
, POSTGRES_USER
và PGPASSWORD
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
Mã:
$ sudo chmod +x /usr/local/bin/bookwyrm-backup.sh
Mã:
$ mkdir ~/backups
/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
cronfile
để chỉnh sửa.
Mã:
$ nano cronfile
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
Sao chép
cronfile
vào /etc/cron.d
thư mục.
Mã:
$ sudo cp ~/cronfile /etc/cron.d/cronfile
cronfile
.
Mã:
$ sudo chmod 0644 /etc/cron.d/cronfile
crontab
.
Mã:
$ sudo crontab /etc/cron.d/cronfile
cron.log
tệp.
Mã:
$ sudo touch /var/log/cron.log
Mã:
$ bookwyrm-backup.sh
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
Mã:
$ sudo -u bookwyrm venv/bin/pip install -r requirements.txt
Mã:
$ sudo -u bookwyrm venv/bin/python3 manage.py compile_themes
Mã:
$ sudo -u bookwyrm venv/bin/python3 manage.py collectstatic --no-input
Mã:
$ sudo -u bookwyrm venv/bin/python3 manage.py migrate
Mã:
$ sudo systemctl restart bookwyrm bookwyrm-worker bookwyrm-scheduler