BookWyrm 使用 nginx 反代安装

SouthFox
最后编辑于 April 2022 BookWyrm

参考官方文档

安装

因为 BookWyrm 用的是 Python 做后端,Nodejs 做前端,两大依赖地狱,所以只提供了 Docker 的安装方式……

如果是打算机子只安装 BookWyrm 服务的话,那么直接按照文档走就好,否则,就需要结合宿主机的 nginx 做好反代设置(为了喝水倒两次杯子……)。

  • 为域名提前申请好 HTTPS 证书待用
  • 克隆仓库,git clone [email protected]:bookwyrm-social/bookwyrm.git
  • 进入文件夹,切换生产分支,git checkout production
  • 生成 .env 配置文件,cp .env.example .env,并且编辑之,详细设定请参阅官方文档
    这里有个坑,不知道最新版解决没有,就是 .env 的语言设置会导致报错,需要提前注释掉:
# Instance defualt language (see options at bookwyrm/settings.py "LANGUAGES"
#LANGUAGE_CODE="zh-hans"
# Used for deciding which editions to prefer
#DEFAULT_LANGUAGE="Simplified Chinese"
  • 生成 nginx 配置文件,cp nginx/production nginx/default.conf
    编辑文件切换到反代模式:
upstream web {
    server web:8000;
}

# Reverse-Proxy server
 server {
     listen [::]:8001;
     listen 8001;

     server_name 实例地址;

     location /images/ {
         alias /app/images/;
     }

     location /static/ {
         alias /app/static/;
     }
 }
  • 再编辑 docker-compose.yml 文件,注释掉相应模块:
  nginx:
    image: nginx:latest
    ports:
      - "127.0.0.1:8001:8001"
  #    - 443:443
    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
  #  volumes:
  #    - ./certbot/conf:/etc/letsencrypt
  #    - ./certbot/logs:/var/log/letsencrypt
  #    - ./certbot/data:/var/www/certbot

并且在宿主机上新建一个 nginx 站点配置:

upstream web {
    server 127.0.0.1:8000;
}

server {
    listen [::]:80;
    listen 80;

    server_name 实例地址;
    location / {
        return 301 https://$host$request_uri;
    }

}

server {
     listen [::]:443 ssl http2;
     listen 443 ssl http2;

     server_name 实例地址;

     client_max_body_size 10M;

    # SSL code
     ssl_certificate /etc/letsencrypt/live/实例地址/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/实例地址/privkey.pem;

     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/ {
        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;
    }
}

参考 官方文档

评论

    • 之后构建镜像并去泡杯茶或者咖啡吧,因为要下载一大堆依赖,docker-compose up --build
    • 构建结束后用 CTRL-C 退出
    • 根目录下输入 ./bw-dev setup 配置初始配置,结束后会生成一串口令,请记下来,这是之后生成管理员帐号需要的(忘了也可以用./bw-dev admin_code 再次输出)
    • 使用 docker-compose up -d 命令启动服务,并登陆实例地址,用口令新建一个管理员帐号
    • 到此,安装结束
登录注册后才能评论。