20191209:综合成果汇总报告
使用的工具
前言
之前 Blog 的程序一直在使用 Tale,在使用 Tale 的过程中遇到了不少 Bug,会导致文章无法正常发布;但最近不短的一段时间里 Tale 都不更新了,而且原作者的 Tale 站点也已经 502 了,让人怀疑 Tale 是不是已经死了?
于是找到了 Solo,经过简单试用,Solo 与 Tale 功能类似,有些方面甚至是更加强大,主要是在发布文章时没有再遇到无法发布的问题了。
开始着手部署到个人的阿里云服务上去。
在部署的过程中,因为 ECS 购买的是最低配置的服务,而 Solo 需要使用到 MySQL 和 Docker,这导致 Docker 无法在配置如此之低的主机上运行,只能再想曲线救国的办法 ... ...
曲线救国(概述)
下面把路线大概描述一下:
- 通过浏览器访问域名
- 域名解析到云主机上面
- 云主机通过 Nginx 通过域名条件反向代理跳转到内网穿透服务端
- 内网穿透服务通过端口判断跳转到客户端
实施(分步骤描写)
1. 本地主机创建并运行 Docker 的 MySQL 容器
这一步直接给出命令,具体可以查看之前的文章《基于 Docker 的 MySQL 5.6 主从配置》和《通过 Docker 单表数据恢复 MySQL 数据》。
这里给数据库容器取名《solo_db》,端口映射到3303,分别将 conf、logs、data 映射到文件夹。
docker run -p 3303:3306 \
--name solo_db \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=******** \
-d mysql:5.6
容器启动后,需要通过命令或数据库工具创建数据库,(库名 solo,字符集使用 utf8mb4,排序规则 utf8mb4_general_ci)。
2. 本地主机创建并运行 Docker 的 Solo 容器
获取最新镜像
docker pull b3log/solo
启动容器
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3303/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=
3. 云主机安装、运行、配置穿透服务器
lanproxy 服务程序是 Java 程序, 所以需要安装 Java 环境。
安装
安装 Java 环境后,登录 lanproxy 的 GitHub 页面,下载内网穿透服务端程序,解压即完成安装。
启动服务之前,先看一下配置文件 vi proxy-server-0.1/conf/config.properties
。
server.bind=0.0.0.0
// 与代理客户端通信端口
server.port=9000
// ssl相关配置
server.ssl.enable=true
server.ssl.bind=0.0.0.0
server.ssl.port=4993
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
server.ssl.needsClientAuth=false
// WEB在线配置管理相关信息
config.server.bind=0.0.0.0
config.server.port=8090
config.admin.username=admin
config.admin.password=admin
运行
运行 proxy-server-0.1/bin/startup.sh
即完成服务启动,启动后使用浏览器访问 http://xxx.xxx.xxx.xxx:8090/
就可以打开WEB在线配置管理页面。
配置服务
进入管理页面,点击【添加客户端】,输入客户端名称,并输入/生成客户端密钥,完成添加客户端。
点开配置管理中的客户端名称,【添加配置】。
4. 本地主机安装、配置、运行穿透客户端
安装
同上,登录 lanproxy 的 GitHub 页面,下载内网穿透客户端程序,解压即完成安装。
配置
# 在服务端【添加客户端】时填写或生成的 Key
client.key= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456
# 服务端 IP
server.host=xxx.xxx.xxx.xxx
# default ssl port is 4993
server.port=9000
运行
启动客户端服务:proxy-java-client-0.1/bin/startup.sh
停止客户端服务:proxy-java-client-0.1/bin/stop.sh
5. 云主机 Nginx 到穿透服务器
修改 Nginx 配置文件,添加服务vi /usr/local/nginx/conf/nginx.conf
...
server {
listen 80;
server_name www.aclyyx.com;
location / {
proxy_pass http://127.0.0.1:9001;
}
}
...
重新加载配置 /usr/local/nginx/sbin/nginx -s reload
6. 域名解析到云主机
这个就不用多说了,就是修改域名跳转到云服务上面。
更多
HTTPS 证书申请
SSL 证书可以到阿里云或腾讯云申请免费(个人)SSL证书
腾讯云SSL证书-申请位置
阿里云云盾证书服务-申请位置
具体可以看【这里】。
Nginx 配置 HTTPS 访问
拿到 SSL 证书文件,上传到 Nginx 服务所在的服务器上,之后修改 Nginx 配置文件 vi /usr/local/nginx/conf/nginx.conf
,添加 SSL 相关配置信息,如下。
...
server {
listen 443;
server_name www.aclyyx.com;
ssl on;
ssl_certificate /root/server/ssl/1_xxxxxx_bundle.crt;
ssl_certificate_key /root/server/ssl/2_xxxxxx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:9001;
}
}
...
配置后,重新加载 Nginx 配置 /usr/local/nginx/sbin/nginx -s reload
。
在加载配置时可能会报错,错误信息【缺少ngx_http_ssl_module】,需要使用 Nginx 源码配置模块,重新 make
一下并替换 nginx 文件。
# 停止 Nginx 服务
/usr/local/nginx/sbin/nginx -s stop
./configure --with-http_ssl_module
上面的命令为 Nginx 添加 SSL 模块,执行时也可能还会报错,错误信息【./configure: error: SSL modules require the OpenSSL library.】,如果有此错误执行 yum -y install openssl openssl-devel
排除万难后,开始 configure
和 make
Nginx。
$ ./configure
$ ./configure --with-http_ssl_module
$ make
备份 Nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
将新的 Nginx 覆盖旧安装目录
cp objs/nginx /usr/local/nginx/sbin/nginx
# 启动 Nginx 服务
/usr/local/nginx/sbin/nginx -s start
完成
👍 👍 👍 👍 👍
参考
B3log 开源
从零开始安装 solo 博客
Solo 用户指南
腾讯云:域名验证指引
CentOS下配置Nginx的https时报错:缺少ngx_http_ssl_module
Nginx配置SSL报错 nginx: [emerg] unknown directive "ssl"
- 0
- 0
-
分享