如何在Ubuntu 14.04 Nginx的背后安装Discourse

介绍

Discourse是专为现代网络建立了一个开源社区讨论平台。

本教程将引导您完成配置Discourse,与Nginx的移动背后都有一个反向代理,并为其配置与SSL证书的步骤, 让我们加密 在预留代理后移动Discourse使您能够灵活地在您的Droplet上运行其他网站。

先决条件

在开始之前,请确保您拥有以下内容:

本教程中的所有命令都应以非root用户身份运行。 如果需要该命令的root访问权限,它会在前面加sudo

第1步 - 配置Discourse

现在你已经安装了Discourse,我们需要配置它在Nginx后面工作。

警告 :这会产生宕机你的Discourse论坛,直到我们配置Nginx的。 确保这是一个全新安装的Discourse或有备份服务器,直到配置完成。

只有一个设置,我们需要改变到Discourse,所以我们可以移动它在Nginx后面。 切换到包含配置文件的目录:

cd /var/discourse

然后,打开我们需要更改的配置文件:

sudo nano containers/app.yml

使用箭头键,向下滚动到expose部分(应该是靠近顶部),并改变该行的第一个端口号:

/var/discourse/containers/app.yml
...
## which TCP/IP ports should this container expose?
expose:
  - "25654:80"   # fwd host port 80   to container port 80 (http)
...

此号码可以是随机的,不应与其他人共享。 你甚至可以阻止它未经授权的访问与iptables防火墙规则 ,如果你愿意的话。

现在保存并退出文本编辑器。

通过运行以下命令启用配置更改:

sudo ./launcher rebuild app

此步骤可能需要一段时间,请耐心等待。

您可以访问您的网站来验证一切正常。 您的域名Discourse(如http:// discourse.example.com )将不再加载在Web浏览器界面,但如果你只使用配置的Discourse如端口应该是访问http:/// discourse.example.com : 25654 (与您的域名和25654与你刚才在这个步骤中使用的端口替换discourse.example.com)。

第2步 - 安装和配置Nginx

现在,Discourse安装和配置工作在Nginx后面,是时候安装Nginx。

要在Ubuntu上安装Nginx,只需输入此命令,安装将开始:

sudo apt-get install nginx

浏览到您的旧网址的Discourse在http:// discourse.example.com会显示默认的网页Nginx的:

默认Nginx目标网页

这可以。 我们会将此更改为您的论坛。 首先,让我们停止Nginx:

sudo service nginx stop

然后,删除此默认网页配置 - 我们不需要它:

sudo rm /etc/nginx/sites-enabled/default

接下来,我们将让我们的Discourse服务器,我们将其命名为新的配置文件discourse

sudo nano /etc/nginx/sites-enabled/discourse

在以下配置中复制并粘贴。 替换discourse.example.com与您的域名和25654与你刚才在上一步中使用的端口:

/ etc / nginx / sites-enabled / discourse
server {
        listen 80;
        server_name discourse.example.com;
        return 301 https://discourse.example.com$request_uri;
}
server {
        listen 443 ssl spdy; 
        server_name discourse.example.com;
        ssl_certificate /etc/letsencrypt/live/discourse.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/discourse.example.com/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_prefer_server_ciphers on;
        location / {
                proxy_pass      http://discourse.example.com:25654/;
                proxy_read_timeout      90;
                proxy_redirect  http://discourse.example.com:25654/ https://discourse.example.com;
        }
}

这里是这个配置:

  • 第一台服务器块被监听的discourse.example.com端口80上的域,并重定向端口443上的所有请求SSL这是可选的,但它迫使您的网站上所有用户的SSL。
  • 第二服务器块是在端口443上,并传递请求在端口运行的Web服务器25654 (在此情况下,Discourse)。 这本质上使用反向代理向您的用户发送Discourse页面并通过SSL回传。

您可能已经注意到我们在引用一些证书/etc/letsencrypt 在下一步中,我们将在重新启动Nginx之前生成它们。

第3步 - 生成SSL证书

为了生成SSL证书,我们将首先安装Let's Encrypt的ACME客户端。 这个软件允许我们生成SSL证书。

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

然后去letsencrypt目录:

cd /opt/letsencrypt/

安装Let's Encrypt第一次需要的包:

./letsencrypt-auto --help

现在,我们可以通过运行生成您的证书(替换您的电子邮件地址和域名):

./letsencrypt-auto certonly --standalone --email sammy@example.com --agree-tos -d discourse.example.com

备注:咱们加密只会对域名发放证书。 如果您尝试使用IP地址,您将收到错误。 如果您需要域名,请查看先决条件部分中的链接。

你应该得到一个相当快的反应,类似于:

让我们加密输出
IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to sammy@example.com.
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/discourse.example.com/fullchain.pem. Your
   cert will expire on 2016-04-26. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.

你会注意到它说你的证书被保存在/etc/letsencrypt/live/ discourse.example.com 这意味着我们的Nginx配置现在有效。 你也会注意到,过期日期不会太远。 这是正常的让我们加密证书。 所有你需要做的更新是再次运行完全相同的命令,但每90天登录是没有乐趣,所以我们将在下一步自动化。

第4步 - 自动化让我们加密证书续订

现在我们第一次设置了我们的证书,我们应该确保他们自动续订。 让我们加密证书的有效期为90天,之后它们将过期,并在浏览器中向您网站的所有访问者显示警告。 在写入时,自动更新不会内置到客户端,但我们可以设置一个脚本来手动更新它们。

请参阅设置自动更新的步骤如何使用让我们在Ubuntu 14.04加密安全Nginx的有关设置cron作业来自动更新您的证书的详细信息。

通过这个命令生成的任何输出将达到/var/log/certificate-renewal.log进行故障排除。

第5步 - 重新启动Nginx

最后,我们的配置应该是完整的。 通过运行以下命令重新启动Nginx:

sudo service nginx restart

现在,如果你浏览到https:// discourse.example.com /你的网站应该是在线和咱们加密,显示为大多数的浏览器一个绿色的锁保护。

结论

而已! 你现在有一个Discourse论坛设置在Nginx后面,使用Let's Encrypt的最新SSL标准。

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

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

支付宝扫一扫打赏

微信扫一扫打赏