如何在Ubuntu 16.04上使用Nginx安装语篇论坛

如何在Ubuntu 16.04上使用Nginx安装语篇论坛

Discourse是一个免费的开源软件,用于创建互联网论坛社区和邮件列表。 它创建于2013年,用Ruby和Javascript编程语言编写。 Discourse论坛软件已被许多组织使用,包括Codeacademy,Udacity,Twitter开发者和Docker社区论坛。

在本教程中,我们将逐步向您展示如何在Ubuntu 16.04上使用Nginx Web服务器安装和配置Discourse Forum。 具体来说,我们将向您展示如何安装Discourse Forum Software,将Nginx配置为Discourse应用程序的反向代理,并使用Letsencrypt提供的免费SSL来保护Discourse论坛软件。

我们将要做什么

  1. 在Ubuntu 16.04上安装Docker
  2. 安装和配置Discourse论坛软件
  3. 在Ubuntu 16.04上生成SSL Letsencrypt
  4. 安装并配置Nginx作为Discourse的反向代理
  5. DiscourseWeb安装程序
  6. Discourse附加配置

先决条件

  • Ubuntu 16.04
  • 根权限
  • SMTP帐户 - Mailgun,SendGrid,Mailjet等

第1步 - 在Ubuntu 16.04上安装Docker

Discourse软件是用Ruby和Javascript编写的,使用PostgreSQL作为主数据库,Redis作为缓存和瞬态数据。 我们将在Docker容器下安装Discourse。

安装过程将在Ubuntu 16.04上进行。 所以首先,使用下面的命令安装Docker。

wget -qO- https://get.docker.com/ | sh

安装完成后,检查docker服务并确保它已经在系统上运行。

systemctl status docker

并确保Docker在启动启动应用程序。

systemctl is-enabled docker

第2步 - 安装和配置Discourse论坛

在这一步中,我们将安装和配置Discourse软件。 我们将下载语言docker-compose脚本,根据我们的需求进行配置,然后为Discourse论坛软件创建新的Docker容器。

创建新的“/ var / discourse”目录并克隆安装程序脚本。

mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse

现在转到“Discourse”目录,复制docker-compose文件的样本。

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.me'

然后在“DISCOURSE_DEVELOPER_EMAIL”行中输入您的电子邮件地址。

DISCOURSE_DEVELOPER_EMAILS: 'hakase@hakase-labs.me'

SMTP配置

这是Discourse Software最重要的配置。 确保您有Discourse安装的SMTP帐户 - 您可以购买或试用Mailgun,Mailjet或SendGrid的免费层SMTP帐户。

在本教程中,我们将使用Mailgun提供的免费层SMTP帐户。 取消注释SMTP配置并按如下所示键入您的帐户。

  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: postmaster@hakase-labs.me
  DISCOURSE_SMTP_PASSWORD: mypassword

保存并退出。

接下来,基于app.yml模板配置构建新的Discourse Docker镜像。

sudo ./launcher bootstrap app

之后,使用下面的命令启动/初始化新的Discourse容器。

sudo ./launcher start app

Discourse容器应该启动并运行 - 使用docker命令检查它。

docker ps -a

使用netstat检查主机打开的端口,确保新的docker-proxy端口2045在列表中。

netstat -plntu

Discourse论坛软件已安装在主机Ubuntu 16.04的docker容器下。

第3步 - 在Ubuntu 16.04上生成SSL Letsencrypt

Discourse论坛将在HTTP安全连接下运行,并由Nginx Web服务器处理。 我们将在本指南中使用来自Letsencrypt的免费SSL,并且我们需要在服务器上安装letsencrypt客户端。

使用下面的apt命令安装letsencrypt。

sudo apt install letsencrypt -y

现在使用letsencrypt命令生成新的SSL证书。

letsencrypt certonly

输入您的电子邮件地址以更新通知,然后选择“确定”。

对于Letsencrypt TOS(服务条款),请选择“同意”。

现在输入你的Discourse域名“discourse.hakase-labs.me”。

完成后,你会得到如下结果

已经在'/ etc / letsencrypt / live'目录中生成了来自letsencrypt的新SSL证书。

第4步 - 安装和配置Nginx作为Discourse容器的反向代理

在这一步中,我们将安装Nginx Web服务器并将其配置为在端口2045上运行的Discourse容器的反向代理。

用下面的apt命令安装Nginx。

sudo apt install nginx -y

现在启动Nginx,并使用systemctl命令在启动时启动它。

systemctl start nginx
systemctl enable nginx

Nginx已经安装并且正在HTTP端口80上运行。你可以使用netstat来检查这个。

netstat -plntu

Nginx Web服务器已经安装到Ubuntu 16.04服务器上。

接下来,我们需要为Discourse容器创建一个新的虚拟主机文件。 转到nginx配置目录,使用vim编辑器创建新的“Discourse”文件。

cd /etc/nginx/
vim sites-available/discourse

现在,粘贴以下Discourse nginx虚拟主机配置。

server {
    listen 80; listen [::]:80;
    server_name discourse.hakase-labs.me;
 
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl http2; 
    server_name discourse.hakase-labs.me;

    ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.me/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.me/privkey.pem;
    include /etc/nginx/snippets/ssl.conf;
 
    location / {
        proxy_pass http://discourse.hakase-labs.me: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.me:2045/ https://discourse.hakase-labs.me;
    }
}

保存并退出。

注意:

  • 所有HTTP请求将自动重定向到HTTPS连接。
  • 使用您自己的路径目录更改SSL配置。
  • 还有一个额外的SSL配置。

现在创建新的额外的SSL配置文件'ssl.conf'。

vim snippets/ssl.conf

将以下配置粘贴到文件中。

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;

保存并退出。

现在使用'ln -s'命令激活Discourse虚拟主机,如下所示。

ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/

获取配置并确保没有错误,然后重新启动服务。

nginx -t
systemctl restart nginx

作为Discourse容器的反向代理的Nginx安装和配置已经完成。

第5步 - Discourse网络安装程序

打开您的网络浏览器并访问DiscourseURL。

http://discourse.hakase-labs.me

你将被重定向到HTTP安全连接。 点击“注册”按钮创建一个新的管理员用户。

现在输入您的管理员用户名和密码,然后点击“注册”。

你会得到一个关于你的管理员用户激活的新电子邮件确认。

以下是Discourse帐户确认的示例电子邮件。 点击链接确认并激活管理员帐户。

你应该得到如下所示的Discourse页面。 点击“点击这里激活您的帐户”按钮。

现在你可以配置你自己的Discourse论坛。 点击“下一步”按钮,你需要配置13步的Discourse论坛。 或者稍后点击“也许稍后”进行配置。

下面显示的是在Nginx Web服务器上安装的Discourse Forum和Ubuntu 16.04上的HTTPS。

以下是我的Discourse Admin Dashboard。

Discourse论坛已经与Nginx一起安装在Ubuntu 16.04服务器上作为反向代理。

第6步 - Discourse附加配置

在安装Discourse的过程中,您可能会遇到一个问题,即您没有得到管理员用户激活的电子邮件确认。

要排序的问题,请确保您有配置app.yml上正确的SMTP帐户。 或者您可以从您的服务器手动激活管理员帐户。

要手动激活管理员帐户,请转至“/ var / discourse”目录。

cd /var/discourse

现在使用下面的命令访问Discourse容器。

./launcher enter app

并激活第一个管理员用户使用rails命令如下。

铁轨c 
u = User.last
u.admin = true
u.activate
u.save

现在,您可以使用您的用户名和密码登录到Discourse论坛。

参考

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

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

支付宝扫一扫打赏

微信扫一扫打赏