部署思源Docker最新版2.10.0并启用https(小白向)
前置条件
-
Linux系统,本文基于 Centos 8 ,Centos 7 也适用,其余发行版本命令可能略有不同如果报错自行百度
-
具有公网 IP
-
安装Docker 和 Docker-compose
安装docker和docker-compose
# 如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
# 使用官方安装脚本自动安装 docker
# 安装命令如下:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 使用以下命令来安装稳定版本的 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
# 创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 测试是否安装成功:
docker-compose version
# 无报错返回版本号则成功
正式部署思源
-
创建SiYuan文件夹
mkdir SiYuan
cd SiYuan
vim docker-compose.yml
-
往 docker-compose.yml 中写入命令
version: '3'
services:
siyuan:
image: b3log/siyuan:latest
container_name: siyuan
restart: always
volumes:
- /root/SiYuan:/root/Documents/SiYuan
command: [--workspace=/root/Documents/SiYuan,--ssl=true,--accessAuthCode=yy401,--lang=zh_CN]
network_mode: "host"
~
写入完成后按一下 esc 按键,然后输入 :wq 保存并退出
-
启动docker-compose
# 首次启动进行测试,关闭命令行或 Ctrl + C 都会结束程序
docker-compose up
# 注意: 大部分云服务商都启动用了防火墙或策略组,需要到对应的服务商开启 6806 80 443 端口,否则可能无法访问
# 打开linux 防火墙 6806 和 443 ,80 端口
# 如果您使用的是iptables,可以使用以下命令打开端口:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 6806 -j ACCEPT
sudo service iptables save
# 如果您使用的是firewalld,可以使用以下命令打开端口:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=6806/tcp --permanent
sudo firewall-cmd --reload
-
打开浏览器,在地址栏输入ip:6806 能够正常看到授权页面,如图
-
设置后台启动
# 首先 Ctrl + C 停掉刚才运行的思源
docker-compose up -d
# -d 表示后台运行
-
安装nginx
# nginx添加yum repro库中
wget https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 建立nginx的yum仓库
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装 nginx
yum install nginx -y
# 中间需要输入 y 确认安装
# 启动nginx 并且设置为开机启动
sudo systemctl start nginx
访问 ip:80 能够看到nginx 欢迎页面
-
配置 nginx
cd /etc/nginx
mv nginx.conf nginx_cp.conf
mkdir /var/cache/nginx/client_temp
mkdir /var/cache/nginx/proxy_temp;
mkdir /var/cache/nginx/fastcgi_temp
vim nginx.conf
写入以下内容:
error_log /var/log/nginx/error.log warn;
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
events {
worker_connections 10240;
use epoll; # 使用epoll网络模型,提高性能
multi_accept on; # 开启支持多个连接同时建立
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
client_body_temp_path /var/cache/nginx/client_temp;
proxy_temp_path /var/cache/nginx/proxy_temp;
fastcgi_temp_path /var/cache/nginx/fastcgi_temp;
# 代理参数
proxy_connect_timeout 10s; # 连接超时时间
proxy_send_timeout 10s; # 发送超时时间
proxy_read_timeout 10s; # 接收超时时间
proxy_buffer_size 16k; # 缓冲区大小
proxy_buffers 4 32k; # 缓冲区个数和大小
proxy_busy_buffers_size 64k; # 忙碌缓冲区大小
proxy_temp_file_write_size 64k; # 代理临时文件写入大小
client_max_body_size 50m;
client_body_buffer_size 10m;
client_header_timeout 1m;
client_body_timeout 1m;
# 定义日志格式,main是默认的日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 默认访问日志保存路径和格式
access_log /var/log/nginx/access.log main;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_comp_level 6;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
server{
listen 443 ssl;
server_name siyuan.qlwechat.cn;# 这里替换为你的域名
ssl_certificate siyuan.qlwechat.cn.pem; # 这里替换为你的ssl证书
ssl_certificate_key siyuan.qlwechat.cn.key; # 这里替换为你的ssl密钥
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:6806;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
location /ws {
proxy_pass http://127.0.0.1:6806;
proxy_read_timeout 60s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
}
server{
listen 80;
server_name siyuan.qlwechat.cn; # 替换域名
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:6806;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
location /ws {
proxy_pass http://127.0.0.1:6806;
proxy_read_timeout 60s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
}
}
写入完成后 按 esc 再输入 :wq 保存并退出
-
重启nginx
nginx -s reload
-
分别访问 http://绑定域名 和 https://绑定域名查看是否能看到授权页面,能看到就表示成功