学习支配过程,在办理问题中提升自己
练习利用docker
在gitee中看到,希望体验一下都有什么功能,先容中后台功能很多

本次在ubuntu22.4.0版本的linux中搭建,个中ubuntu是从vmware的虚拟机中创建的
ubuntu的下载进入阿里云镜像下载页 阿里巴巴开源镜像站-OPSX镜像站-阿里云开拓者社区 (aliyun.com)
找到相应的安装地址 oldubuntu-releases安装包下载_开源镜像站-阿里云 (aliyun.com)
选择须要的版本进行下载安装
二、OneBlog搭建步骤解释:
为学习研究,本次安装采取的是docker安装,为学习dockerfile的利用,编排了脚本进行一键安装,由于是一个新的linux镜像,所需软件都是从头开始安装
大概过程为:安装git
配置git参数
配置git密钥
拉取代码
安装maven
安装docker
编译代码并打jar包
编译docker镜像
启动docker项目
本次安装的所有文件:须要提前创建好目录
DBlog是git代码存放目录
三、搭建过程中碰着的问题问题1:gitee代码拉取问题须要注册gitee并创建代码仓库,须要将密钥放入到gitee中
问题2:安装软件问题安装docker和maven时可能碰着问题,根据提示办理
问题3:脚本实行权限问题如果无法实行须要进行授权 chmod +x
四、编写的代码片段packageAndDeploy.sh 编译打包并实行发布read -p '是否重新拉取代码?[y/n]' repeatif [ "${repeat}" = "y" -o "${repeat}" = "Y" ];then# 导航到本地仓库目录cd ./DBlog# 拉取最新代码git pull origin mastercd ..firead -p '是否重新实行 mvn package?[y/n]' repeatif [ "${repeat}" = "y" -o "${repeat}" = "Y" ];thencd ./DBlogmvn -X clean package -Dmaven.test.skip=truecd ..STATUS=$?if [[ $STATUS == 0 ]]; then./deploy.shelseechoError "打包失落败"exit 1fielse./deploy.shfi
deploy.sh 编译docker镜像并发布到docker上ONEBLOG_DIR=${PWD}/DBlogWORK_DIR=${PWD}cd ${WORK_DIR}echo "停滞compose...."docker-compose downecho "停滞完成...."cd ${WORK_DIR}/blog-webecho "开始删除blog-web>>>>"docker rmi blog-web:latestecho "编译blog-web..."cp ${ONEBLOG_DIR}/blog-web/target/blog-web.jar ./docker build -t blog-web .cd ${WORK_DIR}/blog-adminecho "开始删除blog-admin>>>>"docker rmi blog-admin:latestecho "编译blog-admin..."cp ${ONEBLOG_DIR}/blog-admin/target/blog-admin.jar ./docker build -t blog-admin .cd ${ONEBLOG_DIR}/docs/docker/mysql/echo "开始删除blog-mysql>>>>"docker rmi blog-mysql:latestecho "编译blog-mysql..."docker build -t blog-mysql .cd ${WORK_DIR}echo "启动做事>>>>>>"docker-compose up -d
.env 环境变量参数 - 来自原作者项目中MYSQL_ROOT_HOST=%# 默认的事情目录, 默认是 windows 盘符,如果运行到其他操作系统中时,把稳修正该配置ONEBLOG_APP_DIR=/home/liuxiaodong/oneblog/data#git 目录ONEBLOG_DIR=/home/liuxiaodong/oneblog/DBlog# 对外暴露的端口# redisONEBLOG_EXPORT_PORT_REDIS=63799# mysqlONEBLOG_EXPORT_PORT_MYSQL=33066# blog-admin,默认为 8085ONEBLOG_EXPORT_PORT_ADMIN=8085# blog-web,默认为 8443ONEBLOG_EXPORT_PORT_WEB=8443# redis 配置ONEBLOG_REDIS_DATABASE_INDEX=1ONEBLOG_REDIS_HOST=blog-redisONEBLOG_REDIS_PORT=6379# 建议修正为复制密码ONEBLOG_REDIS_PASSWORD=password# mysql 配置ONEBLOG_DATASOURCE_HOST=blog-mysqlONEBLOG_DATASOURCE_PORT=3306ONEBLOG_DATASOURCE_DATABASE_NAME=dblogONEBLOG_DATASOURCE_USERNAME=root# 建议修正为复制密码ONEBLOG_DATASOURCE_PASSWORD=password# email 配置ONEBLOG_MAIL_HOST=ONEBLOG_MAIL_PORT=465ONEBLOG_MAIL_USERNAME=ONEBLOG_MAIL_PASSWORD=# oneblog 自定义配置# 是否启用 kaptcha 验证码ONEBLOG_APP_ENABLE_KAPTCHA=false# 是否启用自动校验交情链接的功能# 请选择打开,一旦打开,每晚凌晨12点会自动检讨友联,对付不包含本站链接的网站实檀越动封禁# 目前暂时没实现白名单的功能ONEBLOG_APP_ENABLE_CHECK_LINK=false# 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)ONEBLOG_APP_ENABLE_PRINT_CONFIG=true# 是否启用 redis 切面缓存。# 优先级高于 {@link com.zyd.blog.business.annotation.RedisCache#enable()} 表明的配置# 开拓环境建议关闭,线上环境建议打开ONEBLOG_ENABLE_REDIS_CACHE=true
Dockerfile blog-amdin# 环境版本FROM openjdk:8u212-jreMAINTAINER lxddemm@163.com# JVM调优参数等额外参数ENV PARAMS ""ENV TZ=PRCRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 指定容器端口EXPOSE 8085# 添加本地 JAR 到容器内COPY blog-admin.jar .# 容器启动后实行的命令ENTRYPOINT ["java", "-jar","blog-admin.jar" , "-Djava.security.egd=file:/dev/./urandom","$PARAMS"]
Dockerfile blog-web# 环境版本FROM openjdk:8u212-jreMAINTAINER lxddemm@163.com# JVM调优参数等额外参数ENV PARAMS ""ENV TZ=PRCRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 指定容器端口EXPOSE 8085# 添加本地 JAR 到容器内COPY blog-web.jar .# 容器启动后实行的命令ENTRYPOINT ["java", "-jar","blog-web.jar" , "-Djava.security.egd=file:/dev/./urandom","$PARAMS"]
nginx配置server {listen 80;# listen [::]:80;server_name nas.nankle.top;location / {proxy_pass http://192.168.31.54:8443; # 本地程序代理proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
docker-compose.yml docker项目文件
# 通过本地编译的形式运行# 可以随时修正源代码后 repackage 然后重新构建本地镜像version: '3.3'services:# Redisblog-redis:image: redisrestart: alwayscontainer_name: blog-redishostname: blog-rediscommand: redis-server --appendonly yes --requirepass ${ONEBLOG_REDIS_PASSWORD} --bind blog-redisports:- 63799:6379volumes:- ${ONEBLOG_APP_DIR}/redis/:/data/healthcheck:test: [ "CMD", "redis-cli" ]timeout: 20sretries: 10networks:- oneblogblog-nginx:image: nginxcontainer_name: blog-nginxports:- "80:80"- "443:443"volumes:- ${ONEBLOG_APP_DIR}/nginx/nginx.conf:/etc/nginx/nginx.conf- ${ONEBLOG_APP_DIR}/nginx/html:/etc/nginx/html- ${ONEBLOG_APP_DIR}/nginx/log:/var/log/nginx- ${ONEBLOG_APP_DIR}/nginx/cert:/etc/nginx/cert- ${ONEBLOG_APP_DIR}/nginx/conf.d:/etc/nginx/conf.drestart: alwaysnetworks:- oneblog# MySQLblog-mysql:image: blog-mysql#build: ${ONEBLOG_DIR}/docs/docker/mysqlenvironment:MYSQL_ROOT_PASSWORD: ${ONEBLOG_DATASOURCE_PASSWORD}TZ: Asia/Shanghairestart: alwayscontainer_name: blog-mysqlhostname: blog-mysqlvolumes:- ${ONEBLOG_APP_DIR}/mysql:/var/lib/mysqlports:- 33066:3306command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_cihealthcheck:test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]timeout: 20sretries: 10networks:- oneblog# admin 做事blog-admin:image: blog-admin#build: ../../blog-adminrestart: alwayscontainer_name: blog-adminhostname: blog-adminenv_file:- .envvolumes:- ${ONEBLOG_APP_DIR}:/var/tmp/oneblogdepends_on:blog-redis:condition: service_healthyblog-mysql:condition: service_healthylinks:- blog-redis- blog-mysqlports:- 8085:8085networks:- oneblog# admin 做事blog-web:image: blog-web#build: ../../blog-webrestart: alwayscontainer_name: blog-webhostname: blog-webenv_file:- .envvolumes:- ${ONEBLOG_APP_DIR}:/var/tmp/oneblogdepends_on:blog-redis:condition: service_healthyblog-mysql:condition: service_healthylinks:- blog-redis- blog-mysqlports:- 8443:8443networks:- oneblognetworks:oneblog:driver: bridge
五、一键支配脚本分享start.sh 主脚本
echo "开始更新软件包>>>>>>>>>"sudo apt updateecho "开始安装git>>>>>>>>>"sudo apt install gitecho "配置git参数>>>>>>>>>"git config --global user.name 'nankle' git config --global user.email 'lxddemm@163.com'echo "天生git密钥>>>>>>>>>"ssh-keygen -t rsa -C"lxddemm@163.com"echo "查看天生的密钥信息>>>>>>>>>"gedit ~/.ssh/id_rsa.pubecho "将密钥放到gitee中>>>>>>>>>"read -n 1 -spwdecho "开始拉取项目代码>>>>>>>>>"git clone https://gitee.com/nankle/DBlog.gitecho "拉取代码完成>>>>>>>>>"echo "开始安装maven>>>>>>>>>"sudo apt install mavenmvn -versionecho "开始安装docker>>>>>>>>>"sudo apt install docker.ioecho "启动docker>>>>>>>>>"sudo systemctl start dockerecho "设置docker开机自启动>>>>>>>>>"sudo systemctl enable dockerecho "开始安装curl>>>>>>>>>"sudo apt install curlecho "开始安装/docker-compose>>>>>>>>>"sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composeecho "开始配置docker镜像源>>>>>>>>>"echo '{"registry-mirrors": ["https://docker.m.daocloud.io"]}' | sudo tee /etc/docker/daemon.json# 重新加载Docker配置echo "重启docker>>>>>>>>>"sudo systemctl daemon-reloadsudo systemctl restart dockerecho "实行编译并发布docker>>>>>>>>>"./packageAndDeploy.sh
脚本利用解释与把稳事变:
安装时直接在住目录实行./start.sh
git仓库须要修正本钱身的
.env中的变量须要提前修正
六、总结
oneblog是一个很随意马虎搭建的博客,原作者也对项目进行了docker的适配,支配过程中很少碰着问题
希望本文章可以帮助到大家,都能考试测验搭建自己的个人博客
附录
官方网站:OneBlog (zhyd.me)