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

news2025/1/22 15:41:49

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

命令:

  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.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。

应用的部署。。。。

其中我们可以分别在一台前端服务器,一台后端服务器部署完了,再复制到其他服务器,做横向扩展即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac 安装mongodb 无法打开 mongod 无法验证开发者

https://www.mongodb.com/try/download/community 一、下载解压 下载的tgz包,解压到本地 /usr/local 目录下 二、编辑.bash_profile 文件 终端输入命令打开并编辑 .bash_profile 文件 open .bash_profile .bash_profile文件最下面新增一行mongodb相关配置&#x…

leetcode142_环形链表 II

文章目录 题目详情分析Java完整代码 题目详情 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给…

【5天打卡】学习Lodash的第四天——安全漏洞学习

安全漏洞的问题一直是大家关心的问题,仿佛是巧合,在云视频会议服务提供商 Zoom 刚刚被爆出存在”零日漏洞“威胁 Mac 用户隐私和信息安全的同时,开发者熟知的 npm 库 Lodash 也被爆出存在高严重性安全漏洞——”原型污染“漏洞,该…

全网最新版ChatGLM-6B开源模型环境详细部署及安装——如何在低显存单显卡上面安装私有ChatGPT GPT-4大语言模型

目录 前言前期准备电脑要求安装anaconda安装相应版本的CUDA配置ChatGLM-6B Conda环境安装pytorch ChatGLM-6B最新版模型环境部署及安装源码下载模型下载相关库安装运行web演示作为API部署 参考资料其它资料下载 前言 ChatGPT的爆火让许多公司和个人都想要开发自己的大型语言模…

多模态之clip

论文:Learning Transferable Visual Models From Natural Language Supervision Github:https://github.com/OpenAI/CLIP OpenAI出品 论文通过网络爬取4亿(image, text)对,使用对比学习的方法训练得到clip(Contrastive Languag…

golang 输出固定位数的整数

需求:将0输出为000,99输出为099 c# Console.WriteLine(0.ToString("000")); Console.WriteLine(99.ToString("000"));go fmt.Printf("%03d", 0) fmt.Printf("%03d", 99)运行效果:

深入浅出Java中参数传递的原理

前言 今天,想和大家聊聊关于java中的参数传递的原理,参数的传递有两种,值传递和引用传递。 值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参…

windows系统 vmware17安装ubuntu server 22.04.2

vmware17 创建虚拟机 新建虚拟机 选择镜像文件:我这个镜像文件是需要联网才能安装的 设置虚拟机名称,设置存储路径 根据用户实际使用情况设置合适的大小:比如我是用来安装wvp平台的,20g太小,导致安装出现问题。 最…

scratch猫猫的儿童节 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年3月

目录 scratch猫猫的儿童节 一、题目要求 1、准备工作 2、功能实现 二、案例分析

如何使用java编写差分进化算法

差分进化算法属于一种进化算法,以全局最优性、收敛速度快等特点,得到很多学者的关注,并将其扩展到参数优化、数值优化、工程优化、路径优化、机器学习等一系列研究中。 而差分进化算法的原理即过程又是什么呢? 一、什么是差分进化算法 差分进化算法的原理属于内部寻优机…

假期出行小程序+chatgpt旅游攻略

马上五一了,如果想出去旅游,需要提取规划好路线图,我们可以借助chatgpt的路线规划功能帮我们生成一份攻略,按照攻略我们就可以愉快的出去玩耍了。 本文结合chatgpt,利用低代码工具帮我们制作一份旅行导览小程序&#…

揭秘!我用AI写了一部精彩小说;搭建AI视频创作工作流;一键生成摘要工具清单;大模型创业生死5问 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『大型语言模型 (LLM) 进化树』追踪近年来语言模型的发展 作者团队梳理了自2018年以来大语言模型的发展历程,并可视化成了…

Windows Vscode 远程连接Ubuntu, vscode检测到#include错误请更新includePath的解决方法

(闭坑)首先,我们要明白一点,就是我们在windows用vscode 远程连接了Ubuntu后,我们的Vscode的环境就是Ubuntu,不再是window了,所以出现问题,应该想到的是Ubuntu上的环境问题,而不是win…

Android逆向实战(一)腾讯新闻去开屏广告

上次反编译一个工具类app失败,原因是使用了360加固,回编译后无法启动。一般来讲,大厂的app考虑到性能、兼容性、包体积等,通常不用加固。因此,本次我们选一个大一些的app-腾讯新闻。写在前面:本篇博客仅用来…

优秀简历的HR视角:怎样打造一份称心如意的简历?

简历的排版应该简洁工整,注重细节。需要注意对齐和标点符号的使用,因为在排版上的细节需要下很大功夫。除此之外,下面重点讲述几点简历内容需要注意的地方。 要点1:不相关的不要写。 尤其是与应聘岗位毫不相关的实习经历&#x…

记一次峰回路转的注入

0X01 背景 自己之前写过一篇记录,当时是由于之前是一位校友刚做开发,叫我友情帮忙测试一波,由于是开发的新手,漏洞比较多,所以直接从注入开始讲起,但是到getshell的过程也算是一场峰回路转再跌跌撞撞的路程…

浏览器内核,chrominum = blink = webkit+

借鉴:浏览器内核有几种?深度解析浏览器内核工作原理和版本区别 1.什么是浏览器内核 广义上:浏览器内核 js引擎 渲染引擎。但是,由于js引擎越来越独立(比如chrome的V8)。所以,目前 浏览器内核 渲染引擎。 2、市面上…

hibernate多对多关系表的搭建和‘增删改查’

hibernate框架——数据库的多对多关系! 众所周知,数据库有三种数据模型,一对一,一对多,多对多,在前面的文章中主要介绍了一对一和一对多的表关系搭建和使用sql语句进行增删改查。 使用hibernate框架主要分…

web集群第二次作业

文章目录 1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。2. 基于 CentOS 7 构建 LVS-DR 群集。1、环境准备2、安装httpd准备两个web页面3、配置LVS负载均衡服务4、手工在RS端绑定VIP,添加本机访问VIP的路由信息5、手工在RS端抑制AR…

Turtle海龟画图

介绍 简单的一个窗口绘图工具。 提供一个小海龟,可以看做一个机器人,能够听得懂有限的命令。 三种命令 运动命令 forward(d) 向前移动D长度 backward(d) 向后移动D长度 right(d) 向右转动多少度 left(d) 向左转动多少度 goto(x,y) …