如何利用solo搭建自己的博客
主页效果
后台管理发布文章界面:
自带管理功能,使用github账号登陆即可。
Solo是一款小而美Java编写的博客系统,功能丰富,插件化,皮肤可选可定制,管理方便,社区活跃。
本文章介绍利用Solo开源博客系统在云服务器上搭建自己的博客,让我开始吧。
前提,把需要公网IP访问的端口,需要在控制台加到安全组里放行。
docker搭建
第一步就是安装docker
yum install docker.x86_64 -y
安装完成后启动docker
systemctl start docker
安装mysql
参考历史文章:
mysql镜像安装
比如用上面几行命令部署mysql,把容器内3306端口映射到宿主机的3307端口。到时候就可以用{云服务器公网IP:3307访问数据库},mysql部署好后,先手动建库(库名 solo,字符集使用 utf8mb4,排序规则 utf8mb4_general_ci)
启动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://47.91.6.217:3307/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=47.91.6.217
- –detach即-d参数指定后台运行,
- –name指定容器名称,
- –env指定solo系统运行数据库参数,
- –listen_port:进程监听端口
- –server_scheme:最终访问协议,如果反代服务启用了 HTTPS 这里也需要改为 https
- –server_host:最终访问域名或公网 IP,不要带端口
- –server_port:最终访问端口,使用浏览器默认的 80 或者 443 的话值留空即可
使用的镜像是b3log/solo最新版,这里比如,47.91.6.217是我服务器公网IP,用47.91.6.217:8080访问:
k8s集群中部署
mysql和solo都使用pod方式部署,分别创建mysql deployment管理pod,mysql service提供service clusterIP供solo调用;创建solo deployment管理solo服务,solo service提供简单的服务发现,solo ingress提供域名配置,入口负载均衡。如果没有域名,可以直接通过NodePort service暴露端口。
mysql的deploy:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql
spec:
replicas: 1
template:
metadata:
labels:
name: mysql
spec:
containers:
- name: mysql
image: mysql:5.7.28
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "password"
mysql的service:
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
name: mysql
spec:
type: ClusterIP
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: http
selector:
name: mysql
solo的deploy:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: solo
spec:
replicas: 1
template:
metadata:
labels:
name: solo
spec:
containers:
- name: solo
image: b3log/solo
imagePullPolicy: IfNotPresent
args: ["--server_scheme=http", "--server_host=blog.liabio.cn"]
ports:
- containerPort: 8080
env:
- name: RUNTIME_DB
value: MYSQL
- name: JDBC_USERNAME
value: solo
- name: JDBC_PASSWORD
value: solo-liabio
- name: JDBC_DRIVER
value: "com.mysql.cj.jdbc.Driver"
- name: JDBC_URL
value: "jdbc:mysql://10.100.133.125:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
solo的service:
apiVersion: v1
kind: Service
metadata:
name: solo
labels:
name: solo
spec:
type: ClusterIP
ports:
- port: 8080
protocol: TCP
targetPort: 8080
name: http
selector:
name: solo
这里我用到的是ClusterIP的service,没有用到NodePort的service,是因为准备用ingress-nginx做负载。
ingress-nginx的部署方式可以参考历史文章:
k8s中负载均衡器【ingress-nginx】部署
solo的ingress:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: solo
spec:
rules:
- host: blog.liabio.cn
http:
paths:
- backend:
serviceName: solo
servicePort: 8080
path: /
由于ingress-nginx组件使用hostNetwork方式部署,所以可以通过公网IP:80端口访问。
备注:如果要部署k8s,1核2G可能扛不住,至少得2核4G
作者简洁
作者:小碗汤,一位热爱、认真写作的小伙,目前维护原创公众号:『我的小碗汤』,专注于写golang、docker、kubernetes等知识等提升硬实力的文章,期待你的关注。 转载说明:务必注明来源(注明:来源于公众号:我的小碗汤, 作者:小碗汤)
相关文章
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (八)
- 博客开发系列(一)
- hello.cpp 第一个C++程序(本博客没有特指都是以QT测试)
- 博客园博客如何设置不显示日历,公告,相册,收藏夹等
- Office Word如何直接发布博客文章到博客园等论坛
- 一个比较牛逼人的博客
- 解决WordPress迁移到linux中博客显示空白
- 关于Android studio 升级到2021.1.1(大黄蜂)创建项目,兼容旧项目遇到的问题-CSDN博客
- 关于csdn博客中案例效果的动态演示
- VB编程:利用数组统计文字段落数-31_彭世瑜_新浪博客
- VB编程:利用二位数组MSHFlexGrid表格添加数据-33_彭世瑜_新浪博客
- 团队博客2
- BIT祝威博客汇总(Blog Index)
- Android官方源码&&资料&&博客
- 利用京东云擎架设免费Wordpress 博客(git方式)
- 【新星计划】如何写好你的博客,涨粉技巧总结
- Hexo+GithubPage搭建Fan主题的博客(11)为Hexo博客的valine评论系统配置邮件通知
- 【博客619】PromQL如何实现Left joins以及不同metrics之间的复杂联合查询
- 【博客606】k8s如何查看pod崩溃前的日志及其原理
- HEXO搭建博客网站教程全集汇总