JAVA开发与运维(web生产环境部署)
web生产环境部署,往往是分布式,和开发环境或者测试环境我们一般使用单机不同。
一、部署内容
1、后端服务
2、后台管理系统vue
3、小程序
二、所需要服务器
5台前端服务器
8台后端服务
三、所需要的第三方组件
redis |
mysql |
clb |
OSS |
CDN |
WAF |
RocketMQ |
redis用来缓存应用的数据
mysql用来存储配置中心apollo的配置数据
clb用来做负载均衡
OSS用来存储应用的图片
CDN用来加速应用的访问速度
WAF用来保障应用的安全
RocketMQ用来做后台收集用户数据时的异步处理,提高系统接口性能
postgresql 用来存在应用的基础数据
四、需要安装的服务
1、apollo配置中心
2、Eureka服务注册发现中心
3、应用服务
五、安装安排
5台前端服务器上安装 nginx ,apollo 、Eureka 其中这三个组件都使用docker来安装。
8台后端服务器用来安装应用的服务,包括网关,公共服务,业务服务。
六.安装方法
1、基础软件安装
1. 基础服务
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”文件夹,并存放一个eureka.jar的镜像文件和构建镜像的Dockerfile文本文件。eureka.jar文件可使用别的服务器同目录下的eureka.jar文件。
Dockerfile文件的内容:
FROM java:8
VOLUME /tmp
ADD eureka.jar 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 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 eureka
2.重启: docker restart eureka
3.停止: docker stop 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。
应用的部署。。。。
其中我们可以分别在一台前端服务器,一台后端服务器部署完了,再复制到其他服务器,做横向扩展即可。
相关文章:
JAVA开发与运维(web生产环境部署)
web生产环境部署,往往是分布式,和开发环境或者测试环境我们一般使用单机不同。 一、部署内容 1、后端服务 2、后台管理系统vue 3、小程序 二、所需要服务器 5台前端服务器 8台后端服务 三、所需要的第三方组件 redismysqlclbOSSCDNWAFRocketMQ…...
普通人,自学编程,5个必备步骤
天给大家分享个干货哈 普通人自学编程 想学成找到一份工作甚至进大厂 非常有效且必备的5个步骤 文章最后 还给大家提供了一些免费的学习资料 记得提前收藏起来 相信很多人在最开始学编程的时候 上来就是去网上找一套视频 或者买一本书直接开干 这种简单粗暴的方法其实是不对的 …...
kubernetes安全框架RBAC
目录 一、Kubernetes 安全概述 二、鉴权、授权和准入控制 2.1 鉴权(Authentication) 2.2 授权(Authorization) 2.3 准入控制 三、基于角色的权限访问控制: RBAC 四、案例:为指定用户授权访问不同命名空间权限 一、Kubernetes 安全概述 K8S安全控…...
【大数据面试题大全】大数据真实面试题(持续更新)
【大数据面试题大全】大数据真实面试题(持续更新) 1)Java1.1.Java 中的集合1.2.Java 中的多线程如何实现1.3.Java 中的 JavaBean 怎么进行去重1.4.Java 中 和 equals 有什么区别1.5.Java 中的任务定时调度器 2)SQL2.1.SQL 中的聚…...
Linux [常见指令 (1)]
Linux常见指令 ⑴ 1. 操作系统1.1什么事操作系统1.2选择指令的原因 2.使用工具3.Linux的指令操作3.1mkdir指令描述:用法:例子 mkdir 目录名例子 mkdir -p 目录1/ 目录2/ 目录3 3.2 touch指令描述:用法:例子 touch 文件 3.2pwd指令描述:用法:例子 pwd 3.4cd指令描述:用法:例子 c…...
进程控制下篇
进程控制下篇 1.进程创建 1.1认识fork / vfork 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程 #include<unistd.h> int main() {pid_t i fork;return 0; }当前进程调用fork,…...
PS学习笔记(零基础PS学习教程)
很多新手学习PS不知从何下手,做设计的第一阶段肯定是打牢基础,把工具用熟练;本期特别为大家整理了PS入门的学习笔记,把每个工具的用法整理了下来,在使用过程中有哪里不清楚的可以翻看来看看~ 一、ps的工作界面的介绍 …...
如何构建数据血缘系统
1、明确需求,确定边界 在进行血缘系统构建之前,需要进行需求调研,明确血缘系统的主要功能,从而确定血缘系统的最细节点粒度,实体边界范围。 例如节点粒度是否需要精确到字段级,或是表级。一般来说&#x…...
IPsec中IKE与ISAKMP过程分析(主模式-消息3)
IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息2)_搞搞搞高傲的博客-CSDN博客 阶段目标过程消息IKE第一阶段建立一个ISAKMP SA实现通信双发的身份鉴别和密钥交换&…...
深度学习技巧应用10-PyTorch框架中早停法类的构建与运用
大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用10-PyTorch框架中早停法类的构建与运用,文章将介绍深度学习训练过程中的一个重要技巧—早停法,以及如何在PyTorch框架中实现早停法。文章将从早停法原理和实践出发,结合实际案例剖析早停法的优缺点及在PyTorch中的应…...
Linux文件系统权限
目录标题 文件权限文件和目录的一般权限文件的权限针对三类对象进行定义文件和目录中,r、w、x的作用 设置文件和目录的一般权限修改文件或目录的权限—chmod(change mode)命令权限值的表示方法—使用3位八进制数表示权限值的表示方法—使用字符串表示修改文件或目录…...
ctfshow之_萌新web1至web7
一、访问在线靶场ctfshow ctf.showhttps://ctf.show/challenges如下图所示,进入_萌新赛的web1问题: 如上图所示,页面代码提示id1000时,可以查询到flag,进行如下尝试: 如下图所示,传入参数id1时…...
HPDA的资料
HPDA,英文全称为High Performance Data Analysis,直译为高性能数据分析。 适用场景 机器学习大数据分析 技术挑战 大量的元数据操作数据的同步随机读写高IOPOS的小IO请求高带宽的文件请求 技术关键字 存算分离移动计算大I/O直通,小I/O聚…...
项目管理软件可以用来做什么?这篇文章说清楚了
项目管理软件是用来干嘛的,就得看对项目的理解。项目是为创造独特的产品、服务或成果而进行的临时性工作。建造一座大楼可以是一个项目,进行一次旅游活动、日常办公活动、期末考试复习等也都可以看成一个项目。 项目管理不善会导致项目超时、超支、返工、…...
ETL工具 - Kettle 转换算子介绍
一、Kettle 转换算子 上篇文章对 Kettle 中的输入输出算子进行了介绍,本篇文章继续对转换算子进行讲解。 下面是上篇文章的地址: ETL工具 - Kettle 输入输出算子介绍 转换是ETL里面的T(Transform),主要做数据转换&am…...
界面设计的读书笔记
所见即所得,属于绝大多数的人。 所想即所想,属于极少数的人。 当复杂度,超出了大脑的负荷,人会觉得很累,直到放弃追求。 地图的显示,必须有足够多的描述性的数据。 点信息 :标签,位…...
C#底层库--自定义进制转换器(可去除特殊字符,非Convert.ToString方式)
系列文章 C#底层库–程序日志记录类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–MySQLBuilder脚本构建类(select、insert、update、in、带条件的SQL自动生成) 本文链接:https://blog.csd…...
Doris(24):Doris的函数—聚合函数
1 APPROX_COUNT_DISTINCT(expr) 返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。 它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。 select city,approx_count_distinct(user_id) from site_visit group by c…...
干货! ICLR:将语言模型绑定到符号语言中个人信息
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! ╱ 作者简介╱ 承洲骏 上海交通大学硕士生,研究方向为代码生成,目前在香港大学余涛老师的实验室担任研究助理。 个人主页:http://blankcheng.github.io 谢天宝 香港大学一年级…...
Windows安装mariadb,配置环境变量(保姆级教学)
软件下载地址:https://mariadb.com/downloads/ 1.双击下载好的软件 2.点击next 3.勾选我同意,点击next 4.这里那你可以设置你要安装的路径,也可以使用默认的,之后点击next 5.如图所示,设置完点击next 6.接下来就默…...
华为OD机试 - 积木最远距离(Python)
题目描述 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的距离,小薇请你帮忙替她解决这个问题。 输入描…...
关于对于springcloud中的注册中心和consume消费者和provier服务者之间的关系理解
关于对于springcloud中的注册中心和consume消费者和provier服务者之间的关系理解 pringCloud provider(服务提供方) consumer(服务调用方) server(注册中心) 运行原理 Provider 第一步 provider注册到se…...
【学习笔记】「JOISC 2022 Day1」错误拼写
久违的字符串计数题。 显然只用考虑 [ i : j ] [i:j] [i:j]这一段拼成的串。不难得出结论:设 n x t i nxt_i nxti表示 i i i之后第一个本质不同的字符的位置,那么 n x t i ≤ j nxt_i\le j nxti≤j,并且 s i ? s n x t i s_i?s_{nxt_i…...
码出高效:Java开发手册笔记(线程池及其源码)
码出高效:Java开发手册笔记(线程池及其源码) 码出高效:Java开发手册笔记(线程池及其源码) 码出高效:Java开发手册笔记(线程池及其源码)前言一、线程池的作用线程的生命周…...
【MySQL】交叉连接、自然连接和内连接查询
一、引入 实际开发中往往需要针对两张甚至更多张数据表进行操作,而这多张表之间需要使用主键和外键关联在一起,然后使用连接查询来查询多张表中满足要求的数据记录。一条SQL语句查询多个表,得到一个结果,包含多个表的数据。效率高…...
长/短 链接/轮询 和websocket
短连接和长连接 短连接: http协议底层基于socket的tcp协议,每次通信都会新建一个TCP连接,即每次请求和响应过程都经历”三次握手-四次挥手“优点:方便管理缺点:频繁的建立和销毁连接占用资源 长连接: 客…...
数据库的事务
数据库的事务 1、事务是什么 TRANSACTION(事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 2、事务可以做什么 数据库事务通常包含了一个序列的对数据库的读/写操作。包含有以下两个目的: …...
专利进阶(二):专利撰写常用技术及算法汇总(持续更新中)
文章目录 一、前言二、常用技术及算法2.1 区跨链技术2.2 聚类算法2.3 边缘算法2.4 蚁群算法2.4.1 路径构建2.4.2 信息素更新 2.5 哈希算法2.5.1 常见算法 2.6 数字摘要2.72.82.92.10 三、拓展阅读 一、前言 专利撰写过程中使用已有技术或算法解决新问题非常常见,本…...
C#手术麻醉临床信息系统源码,实现体征数据自动采集绘制
手麻系统源码,自动生成电子单据 基于C# 前端框架:Winform后端框架:WCF 数据库:sqlserver 开发的手术麻醉临床信息系统源码,应用于医院手术室、麻醉科室的计算机软件系统。该系统针对整个围术期,对病人进…...
现代CMake高级教程 - 第 7 章:变量与缓存
双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 7 章:变量与缓存 重复执行 cmake -B build 会有什么区别? ❯ cmake -B build -- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detec…...
房屋租赁网站开发模版/百度资源站长平台
windows下boost库的基本使用方法 因为boost都是使用模板的技术,所以所有代码都是写在一个.hpp头文件中。这样boost中的大部分内容是不需要编译生成相应的链接库,只需要设置下面的包含目录(或者设置一下环境变量),在源文…...
响水做网站的价格/seo优化价格
对象的序列化主要解决的是对象状态的保存问题。这里所说的“对象状态”,其实就是指某一时刻对象所拥有的各个字段值的集合。 序列化最主要的作用有:1、在进程下次启动时读取上次保存的对象的信息 2、在不同的AppDomain或进程之间传递数据 3、在分布式应用…...
进网站显示建设中怎么解决/长沙seo搜索
转自:http://www.cnblogs.com/daqiang/archive/2011/12/04/2275646.html STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。 时钟源问题: 名…...
网页设计实训报告记录和结果分析/桔子seo
QQ概念版,触摸是王道 转载于:https://www.cnblogs.com/nuddle/archive/2010/05/06/1728535.html...
wordpress弹出层插件/品牌推广运营策划方案
1、题目描述 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 如果数组元素个数小于 2,则返回 0。 示例 1: 输入: [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。…...
泉州专业网站建设哪家好/网站建设需要多少钱?
本发明涉及无线传感器网络领域,属于leach路由通信技术领域:。背景技术::物联网技术飞速发展,无线传感器网络(wirelesssensornetworks,wsn)也逐渐成为互联网研究领域的热门话题,主要包含汇聚节点…...