部署概述

安装docker --> docker安装mysql --> docker安装solo --> docker安装nginx -->docker安装lute如果不做https的话,只在本地测试,那么其实又MySQL和solo就够了,不需要nginx,nginx的作用只是将https请求代理至solo


架构大概就上面这样,访问流量通过公网到系统网络,再到docker网桥,然后访问nginx 443端口,nginx将流量转到本地的80端口,solo监听在80端口,然后solo通过JDBC协议访问MySQL数据库,nginx,solo,MySQL都是用的主机网络,所以在主机上都会监听对应端口。

安装docker
docker分为企业版(docker-ee)和社区版(docker-ce),阿里的Centos镜像源默认是docker-1.13,我们使用的是docker社区版,docker-ce-18.06是18年6月发布的,目前大多数企业都使用的这个版本,或者是docker-ce-18.09.

  • 添加docker镜像源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 查看所有docker-ce版本
    yum list all --showduplicates docker-ce

  • 安装docker-ce-18.06

yum install docker-ce-18.06.1.ce-3.el7
  • 启动docker并设置为开机自启动
systemctl start docker
systemctl enable docker
  • 准备镜像
docker pull b3log/solo
docker pull mysql:5.6
docker pull nginx
docker images   #查看

安装MySQL

# 安装mysql:5.6,直接docker run 他会自动去官方镜想下载
# MYSQL_ROOT_PASSWORD=你的数据库密码
docker run --name mysql -p 8306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

-p 8306:3306:8306是宿主机监听的端口,3306是MySQL容器监听的端口,因为我机器上有WordPress,所以80``3306是被占用的,所以换了一个,如果你本机3306端口没有被占用,就都写成3306就好

  • 创建数据库
# docker安装的mysql默认允许远程连接,可以使用xshell等软件连接数据库
# 进入容器mysql
docker exec -it mysql bash# 进入数据库 p后面跟你的密码
mysql -uroot -p123456# 创建数据库(数据库名:solo;字符集utf8mb4;排序规则utf8mb4_general_ci)
create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 出现Query OK, 1 row affected (0.00 sec)表示成功
#退出数据库
exit
#退出容器
exit

docker安装solo

  • 如果你本机的80端口被占用了,可以用下面命令启动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:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"  \
b3log/solo --listen_port=8088 --server_scheme=http --server_host=192.168.16.4 --server_port=8088
参数说明--env JDBC_PASSWORD="123456" 将 123456 换成你的密码
--listen_port=8088 容器监听的端口
--server_scheme=http 请求方式,暂时使用 http,后面我们会换成 https
--server_host=192.168.16.4 你云主机的IP,如果你有域名可以写域名
--server_port=8088 云主机监听的端口
注意:listen_port的端口要和server_port端口一致,不然进入网页可能会出现 Latke 配置错误
命令成功执行没有报错的话,通过docker ps查看执行的容器列表中是否存在 solo,存在这表示启动成功,直接访问你的公网IP加:8088 即可访问你的博客,http://180.76.112.111:8088
  • 如果要使用https,就需要修改一下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:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"  \
solo \
--listen_port=8080 \
--server_scheme=https \
--server_host=vlog.issue98.com \
--server_port=

–server_scheme=https使用https协议,因为使用了https协议,所以就要配置nginx代理

docker安装nginx

# 切换到服务器根目录
cd /
# 创建主目录
mkdir dockerData
# 创建文件
mkdir dockerData/nginx dockerData/nginx/conf dockerData/nginx/logs dockerData/nginx/www dockerData/nginx/ssl

dockerData/nginx 用于存放 docker 下 nginx 自定义文件
dockerData/nginx/conf存放 nginx 配置文件
dockerData/nginx/log 存放 nginx 日志文件
dockerData/nginx/www 存放 nginx 访问的资源文件
dockerData/nginx/ssl 存放 ssl 证书

  • 启动 nginx
docker run --name nginx -p 8001:80 -d --rm nginx
由于solo使用了宿主机的80端口,所以这里使用宿主机的8001端口
  • 导出配置文件
docker cp nginx:/etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf
#导出配置文件 nginx.conf
docker cp nginx:/etc/nginx/conf.d /dockerData/nginx/conf/conf.d
#导出配置文件 nginx.conf

执行docker stop nginx,会自动删除现在的 nginx 容器,然后执行如下命令

  • 启动一个 nginx 容器
docker run -d -p 80:80 -p 443:443 --name nginx-1 \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/ssl:/ssl/ \
-v /dockerData/nginx/www:/usr/share/nginx/html \
-v /dockerData/nginx/logs:/var/log/nginx nginx
  • nginx配置文件
server {listen       443;server_name  vlog.issue98.com;ssl on;#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main;ssl_certificate /ssl/vlog.pem;          #两个证书文件的名字ssl_certificate_key /ssl/vlog.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;location / {proxy_pass http://vlog.issue98.com:8080;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}
server{listen 80;server_name vlog.issue98.com;rewrite ^(.*) https://$host$1 permanent;
}

下载证书,nginx类型,然后放到dockerData/nginx/ssl目录下,名字和nginx配置文件里的匹配
docker 启用LUTE

  • 获取最新镜像
docker pull b3log/lute-http
  • 启动容器
docker run --detach --rm --network=host b3log/lute-http
  • 停止 solo
docker stop solo
  • 删除 solo
docker rm solo

运行下列命令,重启 solo,注意最后添加–lute_http=http://127.0.0.1:8249
如果你已经修改了solo的配置,添加了自己的文章等,不想丢失数据,可以用docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]命令来保存solo镜像到本地

例如

docker commit e044f5c083cc solo-vlog:0.1
# 然后启动的时候将b3log/solo换成solo-vlog:0.1就行,CONTAINER可以通过docker ps来查看

启动LUTE

docker run --detach --name solo-lute --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:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
solo-sibo:0.2 \
--listen_port=8080 --server_scheme=https --server_host=vlog.issue98.com \
--server_port= \
--lute_http=http://127.0.0.1:8249

solo开源个人博客搭建记录相关推荐

  1. 我的个人博客搭建记录

    6/13更新 绑定个人博客到域名 rebootcat.com 前言 本篇博客旨在备忘,并记录了自己折腾了3,4天后顺利搭建自己的个人博客过程中碰到的一部分问题. 搭建个人独立博客有很多种方法,我暂时采 ...

  2. 个人博客搭建记录 Hexo+Butterfly+Github Page+Coding

    1.前言 其实一直有搭建博客的想法,但直到今天才开通了第一个博客,还是利用上假期的闲工夫.在大佬们博文的帮助下,小站初具模样,这里对他们致以万分感谢.下面就搭建过程进行简单记录.点击前往我的小站

  3. 博客搭建攻略(一):平台选择

    本系列文章预告 博客搭建攻略(一):平台选择 博客搭建攻略(二):工具推荐 博客搭建攻略(三):创造收益 如您对本系列内容感兴趣,就点击标题下方的程序猿DD关注我吧~ 前言 虽然在大学生涯就有开始写技 ...

  4. hexo博客搭建及主题优化(一)

    个人博客 个人博客: https://www.crystalblog.xyz/ 备用地址: https://wang-qz.gitee.io/crystal-blog/ HexoBlog 个人博客 介 ...

  5. 好用的开源个人博客推荐

    原文网址:好用的开源个人博客推荐_IT利刃出鞘的博客-CSDN博客 简介 本文推荐个人从几十款开源个人博客中精选的几款开源博客. halo Github 地址 :https://github.com/ ...

  6. 【博客搭建2】Sakura主题的配置

    提示:该文章适合纯新手,效果可进入我的博客bigdataxy.cc进行查看. [博客搭建2]Sakura主题的配置 主题下载安装 github下载安装包 相关文件介绍 CDN搭建 第一步:创建gith ...

  7. Hexo个人博客搭建历程

    环境配置 Github的创建和配置 安装Git 安装Node.js 安装Hexo Hexo主题设置 主题1:stun 安装 使用 更新 本地效果 主题优化 主题2:black-blue 安装 使用 更 ...

  8. Typecho博客搭建教程

    目录 Typecho博客搭建教程 一.搭建博客前的准备工作 1.购买阿里云轻量应用服务器 2.安装宝塔面板 3.域名 二.Typecho下载及安装 1.下载Typecho: 2.上传网站到服务器 3. ...

  9. [Hello My Blog]基于腾讯云的WordPress个人技术博客搭建

    下午花了两个多小时的时间搭建了自己的第一个博客,本来想直接转载一份别人的教程作为第一篇文章试试水,但是自己的在搭建的过程中也遇到了一些问题,所以决定自己写一篇做一个简单的分享顺便避免小白白再踩坑吧.博 ...

最新文章

  1. python项目如何打开_python如何打开_linux如何打开python_python程序打开 - 云+社区 - 腾讯云...
  2. 谷歌Chrome浏览器添加新技术 可防止广告主追踪用户
  3. SCSM 2012 SP1创建SCOM连接器
  4. python怎么运行yaml配置文件_cfg4py:一个严肃的Python配置模块应有的风格
  5. 串口发送和接受字符串,AD转换多通道读取
  6. 四、python沉淀之路--元组
  7. 圣思园java.doc_北京圣思园java课堂笔记.doc
  8. 使用Dev-C++查看vector数组中的变量值
  9. 个人管理 - 我是这样偷着做架构的
  10. gdal 使用 无法解析的外部_【小马哥学习笔记】STM32G071 PD0 PD2引脚使用注意事项...
  11. 使用Mybatis实例
  12. 电脑使用技巧提升篇2:修改电脑桌面固定图标
  13. robots.txt详解
  14. zzulioj 1038 python 绝对值最大
  15. YOLOv4 绘制PR曲线
  16. android视频播放框架Vitamio
  17. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...
  18. 关于 python ImportError: No module named 的问题及解决办法
  19. word怎么删除参考文献的横线_word2016怎么去掉引用参考文献的横线?
  20. Linux的公平调度

热门文章

  1. java中的开方方法_java 大整数开方模板与常用方法
  2. pd.series.dt.date()
  3. while条件测试和until条件测试和for循环流程图
  4. mmcv和openCV两个库imcrop()和imresize()方法的对应【基础分析】
  5. 女性安全期测试(JS)
  6. SIM A7670C MQTT
  7. Android数据存储与访问(10级学员张晓丛)
  8. flutter 集成友盟推送遇到的一个小issue
  9. vue上传图片一(结合axios)
  10. Android 屏幕适配(修改系统字体大小、显示大小、修改分辨率相关适配)