web生產(chǎn)環(huán)境部署,往往是分布式,和開(kāi)發(fā)環(huán)境或者測(cè)試環(huán)境我們一般使用單機(jī)不同。
一、部署內(nèi)容
1、后端服務(wù)
2、后臺(tái)管理系統(tǒng)vue
3、小程序
二、所需要服務(wù)器
5臺(tái)前端服務(wù)器?
8臺(tái)后端服務(wù)
三、所需要的第三方組件
redis |
mysql |
clb |
OSS |
CDN |
WAF |
RocketMQ |
redis用來(lái)緩存應(yīng)用的數(shù)據(jù)
mysql用來(lái)存儲(chǔ)配置中心apollo的配置數(shù)據(jù)
clb用來(lái)做負(fù)載均衡
OSS用來(lái)存儲(chǔ)應(yīng)用的圖片
CDN用來(lái)加速應(yīng)用的訪(fǎng)問(wèn)速度
WAF用來(lái)保障應(yīng)用的安全
RocketMQ用來(lái)做后臺(tái)收集用戶(hù)數(shù)據(jù)時(shí)的異步處理,提高系統(tǒng)接口性能
postgresql 用來(lái)存在應(yīng)用的基礎(chǔ)數(shù)據(jù)
四、需要安裝的服務(wù)
1、apollo配置中心
2、Eureka服務(wù)注冊(cè)發(fā)現(xiàn)中心
3、應(yīng)用服務(wù)
五、安裝安排
5臺(tái)前端服務(wù)器上安裝 nginx ,apollo 、Eureka? 其中這三個(gè)組件都使用docker來(lái)安裝。
8臺(tái)后端服務(wù)器用來(lái)安裝應(yīng)用的服務(wù),包括網(wǎng)關(guān),公共服務(wù),業(yè)務(wù)服務(wù)。
六.安裝方法
1、基礎(chǔ)軟件安裝
1. 基礎(chǔ)服務(wù)
1.1服務(wù)器資源
操作系統(tǒng)版本:Linux?CentOS 7.6
JAVA環(huán)境:openjdk version "1.8.0_312"
數(shù)據(jù)庫(kù):MYSQL8.0 或PostgreSQL 12.8
1.2 yum準(zhǔn)備
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環(huán)境及部署
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.啟動(dòng)docker:
systemctl start docker
5.設(shè)置docker開(kāi)機(jī)自啟
systemctl enable docker
1.4.3 文件夾
1.在系統(tǒng)的/home路徑下創(chuàng)建一個(gè)命名為“docker”的文件夾,用于存放docker相關(guān)文件。
2.在/home/docker路徑下創(chuàng)建兩個(gè)文件夾“script”和“apps”,用于存放腳本文件與鏡像文件。
1.4.4 docker常用命令
1.查看docker鏡像:?docker images
2.查看docker正在運(yùn)行容器:?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路徑下創(chuàng)建一個(gè)腳本文件“nginx.sh”,內(nèi)容為:
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
(注意:以上內(nèi)容需注意linux中的特殊字符,可用vim編輯文件,去掉特殊字符,否則運(yùn)行腳本文件時(shí)會(huì)報(bào)錯(cuò);cert為安全證書(shū)相關(guān),不需要時(shí)可以去掉)
1.5.3 nginx文件
1.在/home/docker/apps路徑下創(chuàng)建“nginx”文件夾
2.在/home/docker/apps/nginx路徑下分別創(chuàng)建“www”、 “l(fā)ogs”、 “conf”、 “conf.d”四個(gè)文件夾;”www”文件夾用于存放前端代碼,“l(fā)ogs”文件夾用于存放日志,“conf”文件夾用于存放nginx總配置文件,“conf.d”用于存放項(xiàng)目配置文件;如需安全證書(shū)相關(guān),還要?jiǎng)?chuàng)建“cert”文件夾。
3.nginx總配置文件:
在/home/docker/apps/nginx/conf路徑下創(chuàng)建“nginx.conf”文件,作為nginx的總配置文件,內(nèi)容為:
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.項(xiàng)目配置分文件
在/home/dokcer/apps/nginx/conf.d路徑下創(chuàng)建“xxx.conf”文件,“xxx”為項(xiàng)目名,內(nèi)容為:
#server
#{
??## 80端口是http正常訪(fǎng)問(wèn)的接口
??#listen 80;
??#server_name XXX.com;
??## 在這里,我做了https全加密處理,在訪(fǎng)問(wèn)http的時(shí)候自動(dòng)跳轉(zhuǎn)到https
??#rewrite ^(.*) https://${server_name}$1 permanent;
#}
server {
# listen 自定義監(jiān)聽(tīng)端口
????listen ??????80;
#定義使用 訪(fǎng)問(wèn)域名
????server_name ?localhost;
# 如需域名則配置如下
# 偵聽(tīng)443端口,這個(gè)是ssl訪(fǎng)問(wèn)端口
# 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 運(yùn)行nginx
1.通過(guò)腳本文件nginx.sh運(yùn)行,腳本文件的運(yùn)行需授予權(quán)限,在文件目錄下命令:
chmod 755 nginx.sh
2.運(yùn)行腳本命令:./nginx.sh
1.5.4 nginx常用命令
1.啟動(dòng): docker start nginx
2.重啟: docker?restart nginx
3.停止:?docker stop nginx
1.6 注冊(cè)中心eureka部署
端口需要:8761
1.6.1 準(zhǔn)備
部署注冊(cè)中心eureka,使用docker部署。在/home/docker/apps路徑下創(chuàng)建“eureka”文件夾,并存放一個(gè)eureka.jar的鏡像文件和構(gòu)建鏡像的Dockerfile文本文件。eureka.jar文件可使用別的服務(wù)器同目錄下的eureka.jar文件。
Dockerfile文件的內(nèi)容:
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路徑下創(chuàng)建一個(gè)腳本文件“eureka.sh”,內(nèi)容為:
docker run --name eureka -d -p 8761:8761 ctg-eureka
1.6.3 運(yùn)行eureka
1.通過(guò)腳本文件eureka.sh運(yùn)行,腳本文件的運(yùn)行需授予權(quán)限,在文件目錄下命令:
chmod 755 eureka.sh
2.運(yùn)行腳本命令:./ eureka.sh
1.6.4 eureka常用命令
1.啟動(dòng): docker start eureka
2.重啟: docker restart eureka
3.停止: docker stop eureka
1.7 配置中心Apollo部署
端口需要: 8070,8080,8090
1.7.1 準(zhǔn)備工作
Apllo的部署需要Mysql數(shù)據(jù)庫(kù),需要5.6.5以上版本。
1.7.2 創(chuàng)建數(shù)據(jù)庫(kù)
Apollo服務(wù)端共需要兩個(gè)數(shù)據(jù)庫(kù):ApolloPortalDB和ApolloConfigDB,我們把數(shù)據(jù)庫(kù)、表的創(chuàng)建和樣例數(shù)據(jù)都分別準(zhǔn)備了sql文件,只需要導(dǎo)入數(shù)據(jù)庫(kù)即可。
執(zhí)行兩個(gè)sql文件
sql/apolloportaldb.sql
sql/apolloconfigdb.sql
會(huì)創(chuàng)建兩個(gè)數(shù)據(jù)庫(kù)
sql文件可在官網(wǎng):Quick Start · apolloconfig/apollo Wiki · GitHub?下載
1.7.3 腳本文件
1.在/home/docker/script路徑下創(chuàng)建“apollo”文件夾
2.在/home/docker/script/apollo路徑下創(chuàng)建“apollo-portal.sh”腳本文件,內(nèi)容為:
docker run -d \
????--name apollo-portal \
????--net=host \
????-v /tmp/logs:/opt/logs \
????-e SPRING_DATASOURCE_URL=
"jdbc:mysql://數(shù)據(jù)庫(kù)地址/ctg_apollo_portal_test?characterEncoding=utf8" \
????-e SPRING_DATASOURCE_USERNAME=數(shù)據(jù)庫(kù)賬號(hào)\
????-e SPRING_DATASOURCE_PASSWORD=數(shù)據(jù)庫(kù)密碼\
????-e APOLLO_PORTAL_ENVS=test \
????-e TEST_META=http://服務(wù)器ip地址:8080 \
????apolloconfig/apollo-portal:1.9.1
3.在/home/docker/script/apollo路徑下創(chuàng)建“apollo-config.sh”腳本文件,內(nèi)容為:
docker run -d \
????--name apollo-configservice \
????--net=host \
????-v /tmp/logs:/opt/logs \
????-e SPRING_DATASOURCE_URL=
"jdbc:mysql://數(shù)據(jù)庫(kù)地址/ctg_apollo_config_test?characterEncoding=utf8" \
????-e SPRING_DATASOURCE_USERNAME=數(shù)據(jù)庫(kù)賬號(hào)\
????-e SPRING_DATASOURCE_PASSWORD=數(shù)據(jù)庫(kù)密碼\
????apolloconfig/apollo-configservice:1.9.1
4.?在/home/docker/script/apollo路徑下創(chuàng)建“apollo-admin.sh”腳本文件,內(nèi)容為:
docker run -d \
????--name apollo-adminservice \
????--net=host \
????-v /tmp/logs:/opt/logs \
????-e SPRING_DATASOURCE_URL=
"jdbc:mysql://數(shù)據(jù)庫(kù)地址/ctg_apollo_config_test?characterEncoding=utf8" \
????-e SPRING_DATASOURCE_USERNAME=數(shù)據(jù)庫(kù)賬號(hào)\
????-e SPRING_DATASOURCE_PASSWORD=數(shù)據(jù)庫(kù)密碼\
????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 運(yùn)行apollo
在/home/docker/script/apollo路徑下運(yùn)行指令
1. chmod 755 apollo-portal.sh
2. chmod 755 apollo-config.sh
3. chmod 755 apollo-admin.sh
執(zhí)行運(yùn)行命令
1. ./ apollo-portal.sh
2. ./ apollo-config.sh
3. ./ apollo-admin.sh
1.7.6 使用Apollo配置中心
訪(fǎng)問(wèn)服務(wù)器IP:8070可以進(jìn)行訪(fǎng)問(wèn),默認(rèn)的用戶(hù)名是apollo,密碼是admin。
應(yīng)用的部署。。。。
其中我們可以分別在一臺(tái)前端服務(wù)器,一臺(tái)后端服務(wù)器部署完了,再?gòu)?fù)制到其他服務(wù)器,做橫向擴(kuò)展即可。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-445225.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-445225.html
到了這里,關(guān)于JAVA開(kāi)發(fā)與運(yùn)維(web生產(chǎn)環(huán)境部署)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!