前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【原创】博客重构

【原创】博客重构

作者头像
零点
发布2024-04-04 09:49:21
620
发布2024-04-04 09:49:21
举报
文章被收录于专栏:微科技

前言

科技热由微科技重构而来。由于微科技采用PHP技术,而博主本人并不会PHP,对于博客的维护很不方便。由此决定进行重构。科技热则采用JAVA+VUE技术编写,博主本身会一点JAVA,对VUE也有一定的了解,便于后续对bug的修复。 介绍下这款博客源码,博客源码取自源码地址,大家有需要可以下载。采用组件包含如下: JDK 1.8 MySQL 5.5.0 Redis 6.0.5 Elasticsearch 7.9.2 这些都可以通过Docker容器进行安装,本章将重点介绍如何用源码进行安装重构。

准备工作

一台已经装过docker的服务器,可以自行安装或者使用云服务商提供的服务器环境,本章采用的是由腾讯云提供的带有Docker环境的Centos 7服务器。

安装环境

在安装环境前,请先检查Docker是否安装成功,并使用命令 docker version查看安装的docker版本。

  1. 创建自定义网络。docker安装容器时会自动给每个容器分配一个IP,而Docker本身会拥有一个主机IP,这里使用的自建网络是为了后续容器间的通信。使用如下命令进行创建网络,并查看Docker中网络列表。第一行命令为创建自建网络,第二行命令为查看网络列表
代码语言:javascript
复制
 docker network create --driver bridge selfnet
 docker network list
  1. 安装Java,使用如下命令进行安装,这里由于我们是Centos,所以使用的JAVA是 eclipse/centos_jdk。前两行命令为安装jdk8,安装完成后使用第三行命令查看docker安装的镜像。第四行命令启动java容器,第五行命令查看容启动状态。
代码语言:javascript
复制
  docker search jdk
  docker pull eclipse/centos_jdk8
  docker images
  docker run -di --name=java  --network selfnet --network-alias java  eclipse/centos_jdk8
  docker ps -a
  1. 安装Mysql5.7,使用如下命令进行安装。前两行命令拉取mysql镜像和查看拉取完的mysql镜像。剩余的命令是执行mysql,其中指定了mysql的密码为12356可以进行更改。 启动完成后使用docker ps -a查看启动的镜像。
代码语言:javascript
复制
  docker pull mysql:5.7
  docker images

  docker run -id --privileged=true \
  -p 3306:3306 \
  --name=mysql \
  --network selfnet \
  --network-alias mysql \
  -v $PWD/conf:/etc/mysql/conf.d \
  -v $PWD/logs:/logs \
  -v $PWD/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -d mysql:5.7 \
  --lower_case_table_names=1
  1. 安装redis6.0.5,执行如下命令进行安装。前两行命令为拉取Mysql镜像和查看已经拉取的镜像列表。后边的命令为启动mysql容器。
代码语言:javascript
复制
  docker pull redis:6.0.5
  docker images

  docker run --name redis -p 6379:6379 --network selfnet --network-alias redis  -v 
  /root/docker/redis/data:/data -v /root/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d 
  redis:6.0.5 redis-server /etc/redis/redis.conf --appendonly yes
  1. 安装elasticsearch并创建目录进行持久化操作。前两行命令为拉取elasticsearch和查看docker安装镜像列表。第三行到第七行命令为床创建持久化目录设置虚拟内存和目录鉴权。剩下的命令为启动elasticsearch。
代码语言:javascript
复制
 docker pull elasticsearch:7.6.2
 docker images
 mkdir -p /usr/local/elasticsearch/config
 mkdir -p /usr/local/elasticsearch/data
 echo "http.host: 0.0.0.0" >> /usr/local/elasticsearch/config/elasticsearch.yml
 chmod -R 777 /usr/local/elasticsearch
 chmod -R 777 /usr/local/elasticsearch/config
 chmod -R 777 /usr/local/elasticsearch/data
 chmod -R 777 /usr/local/elasticsearch/plugins
 sysctl -w vm.max_map_count=262144
 
 docker run --name elasticsearch -p 9200:9200\
 --network selfnet \
 --network-alias elasticsearch\
 -e "discovery.type=single-node" \
 -e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
 -v /usr/local/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
 -v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 -d elasticsearch:7.6.2
  1. 安装Nginx,并启动。
  • 拉取Nginx并创建目录赋权。
代码语言:javascript
复制
 docker pull nginx
 docker ps -a
 mkdir -p /usr/local/nginx/conf/conf.d
 mkdir -p /usr/local/nginx/logs
 mkdir -p /usr/local/nginx/www
 chmod -R 777 /usr/local/nginx/conf/conf.d
 chmod -R 777 /usr/local/nginx/logs
 chmod -R 777 /usr/local/nginx/www
  • 启动Nginx,并进入Nginx中复制文件到创建的目录下
代码语言:javascript
复制
 docker run -d --name nginx01 -p 80:80 nginx
 docker cp nginx01:/etc/nginx/nginx.conf /usr/local/nginx/conf/
 docker cp nginx01:etc/nginx/conf.d /usr/local/nginx/conf/
 docker cp nginx01:/usr/share/nginx/html/ /usr/local/nginx/www/
 docker cp nginx01:/var/log/nginx/ /usr/local/nginx/logs/	
  • 停止已经启动的Nginx
代码语言:javascript
复制
 docker stop nginx01
 docker rm -f nginx01
  • 更改/usr/local/nginx/conf下nginx.conf文件,设置项目启动和后端反向代理。参考如下内容:
代码语言:javascript
复制
 server {
        listen       80;
        server_name  localhost;
		charset utf-8;
 
		
		location / {
            		root   /usr/share/nginx/html/;
            		try_files $uri $uri/ /index.html;
            		index  index.html index.htm;
        	}

		
		location /qqcallback {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://blog:8080/kj/oauth/callback/qq;
		}

		location /kj {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://blog:8080/kj;
		}
		
		location /webSocket {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://blog:8081/webSocket;
		}
                
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
  • 最后启动Nginx。
代码语言:javascript
复制
 docker run --name nginx -p 80:80 --network selfnet --network-alias nginx -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/www/:/usr/share/nginx/html/ -v /usr/local/nginx/logs/:/var/log/nginx/ -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d --privileged=true -d nginx
  1. 将后端项目打包成jar,这里演示用的jar名称为blog.jar,并- 部署docker上。
  • 服务器上创建目录,并赋权
代码语言:javascript
复制
 mkdir -p /usr/local/blog
 chmod -R 777 /usr/local/blog
  • /usr/local/blog下新建Dockerfile文件,文件内容如下:
代码语言:javascript
复制
# 基础镜像
FROM java
# 设置时区
ENV TZ = Asia/Shanghai
# 拷贝jar包
ADD *.jar /app.jar
WORKDIR /usr/local/blog
# 入口
ENTRYPOINT ["java","-jar","/app.jar"]
  • 将打包的后端项目上传到/usr/local/blog目录,并进行编译
代码语言:javascript
复制
 cd /usr/local/blog
 docker build -t blog .
  • 等待编译完成后使用命令启动即可。
代码语言:javascript
复制
 docker run -it --privileged=true -d -p 8080:8080 --name blog --network selfnet --network-alias blog -v /usr/local/nginx/www/wwwroothttp://img.kejir.com/:/usr/local/nginx/www/wwwroot/admin/static/file -v /usr/local/blog_java/logs/:/usr/local/blog_java/logs/ blog

教程结束 bye~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023/12/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 准备工作
  • 安装环境
    • 教程结束 bye~
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档