web生产环境部署,往往是分布式,和开发环境或者测试环境我们一般使用单机不同。
一、部署内容
1、后端服务
2、后台管理系统vue
3、小程序
二、所需要服务器
5台前端服务器
8台后端服务
三、所需要的第三方组件
redis用来缓存应用的数据
mysql用来存储配置中心apollo的配置数据
clb用来做负载均衡
OSS用来存储应用的图片
CDN用来加速应用的访问速度
WAF用来保障应用的安全
RocketMQ用来做后台收集用户数据时的异步处理,提高系统接口性能
postgresql 用来存在应用的基础数据
四、需要安装的服务
1、apollo配置中心
2、Eureka服务注册发现中心
3、应用服务
五、安装安排
5台前端服务器上安装 nginx ,apollo 、Eureka 其中这三个组件都使用docker来安装。
8台后端服务器用来安装应用的服务,包括网关,公共服务,业务服务。
六.安装方法
1、基础软件安装
1.基础服务
1.1服务器资源
操作系统版本:LinuxCentOS 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 /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 ;
## 在这里,我做了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.重启: dockerrestart 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.1docker pull apolloconfig/apollo-adminservice:1.9.1docker 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。
应用的部署。。。。
其中我们可以分别在一台前端服务器,一台后端服务器部署完了,再复制到其他服务器,做横向扩展即可。