购买服务器
打开网站:https://www.rainyun.com/YHLSTORE_ (此链接已经包含优惠码,注册可以自动领取优惠卷哦),点击"登录/注册”
并点击下面的注册按钮,填入相关信息并验证即可:
注:注册按钮在某些设备可能被偷吃,请缩小网页,就能看到啦!
注册完成后,跳转主页,找到云服务器-->立即购买,选择配置:
图中所示宿迁E5v2入门版一月仅需14元,还可以使用优惠劵进一步骨折
如何安装 Discourse?
唯一官方支持的 Discourse 安装是基于 Docker 的。您必须对支持 Docker 的 64 位 Linux 服务器具有 SSH 访问权限。很遗憾,我们无法支持任何其他安装方法,包括 cpanel、plesk、webmin 等。
为什么只正式支持 Docker?
托管 Rails 应用程序很复杂。即使你的服务器上已经安装了 Postgres、Redis 和 Ruby,你仍然需要担心运行和监控你的 Sidekiq 和 Rails 进程,以及配置 Nginx。借助 Docker,您可以在一个简单的容器中使用我们完全优化的 Discourse 配置,以及基于 Web 的 GUI,只需单击按钮即可轻松升级到新版本的 Discourse。
硬件要求
- 现代单核CPU,推荐双核
- 至少 1 GB RAM(带交换)
- 64 位 Linux 与 Docker 兼容
- 至少 10 GB 磁盘空间
软件要求
安装 Docker 的先决条件(基于 Debian/Ubuntu 的发行版示例)
sudo apt install docker.io sudo apt install git
安装
将官方 Docker 映像克隆到 ./var/discourse
sudo -s git clone https://kkgithub.com/discourse/discourse_docker.git /var/discourse cd /var/discourse chmod 700 containers
您将需要通过其余的设置和引导过程成为 root。
编辑配置
启动设置工具,网址为
./discourse-setup
出现提示时,请回答以下问题:
Hostname for your Discourse? [discourse.example.com]: Email address for admin account(s)? [me@example.com,you@example.com]: SMTP server address? [smtp.example.com]: SMTP port? [587]: SMTP user name? [user@example.com]: SMTP password? [pa$word]: Let's Encrypt account email? (ENTER to skip) [me@example.com]: Optional Maxmind License key () [xxxxxxxxxxxxxxxx]:
您将从电子邮件设置中获取 SMTP 详细信息,请务必完成该部分。
Let’s Encrypt 帐户设置是为您的网站提供免费的 HTTPS 证书,如果您希望您的网站安全,请务必进行设置。
这将代表您生成一个配置文件,然后启动引导程序。引导需要 2-8 分钟来设置您的话语。如果需要在引导后更改这些设置,可以再次运行(它将重新使用文件中以前的值)或使用 和 手动编辑,否则您的更改将不会生效。app.yml
./discourse-setup
/containers/app.yml
nano
./launcher rebuild app
开始讨论
引导完成后,您的 Discourse 应该可以通过您之前输入的域名在您的 Web 浏览器中访问。discourse.example.com
注册新帐户并成为管理员
使用您在引导之前输入的电子邮件地址之一注册一个新的管理员帐户。
(如果您无法注册管理员帐户,请查看日志并查看我们的电子邮件故障排除清单。/var/discourse/shared/standalone/log/rails/production.log
注册管理员帐户后,设置向导将启动并指导您完成 Discourse 的基本配置。
完成设置向导后,将出现一个弹出窗口,欢迎您访问新站点。它还会将您链接到管理员指南,我们强烈建议您立即查看并经常参考。该指南提供了设置清单、有关如何成功启动社区的重要指导以及故障排除提示。
安装后维护
- 我们强烈建议您为操作系统启用自动安全更新。在 Ubuntu 中,请使用以下命令。在 CentOS/RHEL 中,使用 yum-cron 组件。
dpkg-reconfigure -plow unattended-upgrades
- 如果您使用的是密码而不是 SSH 密钥,请务必强制使用强 root 密码。在 Ubuntu 中,使用该包。我们还建议在 10 分钟内阻止任何尝试超过 3 次密码重试的 IP 地址。
apt install libpam-cracklib
fail2ban
- Ubuntu的:
apt install fail2ban
- CentOS/RHEL操作系统:
sudo dnf install fail2ban
- Ubuntu的:
- 如果您需要或想要默认防火墙,请为 Ubuntu 打开 ufw 或为 CentOS/RHEL 打开。
firewalld
当 Discourse 的新版本发布时,Discourse 将向您发送电子邮件通知。请保持最新状态以获取最新功能和安全修复程序。
要将 Discourse 升级到最新版本,请在浏览器中访问并单击“升级”按钮。https://discourse.example.com/admin/upgrade
或者,您可以通过 ssh 连接到服务器并使用以下命令进行重建:
cd /var/discourse git pull ./launcher rebuild app
文件夹中的命令可用于各种维护:launcher
/var/discourse
Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING] Commands: start: Start/initialize a container stop: Stop a running container restart: Restart a container destroy: Stop and remove a container enter: Use nsenter to get a shell into a container logs: View the Docker logs for a container bootstrap: Bootstrap a container for the config based on a template rebuild: Rebuild a container (destroy old, bootstrap, start new) cleanup: Remove all containers that have stopped for > 24 hours Options: --skip-prereqs Don't check launcher prerequisites --docker-args Extra arguments to pass when running docker
(可选)添加更多功能
你想要吗。。。
-
用户只能通过您原有网站的注册系统登录?配置 Single-Sign-On。
-
用户通过电子邮件发布回复?配置通过电子邮件回复。
-
每日自动备份?配置备份。
-
HTTPS / SSL支持?
- 在标准安装期间启用了 Let’s Encrypt 的免费 HTTPS/SSL 支持。如果跳过此步骤,请配置 Let’s Encrypt。
- 付费HTTPS / SSL支持?配置 SSL。
-
使用来自 Discourse 或第三方的插件?配置插件
-
同一服务器上有多个话语网站?配置多站点。
-
当事件发生在 Discourse 中时,Webhooks?配置 Webhook。
-
从 vBulletin、PHPbb、Vanilla、Drupal、BBPress 等导入/迁移旧内容?请参阅我们的开源导入程序和迁移指南。
-
将 Discourse 嵌入到您的 WordPress 安装中,或嵌入您的静态 HTML 站点?
【附】 官方高级安装教程(Github机翻)
话语 Docker 镜像
大约
- Docker 是一个开源项目,用于在比传统虚拟机更轻、更快速的容器中打包、交付和运行任何 Linux 应用程序。
- Docker 使在服务器上部署 Discourse 论坛并保持更新变得更加容易。有关背景信息,请参阅 Sam 的博客文章。
- 模板和基础映像使用 Discourse 团队推荐的最佳默认值配置 Discourse。
开始
最简单的入门方法是通过独立模板,该模板可以在 30 分钟或更短的时间内完成安装。有关详细的安装说明,请参阅
discourse/docs/INSTALL-cloud.md at main · discourse/discourse
A platform for community discussion. Free, open, simple. - discourse/discourse
目录结构
/cids
包含当前正在运行的 Docker 容器的容器 ID。cids 是 Docker 的 pid 的“等价物”。每个容器都有一个唯一的 git,如哈希。
/containers
此目录用于各种话语容器的容器定义。你负责这个目录,它是空的。
/samples
可用于引导环境的示例容器定义。您可以将模板从此处复制到 containers 目录中。
/shared
具有各种话语容器的共享卷的占位符位置。您可以选择将某些持久性信息存储在容器之外,在我们的例子中,我们会将各种日志文件和上传目录保存在外面。这使您可以轻松地重建容器,而不会丢失重要信息。通过将上传内容保留在容器之外,可以在多个 Web 实例之间共享它们。
/templates
可用于引导环境的 PUPS 托管模板。
/image
用于话语的 Dockerfiles;有关详细信息,请参阅自述文件。
Docker 存储库将始终包含最新的生成版本,位于: https://hub.docker.com/r/discourse/base/,您不需要生成基础映像。
发射
基目录包含一个用于管理容器的 bash 脚本。您可以使用它来“引导”新容器,进入、启动、停止和销毁容器。
Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING] Commands: start: Start/initialize a container stop: Stop a running container restart: Restart a container destroy: Stop and remove a container enter: Open a shell to run commands inside the container logs: View the Docker logs for a container bootstrap: Bootstrap a container for the config based on a template run: Run the given command with the config in the context of the last bootstrapped image rebuild: Rebuild a container (destroy old, bootstrap, start new) cleanup: Remove all containers that have stopped for > 24 hours start-cmd: Generate docker command used to start container
如果环境变量“SUPERVISED”设置为 true,则不会分离容器,从而允许进程监视工具管理容器的重启行为。
容器配置
容器定义的开头可以包含以下“特殊”部分:
模板:
templates: - ‘templates/cron.template.yml’ - ‘templates/postgres.template.yml’
此模板由所有这些子模板“组成”,这允许非常灵活的配置结构。此外,您可以添加特定的钩子来扩展您引用的模板。
暴露:
expose: - ‘2222:22’ - ‘127.0.0.1:20080:80’
在所有本地主机接口上的端口 2222 上发布容器内的端口 22。为了仅绑定到一个接口,您可以指定主机的 IP 地址,如 docker 端口绑定文档中所定义。要在不发布端口的情况下公开端口,请仅指定端口号(例如 )。([<host_interface>:[host_port]])|(<host_port>):<container_port>[/udp]
80
卷:
volumes: - volume: host: /var/discourse/shared guest: /shared
向容器公开主机内的目录。
链接:
links: - link: name: postgres alias: postgres
将另一个容器链接到当前容器。这将在运行容器时添加到选项中。--link postgres:postgres
环境变量:
将环境变量设置为当前容器。
env: DISCOURSE_DB_HOST: some-host DISCOURSE_DB_NAME: ‘{{config}}_discourse’
上述内容将在运行容器时添加到选项中。-e DISCOURSE_DB_HOST=some-host -e DISCOURSE_DB_NAME=app_discourse
标签:
labels: monitor: ‘true’ app_name: ‘{{config}}_discourse’
向当前容器添加标签。以上将添加到选项中 运行容器时--l monitor=true -l app_name=dev_discourse
升级话语
Docker 设置为您提供了多个升级选项:
- 使用 http://yoursite.com/admin/upgrade 的前端升级已运行的映像。
- 通过运行以下命令手动创建新的基础映像:
./launcher rebuild my_image
单容器与多容器
samples 目录包含一个独立模板。此模板将运行 Discourse 所需的所有软件捆绑到一个容器中。优点是很容易。
多容器配置设置更加灵活和可靠,但设置起来也更加复杂。多容器设置允许您:
- 最大限度地减少升级到新版本 Discourse 时的停机时间。您可以在站点运行时启动新的 Web 进程,并且只有在构建站点后,才能切换新映像。
- 将您的论坛扩展到多个服务器。
- 添加服务器以实现冗余。
- 在更强大的硬件上运行一些必需的服务(例如数据库)。
如果需要多容器设置,请参阅示例目录中的 和 模板。为了简化此过程,将注入一个名为 env var,该变量将在映像中可用。data.yml
web_only.yml
launcher
DISCOURSE_HOST_IP
警告:在多容器配置中,请确保设置 iptables 或其他防火墙来保护各种端口(用于 postgres/redis)。 在 Ubuntu 上,安装 or 包以管理防火墙规则。ufw
iptables-persistent
电子邮件
要使 Discourse 实例正常运行,必须设置电子邮件。使用 env var 设置 SMTP 地址,有关示例,请参阅示例模板。Docker 映像不包含 postfix、exim 或其他 MTA,它被省略了,因为它非常棘手地正确设置。SMTP_URL
故障 排除
查看容器日志:./launcher logs my_container
使用 在容器内生成一个 shell。如果您具有主机root访问权限,这是最万无一失的方法。./launcher enter my_container
如果您在尝试检索代码时遇到网络错误或重试 - 有时会出现暂时中断,只需重试即可。github.com
rubygems.org
在无法直接访问互联网的代理网络后面?通过添加到文件中的现有块,将代理信息添加到容器环境中:env
container.yml
env: …existing entries… HTTP_PROXY: http://proxyserver:port/ http_proxy: http://proxyserver:port/ HTTPS_PROXY: http://proxyserver:port/ https_proxy: http://proxyserver:port/
安全
Linux 中的目录权限是基于 UID/GID 的,如果您的数字 ID 在 host 与 guest 中的 ID 不匹配,权限将不匹配。在清洁 安装,您可以通过查看 和 来确保它们同步,话语帐户将具有 UID 1000。/etc/passwd
/etc/group
高级主题
许可证
麻省理工学院