如何使用Nginx在CentOS 7上安装和配置语篇论坛

如何使用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论坛软件。

我们将要做什么

  1. 在CentOS 7上安装Docker
  2. 安装和配置Discourse论坛软件
  3. 在CentOS 7上生成SSL Letsencrypt
  4. 安装和配置Nginx作为Discourse的反向代理
  5. Discourse网络安装程序
  6. 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论坛。

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏