一、创建一个虚拟服务器
本网站采用Linode 1服务,配置为1Core CPU,2GB RAM,系统为Ubuntu 18.04 LTS X64默认设置。
更新服务器系统:
apt-get update
apt-get upgrade --show-upgraded
二、安装php fastcgi processing manager,其中包括核心php依赖项:
apt install php-fpm
三、申请SSL证书
首先在服务器端利用openssl生成证书密钥:
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
在生成证书密钥过程中需要输入申请者信息:
Common Name(通用名称):您要保护的完全限定域名或 URL。
如果您申请的是通配符证书,请在要添加通配符的通用名称左边添加星号 (*),例如 *.coolexample.com。
Organization(组织):您的企业依法注册的名称。如果您要以个人身份注册,请输入证书申请人的姓名。
Organization Unit(部门):(如果有)输入 DBA(Doing Business As,经营部门)名称。
City or Locality(城市或地区):您的组织机构注册或所在的城市。请勿使用缩写。
State or Province(州或省):您的组织机构所在的州或省。请勿使用缩写。
Country(国家/地区):您的组织机构依法注册所在国家/地区的国家/地区代码,使用国际标准化组织的两字母格式。
如果您不想为该 SSL 输入密码,则可以将“密码”字段保留为空。但是,这样做可能会带来额外的风险。
生成的证书文件(yourdomain.key和yourdomain.csr)会保存在 服务器 /root 目录下。
在文本编辑器中打开 .CSR文件,然后复制所有文本。
将整个 CSR 粘贴到SSL 服务提供商的注册表格中。待证书提供商签发证书后下载签发证书。
如果下载的证书里面有两个crt,需要进行证书合并操作,文件名请根据实际情况进行修改:
cat 53f58e3ac2172cd5.crt gd_bundle-g2-g1.crt > domain.crt
最后,将所有证书文件存入/var/discourse/shared/standalone/ssl/目录中。
四、安装nginx
apt install nginx
1.添加站点
nginx站点的默认配置文件在 /etc/nginx/sites-available/default,首先复制一份并为此文件命名为你想要的名字:
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
需要将刚刚建立的配置文件软链接至 sites-enabled`目录下:
ln -s /etc/nginx/sites-available/dotcom /etc/nginx/sites-enabled/dotcom
现在我们可以删除nginx原来的默认配置文件了:
rm /etc/nginx/sites-available/default
rm /etc/nginx/sites-enabled/default
2.用vim或nano文本编辑器中打开刚才建立的站点配置文件。复制如下内容到该文件中:
server {
listen 80;
listen [::]:80;
server_name hug.app;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl on;
ssl_certificate /var/discourse/shared/standalone/ssl/ssl.crt;
ssl_certificate_key /var/discourse/shared/standalone/ssl/ssl.key;
ssl_dhparam /var/discourse/shared/standalone/ssl/dhparams.pem;
ssl_session_tickets off;
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;
http2_idle_timeout 5m; # up from 3m default
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
}
测试配置文件是否有错误:
nginx -t
重新加载新配置,并重新启动nginx:
service nginx reload
service nginx restart
五、安装Docker / Git
apt-get install ruby git
wget -qO- https://get.docker.com/ | sh
六、安装Discourse
创建一个/var/conversation文件夹,将官方的Discourse Docker复制到其中:
sudo -s
mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
修改Discourse配置
首先将默认配置文件拷贝到containers目录下:
cp samples/standalone.yml containers/app.yml
用vim或nano文本编辑器打开app.yml文件:
vim containers/app.yml
找到下面字段,添加或修改为以下内容:
templates:
- "templates/cron.template.yml"
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.socketed.template.yml"
#- "templates/web.ssl.template.yml"
#- "templates/cron.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
expose:
#- "80:80" # http 注释掉本端口以免与nginx冲突
#- "443:443" # https 注释掉本端口以免与nginx冲突
params:
db_shared_buffers: "2GB"
DISCOURSE_HOSTNAME: 'discourse.example.com'
DISCOURSE_DEVELOPER_EMAILS: 'user@example.com'
DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: user@example.com
DISCOURSE_SMTP_PASSWORD: "pa$$word"
DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
run:
- exec: rails r "SiteSetting.notification_email=' user@example.com'"
修改完成后保存app.yml配置文件,然后手动重新加载新的配置:
./launcher rebuild app #引导需要2-8分钟来建立你的新配置
./launcher start app #启动程序
至此已经顺利配置完所有内容,快来测试你的Discourse站点吧!