编辑
2023-07-19
项目分享
00
请注意,本文编写于 624 天前,最后修改于 624 天前,其中某些信息可能已经过时。

目录

前提
配置要求
检查
Docker安装
防火墙
方式1:仅开放需要的端口
方式2:开放指定范围的端口
重启防火墙服务
修改docker配置文件
上传JDK8镜像
Portainer安装
Redis服务部署
启动容器
验证容器启动
应用程序前端安装部署
Nginx安装
前端部署
Eureka服务部署
Config服务部署
后端服务部署

前提

配置要求

centos 7.6 内存16g 硬盘500g cpu>8 核心数>2

检查

输入命令cat /etc/selinux/config,查看SELINUX配置项,如果不是disabled,需修改

方式1:对于linux vi命令不熟悉的

  1. 通过linux连接工具(xftp等)将文件拷贝出去,修改完再粘贴覆盖掉
  2. 重启linux系统,执行reboot命令,一定要重启!

方式2:使用vi操作修改文件

  1. vi /etc/selinux/config
  2. 按下键盘上的i键位,文件下方会出现如下标识
  3. 通过键盘的上下左右,找到要修改的那行,进行修改,将SELINUX修改成disabled
  4. 按下键盘的Esc键位,此时文件下方的--INSERT--标识消失
  5. 按下键盘的Shift和: 两个同时按,然后输入wq,按下Enter,修改完毕 执行重启命令: reboot,一定要重启!

Docker安装

1.在/opt目录下创建software文件夹 2.将docker-19.03.6.tgz上传至此文件夹中,即/opt/software目录 3.执行命令进入此文件夹,

cd /opt/software

4.执行解压命令:

tar xzvf docker-19.03.6.tgz

5.执行命令:

cp docker/* /usr/bin/

此命令的作用是将解压出来的docker文件夹中的所有文件拷贝至/usr/bin目录下 cd /usr/bin/ 6.执行命令:

dockerd &

启动docker 7.执行命令:

docker info

查看是否已安装成功 至此,如上图所示docker已安装完成,为了让docker可受systemctl命令控制,我们还可以做进一步扩展:

8.执行命令:

cp docker.socket /etc/systemd/system cp docker.service /etc/systemd/system

命令的作用是将docker.service和docker.socket文件拷贝至/etc/systemd/system目录

9.重启 systemctl 守护进程

执行命令:

systemctl daemon-reload

10.将docker 服务加入开机自启动:

执行命令:

systemctl enable docker

防火墙

方式1:仅开放需要的端口

命令:firewall-cmd --zone=public --add-port=端口/tcp --permanent 例如:firewall-cmd --zone=public --add-port=9998/tcp --permanent

Portainer:9000端口 网关:9999 后端:7777 前端:8888

方式2:开放指定范围的端口

也可以开放指定范围的端口,便捷,不用一一列举,但是会开放一些用不到的端口

命令:firewall-cmd --zone=public --add-port=端口范围-端口范围/tcp --permanent

例如:

firewall-cmd --zone=public --add-port=0000-9999/tcp --permanent

如果页面访问有问题,端口用到的太多了,建议用这个命令。

重启防火墙服务

无论是方式1还是方式2,都需要重启防火墙服务 执行命令:

firewall-cmd --reload

如果防火墙没开启的话,可执行启动命令:

systemctl start firewalld.service

其它防火墙操作参考命令:

查看开启的端口:firewall-cmd --list-ports 关闭防火墙命令:systemctl stop firewalld.service 关闭开机自启动:systemctl disable firewalld.service

修改docker配置文件

为防止后期docker内容器日志过大,引发磁盘空间不足,需要将daemon.json文件上传放置在/etc/docker/目录下,如果有此文件,修改即可

修改后需要杀掉docker进程,然后重启docker服务 执行命令:

ps -ef|grep docker

执行命令:

kill -9 进程ID

进程ID如何找: 如图所示,找到/usr/bin/dockerd对应的那行,第一串数字对应的就是进程ID

重启docker:

systemctl daemon-reload systemctl restart docker

上传JDK8镜像

1.将JDK8镜像上传至/opt/software目录下

2.将上传的JDK镜像载入docker容器 在software目录下,执行命令:

docker load < jdk8-images.tar

Portainer安装

Portainer是docker的可视化管理工具。建议安装。 安装后实施可以可视化地进行服务重启、服务停止等。 开发也便于进行错误排查等工作。

1.将portainer镜像上传至/opt/software目录下

2.将上传的portainer镜像载入docker容器

执行命令:

docker load < portainer-images.tar

3.启动portainer,占用9000端口 执行命令:

docker run -d --name portainer -m 1G --restart always -p 9000:9000 -v /etc/localtime:/etc/localtime -e TZ="Asia/Shanghai" -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

4.在chrome浏览器中打开地址http://IP:9000来查看是否启动成功。 IP是当前Linux服务器的地址。

初次进入默认用户是admin,需设置密码,建议设置为123456。然后选择local,点击connect即可。

Redis服务部署

1.使用提供的 redis-images-6.0.10.tar 文件,上传到服务器 /opt/software/ 中 2.docker 命令加载镜像

cd opt/software docker load < redis-images-6.0.10.tar //等待结束后,使用以下命令查看镜像,能够刚看到redis:6.0.10 即为成功 docker images

启动容器

docker run -d --name emr-redis --restart always -p 6379:6379 -v /opt/app/redis/data/:/data redis:latest --appendonly yes --requirepass "password"

requirepass后面是设置redis密码

验证容器启动

docker ps

应用程序前端安装部署

Nginx安装

将nginx-images.tar上传至/opt/app/pro-jar目录

载入nginx镜像,在/opt/app/pro-jar目录下执行命令:

docker load < nginx-images.tar

创建/opt/app/client目录,将nginx.conf上传至client目录 启动nginx,执行命令:

docker run -d --name emr-nginx --restart always --network host \ -v /opt/app/client:/opt/app/client \ -v /opt/app/client/nginx.conf:/etc/nginx/nginx.conf \ -v /opt/app/client/nginx-logs:/var/log/nginx \ nginx

前端部署

1、将前端编译好的项目文件包放入/opt/app/client/自定义文件夹名/目录下,修改nginx.conf配置文件的应用路径信息,如: nginx.conf默认配置信息

#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }

需要了解具体含义可以看这篇

server { listen 8888; server_name 127.0.0.1; gzip_static on; #charset koi8-r; #access_log logs/localhost.access.log main; location / { #------------------前台资源跟路 ?----------------- root /opt/app/client/my-react; index index.html index.htm; try_files $uri $uri/ /index.html; } #------------------权限后台接口------------------ location /api { proxy_pass http://127.0.0.1:9999/; } }

2、进入portainer容器管理页面,选择emr-nginx,点击restart按钮,重启nginx,使最新的前端应用生效。

Eureka服务部署

1.在/opt目录下,新建目录app/pro-jar

2.将emr-eureka-1.0.jar、emr-eureka-dockerfile、upgrade-eureka.sh上传至服务器/opt/app/pro-jar目录下

  • jar文件是eureka服务打的包
  • Dockerfile是一个文本文件,用于定义Docker镜像的构建步骤和环境配置
FROM openjdk:8-jdk-alpine WORKDIR /app COPY target/my-java-app.jar /app/ EXPOSE 8080 CMD ["java", "-jar", "my-java-app.jar"]

例如这个Dockerfile使用了一个名为openjdk:8-jdk-alpine的基础镜像,该镜像包含了Java运行环境。然后设置了工作目录为/app,将应用程序的jar文件复制到容器中的/app目录下,暴露了容器的8080端口,并使用CMD指令运行应用程序。在构建Docker镜像时,可以使用这个Dockerfile来打包Java应用程序。

  • .sh文件是一个脚本文件,通常用于在Linux和UNIX/Linux操作系统中运行命令和程序。
#!/bin/bash # 停止当前运行的pro-emr-eureka容器 docker stop pro-emr-eureka # 删除原有的pro-emr-eureka容器 docker rm pro-emr-eureka # 构建新的pro-emr-eureka容器 docker build -t emr-eureka:pro . # 运行新的pro-emr-eureka容器 docker run -d --name pro-emr-eureka -m 1G --restart always --network host emr-eureka:pro echo "pro-emr-eureka服务容器已成功更新并部署!"

3.查看upgrade-eureka.sh脚本是否有执行权限 如果没有权限,需更改权限 执行命令:

chmod 777 upgrade-eureka.sh

4.将emr-eureka-1.0.jar编译成镜像并运行服务

执行脚本文件upgrade-eureka.sh编译运行服务即可:注意前面有个小点.

./upgrade-eureka.sh

5.查看服务是否启动成功

Config服务部署

这个是配置生产环境的信息 1、将config-1.0.jar、emr-config-dockerfile、emrConfig.yml、upgrade-config.sh文件上传至服务器/opt/app/pro-jar

2、修改emrConfig.yml文件的权限

chmod 666 emrConfig.yml

3、如果没有权限,需更改权限执行命令:

chmod 777 upgrade-config.sh

4、查看upgrade-config.sh文件是否有执行权限,参考8.1 Eureka服务部署的第3点

5、将config-1.0.jar编译成镜像并运行执行命令:

./upgrade-config.sh

后端服务部署

1.在/opt目录下,新建目录app/pro-jar

2.将java-demo.jar、java-demo-dockerfile、upgrade-java-demo.sh上传至服务器/opt/app/pro-jar目录下

3.查看upgrade-java-demo.sh脚本是否有执行权限,如果没有权限,需更改权限 执行命令:

chmod 777 upgrade-java-demo.sh

4.将java-demo.jar编译成镜像并运行服务 执行脚本文件upgrade-java-demo.sh编译运行服务即可:注意前面有个小点.

./upgrade-java-demo.sh

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!