如何在CentOS6.4x64VPS上安装Discourse

来自菜鸟教程
跳转至:导航、​搜索

状态:已弃用

本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。

原因CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) ,不再接收安全补丁或更新。 因此,不再维护本指南。

请参阅:本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您正在使用的 CentOS 版本编写的指南。


关于话语

Discourse 是一个新的开源讨论平台。 设计为论坛的完全“重启”,它具有与传统论坛不同的流程和内置的信任系统。

第 1 步:操作系统配置


运行 Discourse 有一些先决条件; 本教程将假设一个新的 Centos 6 VPS。

添加交换空间

如果您运行的 VPS 内存少于 2 GB,则需要在您的 VPS 上启用交换。 如果您不这样做,某些构建步骤可能会失败。

本教程有关于启用CentOS 6交换的说明。 对于较小的 VPS,添加至少 1 GB 的交换空间。

创建本地非 root 用户

大多数步骤将以具有 sudo 访问权限的非 root 用户身份运行。 本教程将引导您创建一个用户帐户并授予它sudo权力。

创建一个将运行 Discourse 的非 root 用户

您还需要一个运行 Discourse 的用户帐户。 最好是与您自己的帐户不同的帐户; discourse 将是一个不错的选择。

添加 EPEL 存储库

EPEL 代表企业 Linux 的额外软件包,它有一些我们需要安装的软件包,这些软件包不是基本 CentOS 存储库的一部分。

以本地用户身份登录并运行:

sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'

安装所需的软件包

这些是 Discourse 的先决条件或其先决条件。

sudo yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel ruby-devel libxml2 libxml2-devel libxslt libxslt-devel git

安装并启动 Redis

Redis 是 Discourse 使用的开源键值数据存储。

sudo yum install redis.x86_64
sudo chkconfig --add redis
sudo chkconfig --level 345 redis on
sudo /etc/init.d/redis start

第 2 步:安装 ngnix


Ngnix 是一个轻量级的 Web 服务器和反向代理,将用于反向代理连接到 Discourse。

添加存储库

ngnix 不在中央 CentOS 存储库中,因此您必须添加它们的存储库以便 yum 能够安装 ngnix。

创建一个文本文件 /etc/yum.repos.d/nginx.repo

sudo emacs /etc/yum.repos.d/nginx.repo

粘贴此内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

安装完成后,您需要刷新 yum 软件包列表,然后安装 ngnix。

sudo yum upgrade
sudo yum install nginx.x86_64

第 3 步:安装 PostgreSQL


Discourse 使用 PostgreSQL 作为其数据后端。 虽然 EPEL 包含 PostgreSQL 的软件包,但它已经过时了。 这将从 PostgreSQL 的存储库中安装一个更新的包。

禁用 CentOS 存储库

首先,我们将告诉 yum 不要查看核心 CentOS 存储库中的软件包。 为此,请编辑文件 /etc/yum.repos.d/CentOS-Base.repo

sudo emacs /etc/yum.repos.d/CentOS-Base.repo

添加行:

exclude=postgresql*

在此文件的 [base][updates] 部分下。

安装 PostgreSQL 存储库

现在我们将使用 yum 注册 PostgreSQL 的存储库。

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpm
sudo rpm -ivh pgdg-centos91-9.1-4.noarch.rpm 

安装 PostgreSQL 服务器

这将安装服务器和 Discourse 所需的一些开发包,启动服务器,初始化数据库,并将其设置为在重新启动时启动。

sudo yum install postgresql91-server.x86_64 postgresql91-contrib.x86_64 postgresql91-devel.x86_64

sudo service postgresql-9.1 initdb
sudo service postgresql-9.1 start
sudo chkconfig postgresql-9.1 on

向用户授予权限

现在告诉 PostgreSQL 我们的用户并授予他们访问数据库的权限。

sudo -u postgres createuser -s root
sudo -u postgres createuser -s discourse

第 4 步:安装 rvm 和 Ruby


Ruby 和 rvm 将安装在 discourse 用户的单用户上下文中。

安装 rvm

成为 discourse 用户并安装 rvm 的 stable 分支:

sudo su - discourse
\curl -s -S -L https://get.rvm.io | bash -s stable

rvm 将为 discourse 用户添加一些环境设置到登录脚本; 为确保这些已设置,最容易注销然后重新登录。

exit
sudo su - discourse

验证是否安装了 rvm 所需的软件包

这将确保环境设置正确并且 rvm 已准备好工作。 同样,作为话语用户,运行:

rvm --autolibs=read-fail requirements

这应该返回 rvm 不需要额外的包。

安装红宝石

作为 discourse 用户,安装本地 ruby 环境和捆绑器:

rvm install 2.0.0
rvm use 2.0.0 --default
gem install bundler

调整红宝石配置

默认情况下,gem builder 将无法找到系统 PostgreSQL 服务器的支持库和二进制文件。 为了构建这个 gem,这将告诉 bundle 在构建 PostgresSQL 库时传递命令行参数。

仍然作为话语用户,运行:

bundle config build.pg --with-pgsql-lib=/usr/pgsql-9.1/lib --with-pg-config=/usr/pgsql-9.1/bin/pg_config

第 5 步:安装和配置 Discourse


现在系统已准备好构建和运行 Discourse。

构建话语

作为 discourse 用户,使用 git 下拉 Discourse 源。 这会将 Discourse git 树克隆到子文件夹 discourse

git clone git://github.com/discourse/discourse.git discourse

在本地复制源代码后,构建 Discourse:

cd discourse
bundle install --deployment --without test

配置话语

复制示例配置文件,以便 Discourse 找到它们:

cd config
cp database.yml.production-sample database.yml
cp redis.yml.sample redis.yml
cp discourse.pill.sample discourse.pill
cp environments/production.rb.sample environments/production.rb

您需要编辑 database.yml。 将 host_names 行更改为服务器的主机名。

创建数据库

返回 discourse 目录,并作为 discourse 用户运行:

cd ~/discourse
createdb discourse_prod
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake db:migrate
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake assets:precompile

预编译步骤可能需要几分钟而不会将任何输出打印到屏幕上,因此可能看起来进程已挂起。

修复权限

默认情况下,网络服务器将无法访问 discourse 目录。 要授予更广泛的权限,请以 discourse 用户身份运行:

cd ~
chmod og+rx /home/discourse

安装和配置 bluepill

Bluepill 是 Discourse 用来监控自身的进程监控工具。 安装并配置它以在启动时启动:

gem install bluepill
echo 'alias bluepill="NOEXEC_DISABLE=1 bluepill --no-privileged -c ~/.bluepill"' >> ~/.bash_profile
rvm wrapper $(rvm current) bootup bluepill
rvm wrapper $(rvm current) bootup bundle

运行话语

Discourse 现在可以启动了。 要启动 Discourse,请运行:

RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/home/discourse/discourse RAILS_ENV=production NUM_WEBS=2 bluepill --no-privileged -c ~/.bluepill load /home/discourse/discourse/config/discourse.pill

您还应该将 Discourse 配置为在启动时启动,方法是将其添加到 discourse 用户的 crontab。 打开你的 crontab 进行编辑:

crontab -e

并将以下行粘贴到弹出的编辑器中:

@reboot RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/home/discourse/discourse RAILS_ENV=production NUM_WEBS=2 /home/discourse/.rvm/bin/bootup_bluepill --no-privileged -c ~/.bluepill load /home/discourse/discourse/config/discourse.pill

Discourse 现在正在运行,但需要将 ngnix 配置为将请求转发到正在运行的 Discourse 服务器,然后它才会响应发送到您的主机名的请求。

第 7 步:配置 ngnix


现在配置 ngnix 指向 Discourse 实例。

以本地用户身份重新登录并执行这些命令,而不是 discourse

基础 ngnix 配置

您需要对配置进行一些小的更改。 打开/etc/nginx/nginx.conf文件:

sudo emacs /etc/nginx/nginx.conf

找到文件的 http 部分并添加以下行:

server_names_hash_bucket_size 64;

为 Discourse 配置 nginx

Discourse 附带一个示例 nginx 配置文件。 将示例 Discourse ngnix 配置复制到 ngnix 期望的位置:

sudo cp /home/discourse/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf

需要对此文件进行一些更改。 打开 `/etc/nginx/conf.d/discourse.conf' 文件:

sudo emacs /etc/nginx/conf.d/discourse.conf
  • server_name 更改为您的主机名。
  • 更改套接字路径以反映 Discourse 的安装位置。 它们应该如下所示:
upstream discourse {
  server unix:/home/discourse/discourse/tmp/sockets/thin.0.sock;
  server unix:/home/discourse/discourse/tmp/sockets/thin.1.sock;
  server unix:/home/discourse/discourse/tmp/sockets/thin.2.sock;
  server unix:/home/discourse/discourse/tmp/sockets/thin.3.sock;
}
  • 更改文件中的基本路径。 查找路径为 /var/www/discourse/public 的行,并将其替换为我们的正确路径 /home/discourse/discourse/public

现在重新启动 ngnix 以获取配置更改:

sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start

如果 ngnix 当前没有运行,stop 命令可能会失败,但 start 命令应该会成功。

第 8 步:使用话语!


Discourse 现在正在运行并响应您主机名的请求。 您需要做的最后一件事是设置管理员帐户以授予您管理 Discourse 实例的权限。

创建您的 Discourse 用户

通过在您的网络浏览器中导航到您的主机名来打开您的 Discourse 网站。 为自己创建一个用户帐户,并记下您注册时使用的电子邮件地址。

授予自己管理权限

回到你的外壳。 成为 discourse 用户并打开一个连接到 Discourse 实例的 rails 控制台:

cd ~/discourse
RAILS_ENV=production bundle exec rails c

这将使您进入 Rails 控制台,您可以在其中运行命令。 这些命令将授予您管理权限; 将电子邮件地址替换为您注册时使用的电子邮件地址:

me = User.find_by_username_or_email('myemailaddress@me.com')
me.activate
me.admin = true
me.save

您还可以将此用户设置为默认联系人:

SiteSetting.site_contact_username = me.username

输入 exit 退出 Rails 控制台。

验证您现在是管理员

在您的网络浏览器中返回您的 Discourse 实例。 如果您没有使用您注册的帐户登录,请重新登录。 您现在可以根据自己的喜好配置您的 Discourse 实例。

恭喜! 你已经安装了 Discourse。 嘘!

提交人:http: [[“%3Ca|//jimreardon.us/]] [[“%3C/a|”>吉姆·里尔登]]