当前位置: 首页 > news >正文

JAVA开发与运维(JavaWeb测试环境搭建)

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

系统架构:

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

首先需要申请的云资源。

业务用途CPUMEMDisk数量云产品规格
服务器应用服务(部署微服务)4核8G500G1CVMS6.LARGE8
数据调度及抽取4核8G500G1CVMS6.LARGE8
spark数据分析4核16G500G1CVMS6.LARGE16
中间件缓存服务Redis8G1Redis标准版8G单副本
分布式消息服务RocketMQ4核8G1RocketMQTopic 容量 150
Group 容量 1500
虚拟集群 TPS 上限 4000
数据库pgsql存储小程序端用户数据4核8G500G SSD1PGSQL双机高可用
业务中台MySQL4核8G500G SSD1MySQL基础型单节点
数据中台MySQL4核8G500G SSD1MySQL基础型单节点
clickhouse数据分析4核16G500G SSD1ClickHouse标准型4c16g单节点
存储对象存储OSS500G1COS
其他(按需填写)SLB负载均衡1CLB内网

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

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测试环境搭建)

本例子测试环境搭建在腾讯云平台之上。 系统架构: 微服务EurekaApollogateWayredisrocketMqOSSsparkETLmysqlpgsqlclickHouseSLB. 首先需要申请的云资源。 业务用途CPUMEMDisk数量云产品规格服务器应用服务(部署微服务)4核8G500G1CVMS6.L…...

python 的range函数你需要知道三件事

python 的range函数你需要知道三件事python 的range() 函数你需要知道三件事一、range函数的功能和语法二、range函数转化为数组三、range函数与for语句的应用python 的range() 函数你需要知道三件事 一、range函数的功能和语法 **1、range函数的功能:**range&…...

穿越周期的进击,科沃斯“敢”于变革

文|智能相对论 作者|佘凯文 什么样的扫地机器人才是一款好的扫地机器人? 回答这个问题我们首先要明白扫地机器人的产品逻辑究竟是什么。简单来说,就是替代人们完成一定环境内的清洁工作,它能完成的“清洁程度”越深则代表其产品力越强。 …...

不使用IF语句对一组数进行排序的分析和实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、不使用IF语句的两数排序方法二、不使用IF的多数排序讨论1、三数比较和排序2、多个数据比较和排序总结前言 这个题目源于已经完成了不使用IF语句对两个数的比…...

在大厂做了5年测试,3月被无情辞退,想给摸鱼的兄弟提个醒

先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入字节,以“人员优化”的名义无情被裁员,之后跳槽到了有赞,一直从事软件测试的工作。之前没有实习经历,算是5年的工作经验吧。 这5年之间完成了一次…...

【职业规划】第二篇:程序员分级之中级程序员

Java程序员的分级并没有统一的标准,以下列举出来的只是我所理解的关于Java工程师的划分标准,不喜勿喷,如有建议,欢迎评论或私信。 二、Java中级程序员(又名:Java中级工程师/Java中级开发) 1.级别介绍与职责 简单一句话总结中级程序员就是:知道是什么。 具体些就是,…...

Studio One没有声音怎么办 Studio One工程没有声音

Studio One是一款非常优秀编曲软件,能够帮助用户高效的进行编曲和创作,也是目前主流的通道机架软件之一,受到很多音乐编曲爱好者的追捧。但是很多刚接触这款软件的小伙伴会碰到这样或者那样的问题,比如Stuidio one没有声音怎么办&…...

x86架构利用docker去编译arm64的应用程序

文章目录1. 交叉编译:toolchain2. 隔离挂载的方式:3. QEMU 或其他模拟器来实际运行dockerx86架构实现多平台系统代码的编译,实现方式有多种:交叉编译:toolchain 【新的第三方库不好处理】隔离挂载的方式 【速度慢&…...

华为OD机试题 - 优秀学员统计(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为…...

Nginx学习(7)—— 过滤模块(filter)

文章目录过滤模块简介执行时间和内容执行顺序Nginx是怎么按照次序依次来执行各个过滤模块的呢这些过滤模块的简述(按执行顺序)模块编译过滤模块分析相关结构体响应头过滤函数响应体过滤函数主要功能介绍发出子请求优化措施过滤模块简介 执行时间和内容 …...

【创作赢红包】

1、IoC\nIoC(Inversion of Control,控制反转)是一种软件设计思想,它的核心思想是将对象之间的依赖关系交给容器来管理,从而降低对象之间的耦合度,提高代码的灵活性和可维护性。\n\n在传统的编程模式中&…...

Mybatis入门

1. 框架 框架相当于是一个脚手架,内部已经写好了很多代码,我们只要其基础上进行开发就可以提高我们的开发效率 框架阶段学习: ①先去学习如何使用框架 ②然后再使用熟练的情况下去猜测内部的原理 ③通过源码去验证自己的猜测。 2.Mybat…...

金色传说:SAP-PP-CO01/CO02 生产订单下达保存时报错:用户状态 新建 是活动的 (ORD %00000000001) 消息号BS014

文章目录问题描述一、原因分析:二、解决方案:总结问题描述 某一特殊订单类型的生产订单下达保存时,出现报错提示:用户状态 新建 是活动的 (ORD %00000000001) 报错的消息号为BS014 一、原因分析: 既然是某一特殊订单类型才出现报错,那么问…...

@Transactional和synchronized同时使用时的一些问题以及解决

Transactional和synchronized同时使用并不能保证事务一致性背景任何事情都有一个发生背景有个需求【一个业务里面包含多个事务,而且还需要避免其他线程的影响,所幸的是该服务只需要启动单实例,不然还要考虑分布式的影响】我的思路就是用Transactional 和 synchronized来保证事务…...

贪心-根据身高重建队列

假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数组 peopl…...

「解析」牛客网-华为机考企业真题 21-40

又是一年春招时,有幸收到华为自动驾驶算法岗,之前刷题不多,在此汇总下牛客网的真题,主要采用Python编写,个人觉得语言只是实现工具而已,并不是很关键,Python简洁易懂,更加适合算法工…...

JAVA练习92-快乐数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 提示:这里可以添加本文要记录的大概内容: 3月28日练习内容 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目-…...

BPF 之路:技术背景

目录 引言 什么是BPF 历史 组成 执行机制 BPF 和ebpf 的关系 BCC、bpftrace、IO Visor BCC 项目的quick start execsnoop biolatency 动态插桩:kprobes和uprobes 概念 缺点 静态插桩:tracepoint 和USDT 概念 缺点 推荐的方案 初识bpft…...

C++—— set、map、multiset、multimap

目录 关联式容器 概念 键值对 树形关联式容器 set 介绍 定义方式 使用 map 介绍 使用 multiset 介绍 使用 multimap 介绍 使用 相关的OJ题 前K个高频单词 关联式容器 概念 我们之前接触过的一些容器,比如:vector、list、deque、forwa…...

Qlib使用

Qlib https://github.com/microsoft/qlib 将csv文件转化为Qlib的数据格式:https://qlib.readthedocs.io/en/latest/component/data.html#converting-csv-format-into-qlib-format 注意每支股票都要保存成单独一个文档,且文档名字与股票代号一致。 其中f…...

TL-WDR7660 httpProcDataSrv任意代码执行漏洞复现分析

01 漏洞简述 2023年1月31日,CNVD公开了一个由国内安全研究员提交的TL-WDR7660 httpProcDataSrv任意代码执行漏洞,编号为CNVD-2023-05404,同时公开了漏洞利用详情,poc代码链接为https://github.com/fishykz/TP-POC。从poc代码详情…...

基于DDS的SOA测试方案实现

随着以太网技术在车载网络中的应用,各种基于以太网的中间件也相继被应用在车内,如果对车载网络有过相关了解的小伙伴,对于作为中间件之一的DDS(数据分发服务Data Distribution Service)可能并不陌生;若没有…...

LibTorch中Windows系统环境配置及CUDA不可用问题解决

前言:本文对在Windows系统上进行LibTorch开发环境配置及相关问题解决做一个较为详细的记录,以便后续查询使用。 使用环境版本: Windows 11 Visual Studio 2022 CUDA 12.0 LibTorch 1.13.1_cu11.7 目录一、LibTorch简介二、LibTorch下载安装三…...

Java并发编程实战二

线程间的通讯方式 1.volitate(缓存一致性协议),synchronize,lock(都保证可见性) 2.wait.notify,await(),signal(前两个是Object,后两个属于lock) 3.管道输入、输出流 (示例代码:PipeInOut.java)(目前几乎没人使用) 管道输入/输…...

Linux中最基本的命令ls的用法有哪些?

Linux是一种流行的操作系统,被广泛应用于服务器和个人电脑。Linux命令行界面是使用Linux操作系统的关键。其中一个最基本的命令是"ls"命令,该命令用于列出指定目录中的所有文件和子目录。在这篇文章中,我们将探讨ls命令及其各种用途…...

第 100002(十万零二)个素数是多少?

题目描述 素数就是不能再进行等分的整数。比如7,11。而 9 不是素数,因为它可以平分为 3 等份。一般认为最小的素数是2,接着是 3,5,... 请问,第 100002(十万零二)个素数是多少? 请注意&#xff1…...

Lua迭代器

Lua迭代器 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。 在 Lua 中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。 泛型 f…...

同步与互斥之信号量

目录 1、信号量用于线程的互斥 验证 2、信号量用于线程的同步 验证 3、无名信号量用于进程间互斥 代码一 代码二 验证 4、有名信号量 用于进程间同步和互斥 验证 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它…...

如何当个优秀的文档工程师?从 TC China 看技术文档工程师的自我修养

本文系 NebulaGraph Community Academic 技术文档工程师 Abby 的参会观感,讲述了她在中国技术传播大会分享的收获以及感悟。 据说,技术内容领域、传播领域的专家和决策者们会在中国技术传播大会「tcworld China 2022」大会上分享心得。作为一名技术文档工…...

如何学习k8s

学习Kubernetes可以遵循以下步骤: 了解Kubernetes的基本概念和架构。学习Kubernetes前,需要了解它的基本概念和组成部分,包括Pod、Service、ReplicaSet、Deployment、Namespace等等,同时也需要了解Kubernetes的整体架构和工作原理…...