在同一服务器上部署 Wordpress 和 Discourse 不成功


(Candy) #1

先正常安装了 Wordpress (地址为 xxx.xxx.com),然后再根据 30 分钟内在云上部署 DiscourseDiscourse 子目录支持在同一台机器上运行 Discourse 和其他站点 安装好了 Discourse(地址为 xxx.xxx.com/forum)

安装好之后,Wordpress 地址访问正常,Discourse 访问跳转到了 Wordpress。是外部的 nginx 配置不对么?

附上 Nginx 配置:

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

        server_name xxx.xxx.com/forum;

        location / {
                proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
                proxy_set_header Host $http_host;
                proxy_http_version 1.1;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        }
}

以及 app.yml 配置:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"

expose:
  #- "80:80"   # http
  - "443:443" # https
params:
  db_default_text_search_config: "pg_catalog.english"

  db_shared_buffers: "128MB"

  version: beta

env:
  LANG: en_US.UTF-8
  DISCOURSE_DEFAULT_LOCALE: zh_CN

  UNICORN_WORKERS: 2

  DISCOURSE_HOSTNAME: 'xxx.xxx.com'
  DISCOURSE_RELATIVE_URL_ROOT: /forum

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Any custom commands to run after building
run:
  - exec:
          cd: $home
          cmd:
                  - mkdir -p public/forum
                  - cd public/forum && ln -s ../uploads && ln -s ../backups
                  - rm public/uploads
                  - rm public/backups
  - replace:
          filename: /etc/nginx/conf.d/discourse.conf
          from: etag off;
          to: |
                  etag off;
                  location /forum {
                          rewrite ^/forum/?(.*)$ /$1;
                  }
  - replace:
          filename: /etc/nginx/conf.d/discourse.conf
          from: $proxy_add_x_forwarded_for
          to: $http_fastly_client_ip
          global: true
  - exec: echo "End of custom commands"

(scavin) #2

外部 nginx 需要在 docker 里连接了 discourse 才能用下面的反代吧

proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;

不然你只能将 discourse 整体反代出去,比如你的配置,可以反代 443 端口


(Candy) #3

如果我给 Discourse 另外分配一个端口(比如 1234:1234)那外部 nginx 配置监听相同端口就可以咯?只要不和其他服务端口冲突


(scavin) #4

可以分配为 1234:80 5678:443


(Candy) #5

:sweat_smile: 好像不行呢。

我再尝试一下使用不同域名吧。


(Candy) #6

目前使用不同域名正常共存(Discourse 还是默认的 80 和 443 端口),Wordpress 和 Discourse 均未开启 https,因为发现 Discourse 安装后只有 crt 和 key,没有 pem 文件。

继续研究下怎么使用子目录吧,感谢楼上那位大佬!