本文主要是介绍一个人能不能快速搭建一套微服务环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、背景
大型软件系统的开发现在往往需要多人的协助,特别是前后端分离的情况下下,分工越来越细,那么一个人是否也能快速搭建一套微服务系统呢? 答案是能的。看我是怎么操作的吧。
二、搭建过程
1、首先需要一套逆向代码生成工具,只需要设计好数据库表就能生成微服务,该源码已经上传到我的资源分享里面
1、修改dbConfig.xml文件配置数据源信息。
2、修改project.xml文件配置微服务信息。
2.0、修改name为对应数据库,支持mysql、oracle、postgresql
2.1、修改schema为据库名称
2.2、修改table为表名,多个表以逗号分隔
2.3、修改version版本号
2.4、修改author为自己的OA名称
2.5、修改service为服务名称
2.6、修改module为模块名称
2.7、修改rootPackage为根包名称
2.8、修改application为启动类名称
2.9、其他内容无需修改
3、运行Run.java,生成代码,路径为out目录下 。
2.相关的yml文件需要准备好
application.yml
#数据库配置信息
spring:datasource:url: ${member-plat.jdbc.member-sys.url}driver-class-name: ${member-plat.jdbc.member-sys.driver-class-name}username: ${member-plat.jdbc.member-sys.username}password: ${member-plat.jdbc.member-sys.password}#hikari数据源特性配置hikari:maximum-pool-size: 100 #最大连接数,默认值10.minimum-idle: 20 #最小空闲连接,默认值10.connection-timeout: 60000 #连接超时时间(毫秒),默认值30秒.#空闲连接超时时间,默认值600000(10分钟),只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放#如果大于等于 max-lifetime 且 max-lifetime>0,则会被重置为0.idle-timeout: 600000max-lifetime: 3000000 #连接最大存活时间,默认值30分钟.设置应该比mysql设置的超时时间短connection-test-query: select 1 #连接测试查询
bootstrap.yml
#应用ID
app:id: member-plat#应用端口
server:port: 8305#服务名称
spring:application:name: cdj-projectservlet:multipart:max-file-size: 1024MB #指定上传文件允许的最大大小。 默认值为1MBmax-request-size: 10240MB #指定multipart/form-data请求允许的最大大小。 默认值为10MB。#配置注册中心
eureka:instance:prefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}client:service-url:defaultZone: ${eureka.defaultZone} #服务注册到的地址fetch-registry: true#阿波罗配置信息
apollo:bootstrap:enabled: truenamespaces: application,txyunjdbc.yml,redis.yml,weixin.yml,oss.yml,member.yml,txrocketMq.ymlmeta: http://member-config:8080mybatis:#mapper配置文件mapper-locations: classpath:mapper/*.xml#开启驼峰命名法configuration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImplmybatis-plus:configuration:# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:id-type: ASSIGN_UUID#日志级别配置信息
logging:level:root: INFOcn.member.dao: DEBUG
3、注册中心准备好 eureka 源码已经上传的自研共享
4、apollo配置组件准备好,开源下载就行
5、准备一份部署文档,安装jdk 安装docker,安装nginx这些,编写好微服务启动脚本这些
三、部署文档
1.1服务器资源
操作系统版本:Linux CentOS 7.6
JAVA环境:openjdk version "1.8.0_312"
数据库:MYSQL8.0 或PostgreSQL 12.8
1.2 yum准备
1.2.1 更新yum
yum update yum
1.2.2 安装yum工具
yum -y install yum-utils
1.2.3查看yum版本
yum –version
版本为3.4.3或之后的最新版本即可
1.3 JAVA部署
JAVA安装命令:
yum install java-1.8.0-openjdk.x86_64
查看JAVA版本: java -version
1.4 docker环境及部署
1.4.1版本
Client: Docker Engine – Community version: 20.10.12
Server: Docker Engine – Community version: 20.10.12
1.4.2 部署
1.用yum拉取阿里云镜像:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2. yum安装:
yum install docker-ce
3.查看docker版本:
docker version
4.启动docker:
systemctl start docker
5.设置docker开机自启
systemctl enable docker
1.4.3 文件夹
1.在系统的/home路径下创建一个命名为“docker”的文件夹,用于存放docker相关文件。
2.在/home/docker路径下创建两个文件夹“script”和“apps”,用于存放脚本文件与镜像文件。
1.4.4 docker常用命令
1.查看docker镜像: docker images
2.查看docker正在运行容器: docker ps
3.查看docker里的容器: docker ps -a
1.5 nginx部署
端口需要:80
1.5.1 docker部署nginx
docker pull nginx:latest
1.5.2 脚本文件
在/home/docker/script路径下创建一个脚本文件“nginx.sh”,内容为:
docker run -d \
--name nginx \
--net=host \
-v /home/docker/apps/nginx/www:/usr/share/nginx/html \
-v /home/docker/apps/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/apps/nginx/logs:/var/log/nginx \
-v /home/docker/apps/nginx/conf.d:/etc/nginx/conf.d \
-v /home/docker/apps/nginx/cert:/etc/nginx/cert \
nginx
(注意:以上内容需注意linux中的特殊字符,可用vim编辑文件,去掉特殊字符,否则运行脚本文件时会报错;cert为安全证书相关,不需要时可以去掉)
1.5.3 nginx文件
1.在/home/docker/apps路径下创建“nginx”文件夹
2.在/home/docker/apps/nginx路径下分别创建“www”、 “logs”、 “conf”、 “conf.d”四个文件夹;”www”文件夹用于存放前端代码,“logs”文件夹用于存放日志,“conf”文件夹用于存放nginx总配置文件,“conf.d”用于存放项目配置文件;如需安全证书相关,还要创建“cert”文件夹。
3.nginx总配置文件:
在/home/docker/apps/nginx/conf路径下创建“nginx.conf”文件,作为nginx的总配置文件,内容为:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
client_max_body_size 1024m;
include /etc/nginx/conf.d/*.conf;
}
4.项目配置分文件
在/home/dokcer/apps/nginx/conf.d路径下创建“xxx.conf”文件,“xxx”为项目名,内容为:
#server
#{
## 80端口是http正常访问的接口
#listen 80;
#server_name XXX.com;
## 在这里,我做了https全加密处理,在访问http的时候自动跳转到https
#rewrite ^(.*) https://${server_name}$1 permanent;
#}
server {
# listen 自定义监听端口
listen 80;
#定义使用 访问域名
server_name localhost;
# 如需域名则配置如下
# 侦听443端口,这个是ssl访问端口
# listen 443 ssl;
# ssl_certificate /etc/nginx/cert/xxx.crt;
# ssl_certificate_key /etc/nginx/cert/安全私钥文件名;
location / {
root /var/nginx/html/xxx;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /404.html {
root error;
}
}
1.5.4 运行nginx
1.通过脚本文件nginx.sh运行,脚本文件的运行需授予权限,在文件目录下命令:
chmod 755 nginx.sh
2.运行脚本命令:./nginx.sh
1.5.4 nginx常用命令
1.启动: docker start nginx
2.重启: docker restart nginx
3.停止: docker stop nginx
1.6 注册中心eureka部署(非必要)
端口需要:8761
1.6.1 准备
部署注册中心eureka,使用docker部署。在/home/docker/apps路径下创建“eureka”文件夹,并存放一个ctg-eureka.jar的镜像文件和构建镜像的Dockerfile文本文件。eureka.jar文件可使用别的服务器同目录下的ctg-eureka.jar文件。
Dockerfile文件的内容:
FROM java:8
VOLUME /tmp
ADD ctg-eureka.jar ctg-eureka.jar
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/ctg-eureka.jar"]
1.6.2 脚本文件
在/home/docker/script路径下创建一个脚本文件“eureka.sh”,内容为:
docker run --name ctg-eureka -d -p 8761:8761 ctg-eureka
1.6.3 运行eureka
1.通过脚本文件eureka.sh运行,脚本文件的运行需授予权限,在文件目录下命令:
chmod 755 eureka.sh
2.运行脚本命令:./ eureka.sh
1.6.4 eureka常用命令
1.启动: docker start ctg-eureka
2.重启: docker restart ctg-eureka
3.停止: docker stop ctg-eureka
1.7 配置中心Apollo部署(非必要)
端口需要: 8070,8080,8090
1.7.1 准备工作
Apllo的部署需要Mysql数据库,需要5.6.5以上版本。
1.7.2 创建数据库
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
执行两个sql文件
sql/apolloportaldb.sql
sql/apolloconfigdb.sql
会创建两个数据库
sql文件可在官网:Quick Start · apolloconfig/apollo Wiki · GitHub 下载
1.7.3 脚本文件
1.在/home/docker/script路径下创建“apollo”文件夹
2.在/home/docker/script/apollo路径下创建“apollo-portal.sh”脚本文件,内容为:
docker run -d \
--name apollo-portal \
--net=host \
-v /tmp/logs:/opt/logs \
-e SPRING_DATASOURCE_URL=
"jdbc:mysql://数据库地址/ctg_apollo_portal_test?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=数据库账号\
-e SPRING_DATASOURCE_PASSWORD=数据库密码\
-e APOLLO_PORTAL_ENVS=test \
-e TEST_META=http://服务器ip地址:8080 \
apolloconfig/apollo-portal:1.9.1
3.在/home/docker/script/apollo路径下创建“apollo-config.sh”脚本文件,内容为:
docker run -d \
--name apollo-configservice \
--net=host \
-v /tmp/logs:/opt/logs \
-e SPRING_DATASOURCE_URL=
"jdbc:mysql://数据库地址/ctg_apollo_config_test?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=数据库账号\
-e SPRING_DATASOURCE_PASSWORD=数据库密码\
apolloconfig/apollo-configservice:1.9.1
4. 在/home/docker/script/apollo路径下创建“apollo-admin.sh”脚本文件,内容为:
docker run -d \
--name apollo-adminservice \
--net=host \
-v /tmp/logs:/opt/logs \
-e SPRING_DATASOURCE_URL=
"jdbc:mysql://数据库地址/ctg_apollo_config_test?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=数据库账号\
-e SPRING_DATASOURCE_PASSWORD=数据库密码\
apolloconfig/apollo-adminservice:1.9.1
1.7.4 docker拉取apollo
命令:
- docker pull apolloconfig/apollo-configservice:1.9.1
- docker pull apolloconfig/apollo-adminservice:1.9.1
- docker pull apolloconfig/apollo-portal:1.9.1
1.7.5 运行apollo
在/home/docker/script/apollo路径下运行指令
1. chmod 755 apollo-portal.sh
2. chmod 755 apollo-config.sh
3. chmod 755 apollo-admin.sh
执行运行命令
1. ./ apollo-portal.sh
2. ./ apollo-config.sh
3. ./ apollo-admin.sh
1.7.6 使用Apollo配置中心
访问服务器IP:8070可以进行访问,默认的用户名是apollo,密码是admin。
这篇关于一个人能不能快速搭建一套微服务环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!