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.
[*]
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 system.
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.
Nó sẽ hiển thị đầu ra sau.
Cho phép HTTP và HTTPS cổng.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy đầu ra tương tự.
Tải lại tường lửa để kích hoạt các thay đổi.
Cài đặt kho lưu trữ Docker chính thức.
Cài đặt Docker.
Bật và chạy Docker daemon.
Kiểm tra trạng thái của dịch vụ Docker.
Thêm người dùng hệ thống của bạn vào nhóm Docker để tránh sử dụng
Đă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.
Xác minh cài đặt.
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.
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.
Cài đặt Nginx.
Xác minh cài đặt.
Bật và khởi động máy chủ Nginx dịch vụ.
Kiểm tra trạng thái dịch vụ.
Cài đặt kho lưu trữ EPEL.
Cài đặt Snapd.
Bật và khởi động Snap dịch vụ.
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.
Tạo các liên kết cần thiết để Snapd làm việc.
Phát hành lệnh sau để cài đặt 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
Xác minh cài đặt.
Tạo chứng chỉ SSL.
Lệnh trên sẽ tải xuống chứng chỉ vào
Tạo chứng chỉ nhóm Diffie-Hellman.
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Bạn sẽ thấy
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.
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.
Chuyển sang thư mục.
Sao chép nhánh sản xuất của ứng dụng BookWyrm từ GitHub.
Chuyển sang nhánh sản xuất.
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 cho chỉnh sửa.
Cấu hình các biến sau.
Chúng ta hãy xem xét tất cả các biến trong môi trường tệp.
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.
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.
Mở
Thay thế
Đây là giao diện củ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.
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.
Khởi tạo cơ sở dữ liệu. Lệnh sẽ mất vài phút để hoàn tất.
Sau khi hoàn tất, bạn sẽ thấy kết quả tương tự.
Chạy ứng dụng bằng cách biên dịch hình ảnh Docker cho BookWyrm, Celery và Flower.
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.
Khởi tạo ứng dụng.
Quá trình này sẽ kết thúc với mã quản trị của bạn.
Bạn có thể lấy mã bất kỳ lúc nào bằng cách chạy lệnh sau.
Bước cuối cùng trong quá trình cài đặt BookWyrm là khởi động tất cả các container.
Bạn có thể kiểm tra trạng thái của container bằng lệnh sau.
Bạn sẽ nhận được kết quả tương tự.
Bạn cũng có thể kiểm tra trạng thái bằng lệnh sau.
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.
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.
Các bản sao lưu được tạo bên trong thư mục
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.
Thoát khỏi shell.
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.
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
Bỏ chú thích dòng cuối cùng bằng cách xóa dấu thăng (
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.
Nếu có xung đột, trước tiên bạn sẽ cần chạy
Xây dựng lại hình ảnh.
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.
Biên dịch BookWyrm chủ đề.
Tải bất kỳ tệp tĩnh nào đã cập nhật.
Tắt container.
Khởi động lại container bằng các hình ảnh mới được xây dựng.
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.
Hoặc bạn có thể sử dụng lệnh sau để điền lại các luồng.
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.
Đâ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.
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
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
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client http https ssh
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
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Mã:
$ sudo systemctl enable docker --now
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
sudo
để chạy lệnh Docker.
Mã:
$ sudo usermod -aG docker $(whoami)
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
Mã:
$ git --version
git version 2.39.3
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
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
Cài đặt Nginx.
Mã:
$ sudo dnf install nginx
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Mã:
$ sudo systemctl enable nginx --now
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
Mã:
$ sudo dnf install -y snapd
Mã:
$ sudo systemctl enable snapd --now
Mã:
$ sudo snap install core && sudo snap refresh core
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
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
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
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 ------------------------------------------------------------------------------------------------------------------
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
Mã:
$ sudo certbot renew --dry-run
Bước 6 - Tải xuống BookWyrm
Tạo thư mục cho BookWyrm.
Mã:
$ mkdir ~/bookwyrm
Mã:
$ cd ~/bookwyrm
Mã:
$ git clone https://github.com/bookwyrm-social/bookwyrm.git .
Mã:
$ git checkout production
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ã:
$ sudo nano .env
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
-
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ànhdb
là tên dịch vụ của PostgreSQL trongdocker-compose.yml
tệp. -
POSTGRES_USER
- đặt thànhbookwyrmuser
mà bạn đã chọn ở bước 2. -
POSTGRES_DB
- đặt thànhbookwyrm
như đã chọn ở 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 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.
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
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
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
default.conf
để chỉnh sửa.
Mã:
$ nano nginx/default.conf
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/; } }
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
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; }
}
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
Chuyển sang Bookwyrm thư mục.
Mã:
$ cd ~/bookwyrm
Mã:
$ ./bw-dev migrate
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
Mã:
$ docker compose up --build
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
Mã:
$ ./bw-dev setup
Mã:
*******************************************
Use this code to create your admin account:
299f3181-e57e-4f16-94c9-51cfc427b8df
*******************************************
Mã:
$ ./bw-dev admin_code
*******************************************
Use this code to create your admin account:
299f3181-e57e-4f16-94c9-51cfc427b8df
*******************************************
Mã:
$ docker compose up -d
Mã:
$ docker ps
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
Mã:
$ docker compose ps
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ở 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 đượ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
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
Mã:
$ exit
Mã:
$ docker cp bookwyrm-db-1:/backups
~/bookwyrm/postgres-docker/cronfile
để chỉnh sửa.
Mã:
$ nano ~/bookwyrm/postgres-docker/cronfile
#
) ở 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
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
git pull
riêng biệt.Xây dựng lại hình ảnh.
Mã:
$ docker compose rebuild
Mã:
$ docker compose run --rm web python manage.py migrate
Mã:
$ docker compose run --rm web python manage.py compile_themes
Mã:
$ docker compose run --rm web python manage.py collectstatic --no-input
Mã:
$ docker compose down --remove-orphans
Mã:
$ docker compose up -d
Mã:
$ ./bw-dev populate_streams
Mã:
$ docker compose run --rm web python manage.py populate_streams
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ệnhbw-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