如何使用Nginx在CentOS 7上安装和配置语篇论坛
Discourse是一个免费的开源软件,用于创建互联网论坛社区和邮件列表。 它创建于2013年,使用Ruby和Javascript编程语言编写。 Discourse论坛软件已被许多组织使用,包括Codeacademy,Udacity,Twitter开发者,Docker社区论坛等。
在本教程中,我们将逐步向您展示如何在CentOS 7服务器下使用Nginx Web服务器来安装和配置Discourse Forum。 具体来说,我们将向您展示如何安装Discourse Forum Software,将Nginx配置为Discourse应用程序的反向代理,并使用Letsencrypt的免费SSL来保护Discourse论坛软件。
我们将要做什么
- 在CentOS 7上安装Docker
- 安装和配置Discourse论坛软件
- 在CentOS 7上生成SSL Letsencrypt
- 安装和配置Nginx作为Discourse的反向代理
- Discourse网络安装程序
- Discourse附加配置
先决条件
- CentOS 7
- 根权限
- SMTP帐户 - Mailgun,SendGrid或Mailjet
第1步 - 在CentOS 7上安装Docker
论坛将安装在Docker容器下。 所以我们必须做的第一步就是在我们的CentOS 7服务器上安装Docker。
使用以下命令在CentOS 7上安装Docker。
wget -qO- https://get.docker.com/ | sh
如果您没有wget命令,请从存储库安装它。
yum -y install wget
如果安装完成,请启动Docker服务并使其能够在引导时使用以下systemctl命令启动。
systemctl start docker
systemctl enable docker
Docker引擎已经安装,并且在CentOS 7服务器上运行。 使用以下命令检查服务状态。
systemctl status docker
Docker服务处于活动状态并正在运行。
第2步 - 安装和配置Discourse论坛软件
在这一步中,我们将安装和配置Discourse软件。 我们将下载语言docker-compose脚本,根据需要进行配置,然后为Discourse论坛软件创建一个新的Docker容器。
在下载讨论之前,我们需要将git命令安装到服务器上。
yum -y install git
现在创建一个新的目录'/ var / discourse'并使用git命令下载/克隆语篇docker脚本。
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
转到Discourse目录,将docker-compose脚本“standalone.yml”的样本复制到名为“app.yml”的“/ var / discourse / containers /”目录中。
cd /var/discourse
cp samples/standalone.yml containers/app.yml
现在使用vim编辑'app.yml'文件。
vim containers/app.yml
- Docker端口映射
默认情况下,所有HTTP和HTTPS请求将由Docker代理处理。 对于本指南,我们将使用Nginx来实现此目的 - 所有HTTP和HTTPS都将由Nginx Web服务器处理。
所以我们需要改变码头端口映射配置。 Discourse容器只有HTTP连接,主机将打开新的端口“2045”并映射到容器端口80。
取消对HTTPS行的注释并使用新端口“2045”更改HTTP行,如下所示。
expose:
- "2045:80" # http
# - "443:443" # https
- Discourse域名配置
在“DISCOURSE_HOSTNAME”行中输入您自己的域名,以便安装在话题中,如下所示。
DISCOURSE_HOSTNAME: 'discourse.hakase-labs.co'
然后在“DISCOURSE_DEVELOPER_EMAIL”行中输入您的电子邮件地址。
DISCOURSE_DEVELOPER_EMAILS: 'hakase@hakase-labs.co'
- SMTP配置
SMTP配置是Discourse软件的最重要的配置。 确保您有Discourse安装的SMTP帐户 - 您可以购买或试用Mailgun,Mailjet或SendGrid的免费层SMTP帐户。
对于本教程,我们将使用Mailgun提供的免费层SMTP帐户。 注册Mailgun并配置您的域名,并确保您获得您的SMTP帐户的详细信息。
然后取消SMTP配置的注释并输入您的账户信息如下。
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@hakase-labs.co
DISCOURSE_SMTP_PASSWORD: mypassword
而已。 保存更改并退出编辑器。
接下来,基于app.yml模板配置构建新的Discourse Docker镜像。
sudo ./launcher bootstrap app
如果全部完成,则使用以下命令启动/初始化新的Discourse容器。
sudo ./launcher start app
而Discourse Docker容器已经启动并正在运行 - 使用“docker ps”命令检查它。
docker ps -a
使用netstat检查主机打开的端口,并确保具有端口2045的新服务docker-proxy在列表中。
netstat -plntu
Discourse论坛软件已安装在主机CentOS 7的docker容器下。
第3步 - 在CentOS 7上生成SSL Letsencrypt
在本教程中,我们将运行Nginx Web服务器下的Discourse论坛,并只接受HTTPS连接。 为此,我们需要新的SSL证书作为域名,所以我们将使用Letsencrypt的免费SSL证书。
按以下方式使用yum命令安装Letsencrypt命令行工具。
yum -y install letsencrypt
安装完成后,将新的HTTP和HTTPS服务添加到Firewalld配置中。
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
现在使用下面的letsencrypt命令为Discourse论坛生成新的SSL证书。
letsencrypt certonly
你会看到来自Letsencrypt的两个验证。 键入数字“1”启动临时Web服务器进行身份验证。
作为其中的一部分,键入您的电子邮件地址以更新通知,键入'A'以同意letsencrypt TOS(服务条款)。
现在输入Discourse域名“discourse.hakase-labs.co”。
过程完成后,您将得到如下结果。
已经在“/ etc / letsencrypt / live”目录中生成了来自letsencrypt的新SSL证书。
第4步 - 安装和配置Nginx作为Discourse的反向代理
在本教程中,我们将使用Nginx Web服务器作为在Docker容器下运行的Discourse的反向代理。 Nginx的Web服务器将在HTTP和HTTPS端口下运行,所有的客户端请求将由Nginx处理。
在安装Nginx Web服务器之前,我们需要在系统上安装EPEL仓库。
yum -y install epel-release
现在使用以下yum命令从EPEL存储库安装nginx。
yum -y install nginx
所有安装完成后,转到nginx配置目录“/ etc / nginx”。
cd /etc/nginx/
并使用vim创建一个新的SSL配置“ssl.conf”。
vim ssl.conf
在那里粘贴以下SSL配置。
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
保存更改并退出编辑器。
接下来,为Discourse创建一个新的nginx虚拟主机文件“discourse.conf”。
vim conf.d/discourse.conf
在那里粘贴下面的配置。
server {
listen 80; listen [::]:80;
server_name discourse.hakase-labs.co;
# Automatic Redirect HTTP to HTTPS Nginx
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name discourse.hakase-labs.co;
# SSL Configuration
ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.co/privkey.pem;
include /etc/nginx/ssl.conf;
# Reverse Proxy Configuration
location / {
proxy_pass http://discourse.hakase-labs.co:2045/;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://discourse.hakase-labs.co:2045/ https://discourse.hakase-labs.co;
}
}
保存并退出。
现在测试nginx配置并确保没有错误。 然后重新启动Nginx服务。
nginx -t
systemctl restart nginx
作为Discourse容器的反向代理的Nginx安装和配置已经完成。
第5步 - Discourse网络安装
打开您的网络浏览器,并访问您的DiscourseURL,我的是:
http://discourse.hakase-labs.co
您将被重定向到HTTPS连接。
点击“ 注册 ”按钮。
现在我们需要创建一个新的“管理员”帐户。
输入您的管理员用户名和密码,然后点击“ 注册 ”。
你会得到电子邮件确认的页面。 检查您的电子邮件收件箱,并确保您从Discourse论坛获得电子邮件配置如下。
点击“ 链接 ”。
你会得到“Discourse欢迎”页面。
点击按钮“ 点击这里激活您的帐户 ”。 现在你应该进入下一页。
点击“ 稍后也许 ”按钮。
Discourse论坛已经安装,我们得到如下所示的默认主页。
你可以去“管理仪表板”,你会得到Discourse Admin仪表板。
Discourse论坛软件已经与Nginx一起安装在CentOS 7服务器上作为反向代理。
第6步 - Discourse附加配置
在Discourse安装过程中,有些人说他们没有得到管理员用户激活的电子邮件确认。
对于这个问题,请确保在配置app.yml上有正确的SMTP帐户。 或者您可以从您的服务器手动激活管理员帐户。
要手动激活管理员帐户,请转至“/ var / discourse”目录。
cd /var/discourse
现在使用以下命令访问Discourse容器。
./launcher enter app
并使用rails命令激活第一个管理员用户,如下所示。
rails c
u = User.last
u.admin = true
u.activate
u.save
现在您可以使用您的用户名和密码登录到Discourse论坛。