"概述 本着学习 Docker 的技术,无意中找到[链接]写的一篇“使用 docker 搭建 solo 博客系统”, 以前搭建的博客都是基于 WordPress 或使用 Hero 基于 github 的博客,感谢 dafsic 和 solo 开源博客系统!本文基于 dafsic 进行适当的增删并添加生成 SSL 证书,使 .."

Docker 搭建 HTTPS solo 博客系统

本贴最后更新于 191 天前,其中的信息可能已经时移世易

概述

本着学习 Docker 的技术,无意中找到dafsic写的一篇“使用 docker 搭建 solo 博客系统”, 以前搭建的博客都是基于 WordPress 或使用 Hero 基于 github 的博客,感谢 dafsic 和 solo 开源博客系统!本文基于 dafsic 进行适当的增删并添加生成 SSL 证书,使用 https 访问 solo 博客系统。

方法

一、 准备环境

主机和域名:选择腾讯云,感谢 TVP 组织的赞助,选择的主机是 1 核、1G、50G 的香港主机,操作系统 ubuntu 16.04;证书选择免费的 Let’s Encrypt。

二、 安装 docker-ce

参考官方文档https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

大致安装步骤如下,使用在线安装模式: 设置存储库

1. 更新 apt 包索引

$ sudo apt-get update

2. 安装包以允许 apt 通过 HTTPS 使用存储库

$ sudo apt-get install
apt-transport-https
ca-certificates
curl
software-properties-common

3. 添加 Docker 的官方 GPG 密钥

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4.9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的最后 8 个字符,验证您现在拥有带指纹的密钥

$ sudo apt-key fingerprint 0EBFCD88

pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb) docker@docker.com sub 4096R/F273FCD8 2017-02-22

5. 使用以下命令设置稳定存储库

$ sudo add-apt-repository
“deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable”

安装 DOCKER CE

1. 更新 apt 包索引

$ sudo apt-get update

2. 安装最新版本的 Docker CE

$ sudo apt-get install docker-ce

3. 验证安装版本

$ sudo apt-get install docker-ce=

4. 通过运行 hello-world 映像验证是否正确安装了 Docker CE

$ sudo docker run hello-world

三、 安装数据库 mysql

docker run --name database -e MYSQL_ROOT_PASSWORD=password -v /web/mysql/data:/var/lib/mysql -v /web/mysql/conf:/etc/mysql/conf.d -d mysql:5.7.20

上面的命令在 bash 中执行,第一次会从 docker hub 下载 mysql:5.7.20 这个镜像,所以你的网络要能访问 docker hub。选项说明如下

四、 配置数据库

进入数据库容器:docker exec -it database bash 登陆数据库:mysql -uroot -p,输入密码 password,执行下面的语句

CREATE DATABASEsoloDEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'solouser'@'%' identified BY 'solo@pwd'; GRANT ALL ON solo.* TO 'solouser'@'%'; FLUSH PRIVILEGES;

五、 下载最新的 Solo 包

最新版本是 solo-2.9.5.war,下载地址:https://pan.baidu.com/s/1dzk7SU,下载完成上传到 /web/solo/ 目录下

六、 安装 tomcat

docker run --name tomcat -p 8080:8080 -v /web/solo:/bitnami/tomcat/data --link database:database -d bitnami/tomcat:9.0

选项说明如下:

七、 设置配置文件并访问

vim /web/solo/solo-2.9.5/WEB-INF/classes/latke.properties 编辑 latke.properties, 修改serverHost=0755yang.com,修改serverPort=8080

执行完上面的步骤,重启 tomcat 容器(docker restart tomcat), 在浏览器中可以正常访问你的博客,我的是http://0755yang.com:8080/solo-2.9.5, 对数据库进行初始化。为了不加 solo-2.9.5 这样的路径,我将 /web/solo/solo-2.9.5 路径下的文件都 mv 到 /web/solo/ROOT/ 路径下了 ( 注意,移动前要先删除 tomcat 默认的文件和目录rm -rf /web/solo/ROOT/* ,然后再执行移动mv -f /web/solo/solo-2.9.5/* /web/solo/ROOT/),然后可以不加子目录访问http://0755yang.com:8080

八、 申请 Let’s Encrypt SSL 证书

申请 Let’s Encrypt SSL 证书,也是采用 docker 的方式,参考文章https://www.jianshu.com/p/5afc6bbeb28c

–先停止占用 80 端口的容器(如果有的话) docker stop tomcat nginx –申请 SSL 证书 docker run --rm -p 80:80 -p 443:443 \ -v /etc/letsencrypt:/etc/letsencrypt \ quay.io/letsencrypt/letsencrypt auth \ --standalone -m stedey.sheng@gmail.com --agree-tos \ -d 0755yang.com –申请完成, 证书保存目录 /etc/letsencrypt - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/0755yang.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/0755yang.com/privkey.pem

九、 安装 nginx 并配置 SSL 证书

安装 nginx 前先创建目录 mkdir -p /web/nginx/conf,mkdir -p /web/nginx/log,创建 nginx.conf(/web/nginx/conf/nginx.conf),内容如下: server { listen 80; listen 443 ssl; server_name 0755yang.com; ssl_certificate /etc/letsencrypt/live/0755yang.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/0755yang.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_pass http://tomcat:8080; } } 创建完目录和 nginx.conf 文件后,安装 nginx 并配置 SSL 证书 docker run --name nginx -d -p 80:80 -p 443:443 \ --link tomcat:tomcat \ -v /web/nginx/conf:/etc/nginx/conf.d \ -v /web/nginx/log:/var/log/nginx \ -v /etc/letsencrypt:/etc/letsencrypt nginx

十、 修改 solo 配置文件支持 https

vim /web/solo/ROOT/WEB-INF/classes/latke.properties 编辑 latke.properties 文件,修改serverScheme=https,serverHost=0755yang.com,serverPort=443

重启 tomcat,nginx 容器生效:

docker restart tomcat nginx

十一、 修改 solo 配置文件支持上传本地图片

如果你想上传文件到服务器本地,请将 solo.properties 中的 uploadDir 项配置为要服务器上保存上传文件的目录路径,比如 /home/solo/upload/,D:\solo\upload\。请注意,一旦配置了该项,则优先使用文件上传服务器本地,不会上传到七牛云。

备注

现在可以通过https://0755yang.com访问博客小站了 ~~,有一点不完美,输入0755yang.com不能自动跳转到https://0755yang.com,未完待续!

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销, 可以很容易地在机器和数据中心中运行。最重要的是, 他们不依赖于任何语言、框架或包括系统。

    164 引用 • 309 回帖 • 737 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    609 引用 • 4687 回帖 • 720 关注
感谢    关注    收藏    赞同    反对    举报    分享
回帖    
请输入回帖内容...