高级安装和管理

原文为官方论坛上的[https://meta.discourse.org/t/advanced-setup-and-administration/15929?u=fantasticfears),翻译于:2014-10-11

以下是一些更高级的安装和管理 Discourse 的问题:

如何让 Docker 安装的 Discourse 允许跨源共享资源?

更改 app.yml 文件中的设置:

DISCOURSE_ENABLE_CORS: true
DISCOURSE_CORS_ORIGIN: '*'

之后 rebuild 容器:

cd /var/discourse
./launcher rebuild app

这将让您的 Discourse 启用跨源资源分享。

如何一起使用 Nginx 和 Discourse?

改变 Docker 容器暴露的端口为除了 80 的任意端口;然后安装 nginx 并使用 http 转向至这个端口。在开始初始化前 ./launcher bootstrap app 做如下操作:

  • 编辑 app.yml 绑定外部端口至除 80 外的端口。随意选择一个没有被使用的端口(比如 4578?)

    - "4578:80"   # fwd host port 4578   to container port 80 (http)
    
  • 继续以上步骤(初始化,启动),然后测试下能不能通过那个端口访问 Discourse。使用您的服务器 IP 地址以及您选用的端口。例如:如果您服务器的 IP 是 8.8.8.8,访问http://8.8.8.8:4578

  • 配置您的 nginx 设置 proxy_pass 至您的 Docker 容器。这儿有个例子是您可以在 sites-enabled 中使用的。

  • 记着重启外部的 nginx。

如何改变最大上传的限制?

app.yml 中的 - exec: echo "Beginning of custom commands" 这行之后增加:

  - replace:
      filename: "/etc/nginx/conf.d/discourse.conf"
      from: /client_max_body_size.+$/
      to: client_max_body_size XXm;

XX 改为任何 MB 的大小。然后重建容器:

./launcher rebuild app

如何彻底地抹掉 Discourse 实例?

如果您想要抹掉所有 Discourse 实例的数据,重头再来:

rm -rf /var/discourse/shared*

我不能升级 Discourse 了。有什么办法么?

试着这样做:

cd /var/discourse
git pull
./launcher rebuild app

如何升级 Ubuntu 服务器上的 Docker?

运行下列命令:

apt-get update
apt-get dist-upgrade
apt-get upgrade lxc-docker

如何自动更新 Ubuntu 安全更新?

运行下列命令:

dpkg-reconfigure -plow unattended-upgrades

如何为其他 Ubuntu 更新设置邮件提醒?

apt-get install sendmail
apt-get install apticron
nano /etc/apticron/apticron.conf

(将 EMAIL 设为 youremail@address.com

我的 Docker 容器磁盘空间低了。我如何清理老的 Docker 容器?

一个快速节省空间的方法:

docker images --no-trunc| grep none | awk '{print $3}' | xargs -r docker rmi

如何安装插件?

要安装插件,要把它们放在 /var/www/discourse/plugins 文件夹下。然而,这个文件夹在容器里——直接去添加的话,在下一次 rebuild 的时候它们就不存在了!所以,需要更改容器的设置。

app.yml 文件中已经安装了一个 docker_manager 的插件,所以直接将您的插件添加在后面!

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://riking-discourse:insecurepassword@bitbucket.org/riking/some-private-plugin.git
2赞