本例子测试环境搭建在腾讯云平台之上。

系统架构:

微服务+Eureka+Apollo+gateWay+redis+rocketMq+OSS+spark+ETL+mysql+pgsql+clickHouse+SLB.

首先需要申请的云资源。

业务用途 CPU MEM Disk 数量 云产品 规格
服务器 应用服务(部署微服务) 4核 8G 500G 1 CVM S6.LARGE8
数据调度及抽取 4核 8G 500G 1 CVM S6.LARGE8
spark数据分析 4核 16G 500G 1 CVM S6.LARGE16
中间件 缓存服务Redis 8G 1 Redis 标准版8G单副本
分布式消息服务RocketMQ 4核 8G 1 RocketMQ Topic 容量 150
Group 容量 1500
虚拟集群 TPS 上限 4000
数据库 pgsql存储小程序端用户数据 4核 8G 500G SSD 1 PGSQL 双机高可用
业务中台MySQL 4核 8G 500G SSD 1 MySQL 基础型单节点
数据中台MySQL 4核 8G 500G SSD 1 MySQL 基础型单节点
clickhouse数据分析 4核 16G 500G SSD 1 ClickHouse 标准型4c16g单节点
存储 对象存储OSS 500G 1 COS
其他(按需填写) SLB负载均衡 1 CLB 内网

资源申请下来后进行环境安装,通过在线安装的方式。

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.2.4 安装telnet工具

yum install telnet.*

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;# 如需域名则配置如下# 把80换成侦听443端口,这个是ssl访问端口# listen 443 ssl; # ssl_certificate /etc/nginx/cert/安全证书文件名;# 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.5 nginx常用命令

1.启动: docker start nginx

2.重启: docker restart nginx

3.停止: docker stop nginx

1.5.6 nginx配置免密ssl私钥

1.拿到安全证书(.crt)、私钥(.key)和密码后,将安全证书和私钥放在/home/docker/apps/nginx/cert 路径下。

2.在cert文件夹内输入命令:  openssl rsa -in 私钥文件名.key -out 要生成的免密私钥文件名.key

例: openssl rsa -in privkey2021.key -out privkey2021_unsecure.key

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 -p 8761:8761 --name ctg-eureka -d ctg-eureka

1.6.3 docker加载eureka镜像

在/home/dokcer/apps/eureka路径下执行命令:

docker build -t ctg-eureka .

(注意最后有个“.”符号)

1.6.4 运行eureka

1.通过脚本文件eureka.sh运行,脚本文件的运行需授予权限,在文件目录下命令:

chmod 755 eureka.sh

2.运行脚本命令:./eureka.sh

1.6.5 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.13.在/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

命令:
1.docker pull apolloconfig/apollo-configservice:1.9.1
2.docker pull apolloconfig/apollo-adminservice:1.9.1
3.docker pull apolloconfig/apollo-portal:1.9.1

1.7.5 运行apollo

在/home/docker/script/apollo路径下运行指令1. chmod 755 apollo-portal.sh2. chmod 755 apollo-config.sh3. chmod 755 apollo-admin.sh执行运行命令1. ./ apollo-portal.sh2. ./ apollo-config.sh3. ./ apollo-admin.sh

1.7.6 使用Apollo配置中心

 访问服务器IP:8070可以进行访问,默认的用户名是apollo,密码是admin。

JAVA开发与运维(JavaWeb测试环境搭建)相关推荐

  1. JAVA开发与运维(web生产环境部署)

    web生产环境部署,往往是分布式,和开发环境或者测试环境我们一般使用单机不同. 一.部署内容 1.后端服务 2.后台管理系统vue 3.小程序 二.所需要服务器 5台前端服务器 8台后端服务 三.所需 ...

  2. JAVA开发与运维(云安全产品)

    在现在的开发和运维中,云生态组件的使用率非常高,很少公司自己维护自己的物理机,网络流量 ,监控,第三方中间件,除了少数涉密程度高的部分和公司外,大多数的企业都在使用云生态.比如我们正在开发的系统,服务 ...

  3. 程序人生:开发,运维,测试,实施哪个好?

    任何事务都是有利有弊的.城市选择是这样,IT岗位的选择依然是这样. 工资高的岗位或城市,往往压力更大:工资低,一般也会略为轻松. 那到底选择哪个岗位呢?把各个岗位的优劣势列出来,结合自己的情况,你就会 ...

  4. JAVA开发与运维(配置中心Apollo的使用)

    在微服务构建的分布式系统,有一个组件很重要,就是配置中心.配置中心集中管理所有微服务的配置信息,这样做既规范了开发配置规范,也方便于后期的运维管理.这一篇我们讲一下携程的开源配置中心Apollo的使用 ...

  5. JAVA开发与运维(Nginx配置详解)

    对于Nginx的使用,最重要的是理解每个配置项的作用.所以一份详细的Nginx的配置对于JAVA开发和运维尤为重要.我们一般使用两个Nginx配置文件对Nginx进行配置,一个是公共文件nginx.c ...

  6. 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)

    前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...

  7. JAVA开发与运维(docker运维常规操作)

    使用docker来安装软件步骤. 1.先装好docker环境. 1.4 docker环境及部署 1.4.1 版本 Client: Docker Engine – Community version: ...

  8. 写给java开发的运维笔记

    转载至:https://github.com/biezhi/java-bible/tree/master/learn_server 转载于:https://www.cnblogs.com/zhuawa ...

  9. 大数据开发之运维面试题汇总分享

    Q1:集群线上扩容如何达到自动化?线上扩容,规模正常都是以 10+以上,如果都以课堂所示,人肉操作,时间投入与产出比不匹配,人力造成很大的不必要浪费,想学习老师线上集群实际扩容的方案. A:课堂所示兼 ...

最新文章

  1. 2022-2028年中国自主可控行业深度调研及投资前景预测报告(全卷)
  2. 对拉格朗日乘子法与KKT的理解
  3. 雷达波形样式_案例分析 | 基于XSIM的雷达电子对抗仿真
  4. pythonsklearn教学_Python使用sklearn实现的各种回归算法示例
  5. Windows下压缩包安装Mysql
  6. python中is和 的区别_Python中is和==的区别
  7. python我的世界服务器_Python取Minecraft服务器信息
  8. (转) vector的reserve和resize
  9. public,protected,private
  10. linux虚拟文件系统(五)-文件打开操作分析
  11. C#中面向连接的客户端与服务端编程
  12. 如何选择商业智能BI工具
  13. android定时截取屏幕内容,Android 截取手机屏幕两种实现方案解析
  14. MyBatis 传入参数之parameterType
  15. iPhone启动页尺寸
  16. IO_file结构、FSOP、house of orange总结
  17. MySQL中PreparedStatement sql中in的引号问题
  18. 关于网易云音乐代码音乐播放器单曲和歌单的调用
  19. 【支付宝沙箱支付】麻瓜教程——申请----代码----修改测试----问题解决
  20. 看完面经,他拿出一打大厂offer玩起了斗地主,人生不过是如此枯燥乏味....

热门文章

  1. axios 的 qs库
  2. 数据链路层的PPP协议
  3. 8乘8led点阵显示数字_基于51单片机的8乘8LED点阵显示屏的设计
  4. 学计算机要学数学么,学计算机数学要求高吗 数学不好怎么办?
  5. Chart.js与ECharts.js图表组件对比与使用
  6. 数据监测,都可以监测哪些平台
  7. 在线教育网站如何更好的实现视频安全视频保护?
  8. [Uncaught Error: Class 'mysqli' not found]Ubuntu系统和window系统下用MYSQLi方式不能连接数据库
  9. C语言实现贪吃蛇(使用链表,适合初学者)
  10. 2021微信大数据挑战赛-初赛-NN思路分享