下面是Docker中安装Discourse的教程:
1. 安装Docker
首先,你需要在你的服务器上安装Docker。Docker是一个开源的容器技术,它可以让你把应用程序以及它们的依赖打包到容器中,并且可以在不同的环境和服务器上运行。
具体地说,在Ubuntu系统上,你可以使用下面的命令安装Docker:
sudo apt update
sudo apt install docker.io
安装完毕之后,你可以使用如下命令验证是否安装成功:
sudo docker version
2. 准备Discourse镜像
接下来,你需要准备一个Discourse镜像,然后在Docker容器中运行它。下面是如何准备Discourse镜像的步骤:
- 首先,在你的服务器上创建一个目录来存储镜像文件:
sudo mkdir /var/docker
- 然后进入该目录并下载Discourse Docker镜像:
cd /var/docker
sudo docker pull discourse/base
- 下载完成后,你需要使用如下命令运行Discourse容器:
sudo docker run -d --name discourse --restart always \
-p 80:80 -p 443:443 \
-e DISCOURSE_HOSTNAME=discourse.example.com \
-v /var/docker/discourse/shared/standalone:/shared \
-v /var/docker/discourse/shared/standalone/log/var-log:/var/log \
-v /var/docker/discourse/shared/standalone/postgres_data:/shared/postgres_data \
-v /var/docker/discourse/shared/standalone/redis_data:/shared/redis_data \
-v /var/docker/discourse/shared/standalone/uploads:/shared/uploads \
discourse/base
上述命令中的DISCOURSE_HOSTNAME需要替换成你自己的域名或者IP地址。该命令会在容器中启动Discourse,并将Discourse的端口映射到主机的80和443端口。
3. 访问Discourse
现在,你可以在浏览器中访问http://discourse.example.com
,这里的discourse.example.com
是上述命令中设置的DISCOURSE_HOSTNAME。访问Discourse以设置管理员账户,并开始使用Discourse。
示例1:使用Nginx作为反向代理
如果要使用Nginx作为Discourse的反向代理,你需要先安装Nginx。在Ubuntu系统上,你可以使用下面的命令安装:
sudo apt update
sudo apt install nginx
安装完成之后,你需要配置Nginx以将来自Discourse的请求转发到容器中运行的Discourse。为此,在你的Nginx配置目录下,创建一个新的配置文件:
sudo nano /etc/nginx/conf.d/discourse.conf
在该文件中,添加以下配置:
upstream discourse {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name discourse.example.com;
location / {
proxy_pass http://discourse;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;
proxy_cache_valid 5m;
}
access_log /var/log/nginx/discourse.access.log;
error_log /var/log/nginx/discourse.error.log;
}
其中,discourse.example.com
应该替换成你自己的域名或IP地址。
最后,重启Nginx,使配置生效:
sudo systemctl restart nginx
现在,你可以在浏览器中访问http://discourse.example.com
,以访问Discourse。
示例2:使用Let's Encrypt添加SSL证书
如果你想在Discourse上启用SSL加密,可以使用Let's Encrypt提供的免费证书。下面是如何在Discourse中添加Let's Encrypt证书的步骤:
- 首先,确保你的系统上有Certbot,并使用下面的命令安装它:
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
- 安装完成后,使用下面的命令为你的域名生成SSL证书:
sudo certbot --nginx --agree-tos --email your-email@example.com -d discourse.example.com
其中,your-email@example.com
应该换成你的电子邮件地址,discourse.example.com
则是你的Discourse域名。
-
当然,你可以使用
sudo certbot --nginx
命令来自动安装和配置证书。 -
安装完成后,你需要修改你的Nginx配置文件,以让Discourse使用Let's Encrypt证书。为此,打开你的Nginx配置目录下的Discourse配置文件:
sudo nano /etc/nginx/conf.d/discourse.conf
将以下行添加到文件末尾:
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/discourse.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.example.com/privkey.pem;
其中,ssl_certificate
和ssl_certificate_key
应该替换成你的证书路径。
最后,重启Nginx,使配置生效:
sudo systemctl restart nginx
现在,你可以在浏览器中访问https://discourse.example.com
以安全地访问Discourse。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Docker中安装Discours的教程 - Python技术站