如何在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。 嘘!