勤劳的执着的运维农民工 2024-03-07 10:38 采纳率: 0%
浏览 18
已结题

谁能解决宝塔环境下安装多个discourse

目的是为了同一个服务器安装多个discourse
服务器是内网服务器用frpc连接公网frps
宝塔环境nginx还运行其他的站点
discourse可以看到访客的真实ip
最好能用宝塔后台来安装
用命令来安装也可以
但是如何修改discouse的配置文件
以及宝塔里的nginx的配置文件
使得用命令安装多个discourse能不报错呢?

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-07 10:38
    关注

    引自免费微信小程序:皆我百晓生

    在宝塔环境下安装多个 Discourse 实例,并通过 Nginx 进行反向代理以实现同一个服务器运行多个 Discourse 站点,同时保证其他站点的正常运行和访客真实 IP 的获取,可以按照以下步骤操作:

    1. 准备环境

      • 确保你的宝塔面板已经安装并更新到最新版本。
      • 服务器上已安装 Docker(如果尚未安装,请在宝塔面板中搜索“Docker”进行安装)。
    2. 创建多个 Discourse 容器

      • 使用 Docker Compose 来部署每个 Discourse 实例。在宝塔文件管理中创建一个目录结构,例如:/www/discourse1/www/discourse2 分别对应两个 Discourse 实例。
      • 在每个实例的目录下分别创建 docker-compose.yml 文件,配置不同的端口映射和数据卷等信息。示例配置如下:
    version: '3'
    services:
      web:
        image: discourse/discourse:latest
        environment:
          DISCOURSE_HOSTNAME: your-discourse1.example.com
          POSTGRESQL_USERNAME: discourse
          POSTGRESQL_PASSWORD: your_password
          POSTGRESQL_DATABASE: discourse
        ports:
          - "8081:80"
          - "4434:443"
        volumes:
          - /www/discourse1/data:/var/www/discourse
      db:
        image: postgres:12
        environment:
          POSTGRES_USER: discourse
          POSTGRES_PASSWORD: your_password
          POSTGRES_DB: discourse
    volumes:
      db-data:
    
    • 根据需要调整 hostname 和端口设置,以便为每个实例分配唯一的域名和端口。
    1. 配置 Nginx 反向代理
      • 登录宝塔面板,在“网站”界面新建两个站点,比如 your-discourse1.example.comyour-discourse2.example.com,将它们绑定到对应的目录如 /www/discourse1/public/www/discourse2/public
      • 对于每个站点,在“SSL”选项中配置好相应的 SSL 证书,确保 HTTPS 访问。
      • 编辑 Nginx 配置文件(可通过宝塔面板编辑或直接 SSH 到服务器编辑),添加针对每个 Discourse 实例的反向代理规则。以下是两个实例的示例配置:
    server {
        listen 80;
        server_name your-discourse1.example.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl http2;
        server_name your-discourse1.example.com;
    
        # SSL 配置省略...
    
        location / {
            proxy_pass http://localhost:8081;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
    # 类似地,为第二个 Discourse 实例配置另一个 server 块
    
    1. 启动 Discourse 容器并检查服务

      • 在每个 Discourse 实例目录下执行 docker-compose up -d 启动容器。
      • 检查容器是否正常运行,以及访问对应的域名能否正确加载 Discourse 页面。
    2. 内网穿透

      • 如果服务器是内网环境,需借助 frp 进行内网穿透。在公网服务器上的 frps 配置文件中添加相应服务端口映射;在内网服务器的 frpc 配置文件中添加与 Discourse 相关的服务端口映射,确保内外网络通信畅通。
    3. 确保真实 IP 获取: 由于我们已经在 Nginx 中设置了 proxy_set_header X-Real-IP $remote_addr,Discourse 应该能自动从这些头部信息中获取到访客的真实 IP。

    最后,请根据实际情况调整上述配置,并确保所有配置文件修改后都能正常重启相关服务。对于 Discourse 的具体安装和配置细节,可能还需要参考官方文档进行微调。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月21日
  • 修改了问题 3月8日
  • 创建了问题 3月7日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法