ToB企服应用市场:ToB评测及商务社交产业平台

标题: Linux 部署Java项目 [打印本页]

作者: 吴旭华    时间: 2024-8-28 07:08
标题: Linux 部署Java项目
阿里云服务器 初始化云盘后,要更换操作系统操作才华远程登录。
Linux sudo下令以系统管理者的身份执行指令,也就是说,经过 sudo 所执行的指令就好像是 root 切身执行。
1、安装jdk

把jdk上传至Linux服务器,执行下方解压下令
  1. tar -zxvf /jdk-8u144-linux-x64.tar.gz -C 安装目录
  2. wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
复制代码
设置情况变量

设置情况变量 这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的情况变量
  1. vi /etc/profile
复制代码
在文件中添加
  1. export JAVA_HOME=/usr/local/Java/jdk1.8.0_144
  2. export JRE_HOME=/usr/local/Java/jdk1.8.0_144/jre
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME:$CLASSPATH
  4. export PATH=$JAVA_HOME/bin:$PATH
复制代码
使情况变量设置立即见效
  1. source /etc/profile
复制代码
2、安装nginx

安装所需插件

(1)、安装gcc
gcc可以编译 C,C++,Ada,Object C和Java等语言
  1. gcc -v    //查看gcc版本
  2. yum -y install gcc  //安装命令
复制代码
(2)、pcre、pcre-devel安装
pcre是一个perl库,包罗perl兼容的正则表达式库,nginx的http模块使用pcre来分析正则表达式,以是需要安装pcre库。
  1. yum install -y pcre pcre-devel
复制代码
(3)、zlib安装
zlib库提供了很多种压缩息争压缩方式nginx使用zlib对http包的内容进行gzip,以是需要安装
  1. yum install -y zlib zlib-devel
复制代码
(4)、安装openssl
openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔
  1. yum install -y openssl openssl-devel
复制代码
安装nginx

1、下载nginx安装包
  1. wget http://nginx.org/download/nginx-1.9.9.tar.gz
复制代码
2、把压缩包解压到usr/local/java
  1. tar -zxvf  nginx-1.9.9.tar.gz
复制代码
3、切换到cd /usr/local/java/nginx-1.9.9/下
执行三个下令:
  1. ./configure //是可执行的脚本文件,用来检测你的安装平台的目标特征的,并生成Makefile文件
  2. make   // 编绎
  3. make install  // 安装
复制代码
执行完make以后报错
  1. make[1]: *** [objs/Makefile:445: objs/src/core/ngx_murmurhash.o] Error 1
  2. make[1]: Leaving directory '/app/nginx-1.9.9'
  3. make: *** [Makefile:8: build] Error 2
复制代码
办理办法

找到对应的Maakefile文件(我的在 /nginx/objs/Makefile),将gcc参数中的-Werror去掉 再重新make即可
nginx编译时,make后会产生如下报错

①将/nginx目录下/objs/Makefile中的 -Werrori (有的为Wrror)删除(意思是将所有警告当作错误处置惩罚,因此要关闭)。
②立马再次编译的话,是会报另一个错误。
③在nginx目录下输入下令:
  1. vim src/os/unix/ngx_user.c
复制代码
将下图红框内内容注释,退出保存即可正常编译
  1. cd.current_salt[0]=~salt[0];
复制代码
方式一:传统方法

一、启动

  1. cd usr/local/nginx/sbin
  2. ./nginx
复制代码
二、重启

更改设置重启nginx
  1. kill -HUP 主进程号或进程号文件路径
  2. 或者使用
  3. cd /usr/local/nginx/sbin
  4. ./nginx -s reload
复制代码
判断设置文件是否正确

  1. nginx -t -c /usr/local/nginx/conf/nginx.conf
  2. 或者
  3. cd  /usr/local/nginx/sbin
  4. ./nginx -t
复制代码
如果浏览器无法返回,查看阿里云服务器是否启动 80端口

3、安装Redis

1.下载redis安装包

可以在centos中使用wget下令下载redis安装包:
  1. wget http://download.redis.io/releases/redis-4.0.2.tar.gz
复制代码
2.安装设置

安装包上传到服务器器后放到期望的目录中,或者是在期望的目录中使用wget下令,会自动下载到当前目录。
  1. wget http://download.redis.io/releases/redis-4.0.2.tar.gz
复制代码
3.tar解压redis包

  1. tar -xzvf redis-4.0.2.tar.gz
复制代码
#也可以tar -xzvf redis-4.0.2.tar.gz
-C 目录 解压到指定目录
#我这里是直接解压到当前目录
4.编译安装

进入到上一步解压后生成的目录中make
这里需要注意的是编译时redis版本过高gcc版本过低会出现编译后src目录中没有redis-server文件最终无法安装乐成,如果出现这种问题可以使用以下下令更新一下gcc版本,重新编译安装即可。
#更新gcc版本
  1. yum -y install gcc automake autoconf libtool make
  2. #1、进入目录
  3. cd redis-4.0.2
  4. #2、编译
  5. make
  6. #3、安装
  7. make install
复制代码
5.修改设置

在解压目录中会有一个redis的设置文件redis.conf,vim编辑改文件。
  1. vim redis.conf
复制代码
去除ip绑定

在文件第69行会有"bind 127.0.0.1"将他#干掉,这样我们可以通过任意ip地址访问到redis,不同版本位置可能会略有区别,但是相差不大。【:n回车可直接跳转到第n行】
关闭保护模式

redis默认运行在保护模式下,redis的保护模式不答应远程访问,因此,我们需要关闭保护模式,来让我们的redis可以被远程访问。
将protected-mode yes改no即可。

port 6397为redis默认端口,可根据详细需要更改端口。
开启后台启动

redis默认是关闭后台启动的,也就是我们安装完成后一旦启动redis。redis会占用我们的整个终端,这样我们除了执行redis操作,就不能做其他任何事情,以是我们要开启后台启动。
第136行将daemonize no改yes即可。

启动服务端下令

#注意当前是在redis.xx.xx目录中以是需要加上路径
  1. ./src/redis-server redis.conf
复制代码
6.设置redis开机自启动升级为系统服务

redis安装好之后,我们想让redis开机自启动,起首要把redis升级为一个系统服务,redis已经为我们提供好了办理方案。在redis的安装目录中,有一个utils文件夹,该文件夹中有一个install_server.sh文件,我们进入utils目录,执行这个文件。之后我们需要做一些设置,一路回车就可以了。
  1. #注意当前是在redis.xx.xx目录中所以需要加上路径
  2. ./install_server.sh
复制代码
  1. #格式:systemctl start 服务名称
  2. #启动redis
  3. systemctl start redisd       
  4. #重启redis
  5. systemctl restart redis
  6. #查看状态
  7. systemctl status redis
  8. #重新加载配置
  9. systemctl daemon-reload
复制代码
远程连接redis服务器

  1. ./redis-cli
  2. -h redis服务器IP -p 6379 (默认端口)
  3. 1
复制代码
tips:如果只是连接本地

  1. redis-cli
复制代码
4、MQTT安装

//EMQX 5.0.16
详见:免费试用 EMQX Cloud 或 EMQX Enterprise | 下载 EMQX
Http接口:
//获取所有客户端列表
http://10.100.0.200:18083/api/v5/clients
//发送消息
http://10.100.0.200:18083/api/v5/publish
验证方式:
1、Basic Auth username:admin passowrd:登录的暗码。
如果装备了API密钥,则API key为username,Secret Key为passord
2、Header Key: Authorization, Value: Basic xxxx:。
通过http://10.100.0.200:18083/api-docs/index.html,点击右上角Authorize按钮,再找到publish接口,tryout,哀求参数就会包罗 value: Basic输入相应的用户名和暗码就能获取Authorization value
  1. wget https://www.emqx.com/en/downloads/broker/4.0.13/emqx-centos7-v4.0.13.x86_64.rpm   //下载
  2. sudo yum install emqx-centos7-v4.0.13.x86_64.rpm //安装
  3. sudo emqx start  // 运行
  4. # 启动emqx
  5. ./bin/emqx start
  6. # 停止emqx
  7. ./bin/emqx stop
  8. # 重启emqx
  9. ./bin/emqx restart
  10. # 检查运行状态
  11. ./bin/emqx_ctl status
  12. # 服务卸载
  13. ./bin/emqx uninstall
复制代码
在云服务器开放相应端口
http://IP:18083/#/

5、安装Docker

手动安装

卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相干的依赖项。
  1. sudo yum remove docker \
  2.                   docker-client \
  3.                   docker-client-latest \
  4.                   docker-common \
  5.                   docker-latest \
  6.                   docker-latest-logrotate \
  7.                   docker-logrotate \
  8.                   docker-engine
复制代码
1:执行如下下令,确保 yum 包更新到最新
  1. yum update
复制代码
2:如果安装过旧版本的话,执行如下下令卸载旧版本(没哟可以跳过此步调)
  1. yum remove docker  docker-common docker-selinux docker-engine
复制代码
3:安装需要的软件包, yum-util 提供yum-config-manager功能,别的两个是devicemapper驱动依赖的
  1. yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码
4:设置yum源(这里使用的阿里云镜像源地址)
  1. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
5:查看那个yum源最快,可以看到阿里的最快
  1. yum makecache fast
复制代码
6:查看docker的版本,可以选择指定版本安装
  1. yum list docker-ce --showduplicates | sort -r
复制代码
7:安装docker
  1. #安装默认稳定版本
  2. yum -y install docker-ce
  3. #安装指定版本 其中VERSION_STRING 为版本号
  4. sudo yum install docker-ce-<VERSION_STRING>
复制代码
看到上面内容代表docker已经安装乐成了
启动,关闭,开机启动docker

看到上面有client和service两部门表示docker安装启动都乐成了 !!!

启动docker容器时报错:
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.18.0.4:5000 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit status 1)
办理方案:
重启docker服务。 (注意:重启docker之前务必记录其他容器状态,防止重启docker对其他容器产生影响。)
  1. systemctl restart docker
复制代码
Docker重启时,自动重启容器
  1. --restart=always
复制代码
docker打开2375监听端口

最终生成文件如下,有了它们我们就可以进行基于TLS的安全访问了
ca.pem CA证书
ca-key.pem CA证书私钥
server-cert.pem 服务端证书
server-key.pem 服务端证书私钥
cert.pem 客户端证书
key.pem 客户端证书私钥
设置Docker支持TLS
修改docker.service文件
  1. vi /usr/lib/systemd/system/docker.service
复制代码
修改以ExecStart开头的设置,开启TLS认证,并设置好CA证书、服务端证书和服务端私钥
  1. ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp\://0.0.0.0:2375 -H unix:///var/run/docker.sock
复制代码
重新加载daemon
  1. systemctl daemon-reload && systemctl restart docker
复制代码
重启docker
  1. service docker restart
复制代码
拷贝8个文件到本地
idea docker要设置:TCP socket:
Engine API URL: https://14.223.93.163:2375
Certificates foler: 本地8个签名文件
由于在使用caliper时,需要用到Docker的监听端口,以是此步调如下:
1、修改/usr/lib/systemd/system/docker.service,在[service]的ExecStart ,添加 -H tcp://0.0.0.0:2375
  1. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
复制代码
2、革新设置文件,重启docker
  1. systemctl daemon-reload
  2. systemctl restart docker
复制代码
设置镜像加快器

针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon设置文件/etc/docker/daemon.json来使用加快器
  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4.   "registry-mirrors": ["https://szm81lc6.mirror.aliyuncs.com"]
  5. }
  6. EOF
  7. sudo systemctl daemon-reload
  8. sudo systemctl restart docker
复制代码
查看系统网络端口2375是否被docker所监听
  1. netstat -tulp
复制代码
测试是否监听乐成
  1. http://ip:2375
复制代码
启动 Docker。

  1. sudo systemctl start docker
复制代码
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
  1. sudo docker run hello-world
复制代码
设置docker开机启动
  1. systemctl enable docker
复制代码
停止docker
  1. systemctl stop docker
复制代码
卸载 docker

删除安装包:

  1. yum remove docker-ce
复制代码
删除镜像、容器、设置文件等内容:

rm -rf /var/lib/docker

2.查看所有镜像
docker images


多了一个镜像
3.启动一个容器
docker run -itd redis:latest
-i 表示交互式 -t 终端 -d 以后台历程的方式启动
4.启动redis
redis-server
5.删除容器及镜像

(1)起首查询容器ID
  1. docker ps
  2. -a
复制代码
(2)关闭容器
  1. docker stop 容器ID 或容器名称
复制代码
(3)删除容器
  1. docker rm 容器ID或容器名称
复制代码
(4)查看镜像ID
  1. docker images
复制代码
(5)删除容器
  1. docker rmi 镜像ID或容器名称
复制代码
6、安装MySql

1、用 docker search mysql
下令来查看可用版本:


  1. docker search mysql
复制代码
2、拉取 MySQL 镜像

这里我们拉取官方的最新版本的镜像:
  1. // docker pull mysql:latest
  2. docker pull mysql:5.7
复制代码
3、查看本地镜像

使用以下下令来查看是否已安装了 mysql:
  1. docker images
复制代码
在上图中可以看到我们已经安装了最新版本(latest)的 mysql 镜像。
4、运行容器

安装完成后,我们可以使用以下下令来运行 mysql:5.7 容器:
  1. docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d  mysql:5.7
复制代码
参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的暗码。
5、安装乐成

通过 docker ps
下令查看是否安装乐成:
登录MySql

1、获取容器的id

  1. docker ps
复制代码
2、进入容器

  1. # 把容器id替换成你自己的
  2. docker exec -it id /bin/bash
  3. # 也可以直接使用下面的命令,效果一样
  4. docker exec -it mysql /bin/bash
复制代码
3、输入用户名暗码登录,然后就可以正常使用了

mysql -uroot -p123456
7、docker 安装redis

  1. // 搜索所有redis镜像docker search redis// 下载指定版本的Redis镜像 (xxx指详细版本号)docker pull redis:bullseye  // 查抄当前所有Docker下载的镜像docker images
  2.    
复制代码
创建Redis设置文件
启动前需要先创建Redis外部挂载的设置文件 ( /home/redis/conf/redis.conf )
之以是要先创建 , 是因为Redis自己容器只存在 /etc/redis 目录 , 自己就不创建 redis.conf 文件
当服务器和容器都不存在 redis.conf 文件时, 执行启动下令的时候 docker 会将 redis.conf 作为目录创建 , 这并不是我们想要的效果
创建目录
  1. mkdir -p /home/redis/conf
复制代码
创建文件
  1. touch /home/redis/conf/redis.conf
复制代码
下面可省略
编辑文件
  1. vi redis.conf
复制代码
参加以下文件
  1. protected-mode no
  2. port 6379
  3. tcp-backlog 511
  4. requirepass 123456
  5. timeout 0
  6. tcp-keepalive 300
  7. daemonize no
  8. supervised no
  9. pidfile /var/run/redis_6379.pid
  10. loglevel notice
  11. logfile ""
  12. databases 30
  13. always-show-logo yes
  14. save 900 1
  15. save 300 10
  16. save 60 10000
  17. stop-writes-on-bgsave-error yes
  18. rdbcompression yes
  19. rdbchecksum yes
  20. dbfilename dump.rdb
  21. dir ./
  22. replica-serve-stale-data yes
  23. replica-read-only yes
  24. repl-diskless-sync no
  25. repl-disable-tcp-nodelay no
  26. replica-priority 100
  27. lazyfree-lazy-eviction no
  28. lazyfree-lazy-expire no
  29. lazyfree-lazy-server-del no
  30. replica-lazy-flush no
  31. appendonly yes
  32. appendfilename "appendonly.aof"
  33. no-appendfsync-on-rewrite no
  34. auto-aof-rewrite-percentage 100
  35. auto-aof-rewrite-min-size 64mb
  36. aof-load-truncated yes
  37. aof-use-rdb-preamble yes
  38. lua-time-limit 5000
  39. slowlog-max-len 128
  40. notify-keyspace-events ""
  41. hash-max-ziplist-entries 512
  42. hash-max-ziplist-value 64
  43. list-max-ziplist-size -2
  44. list-compress-depth 0
  45. set-max-intset-entries 512
  46. zset-max-ziplist-entries 128
  47. zset-max-ziplist-value 64
  48. hll-sparse-max-bytes 3000
  49. stream-node-max-bytes 4096
  50. stream-node-max-entries 100
  51. activerehashing yes
  52. hz 10
  53. dynamic-hz yes
  54. aof-rewrite-incremental-fsync yes
  55. rdb-save-incremental-fsync yes
复制代码
创建Redis容器并启动

本次执行下令:

  1. docker run --name redis -p 6379:6379 \
  2. -v /home/redis/data:/data \
  3. -v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
  4. -d redis:bullseye redis-server /etc/redis/redis.conf
复制代码
–name redis 启动容器的名字
-d 后台运行
-p 6379:6379 将容器的 6379(后面那个) 端口映射到主机的 6379(前面那个) 端口
–restart unless-stopped 容器重启战略
-v /home/redis/data:/data 将Redis储存文件夹挂在到主机
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf 将设置文件夹挂在到主机
-d redis:bullseye 启动哪个版本的 Redis (本地镜像的版本)
redis-server /etc/redis/redis.conf Redis 容器中设置 redis-server 每次启动读取 /etc/redis/redis.conf 这个设置为准
--appendonly yes 在Redis容器启动redis-server服务器并打开Redis持久化设置
\ shell 下令换行
查看Redis是否运行

  1. // 查看Docker运行中的容器docker ps
  2. docker ps
  3. | grep redis// 要有0.0.0.0:6379->6379/tcp 表示启动乐成4175589105d7   redis:bullseye   "docker-entrypoint.s…"   21 seconds ago   Up 20 seconds   0.0.0.0:6379->6379/tcp              redis// 如启动失败// –name 给容器起别// -p  端口映射,宿主机:容器// -v  目录挂载// -d  后台启动  redis:相应版本docker run --name myredis -p 6379:6379 -d redis:bullseye
复制代码
进入Redis容器

  1. // 通过 Docker 下令进入 Redis 容器内部// -it 容器名字docker exec -it redis /bin/bashdocker exec -it redis bash// 进入 Redis 控制台redis-cli
  2. // 添加一个变量为 key 为 name , value 为 bella 的内容> set name bella// 查看 key 为 name 的 value 值> get name//安装redis镜像时没有设定暗码,我们这里可以进行设置config set requirepass 暗码// 查看设置的暗码config get requirepass// 提示暗码错误NOAUTH Authentication required// auth 暗码 来进行验证auth 123456 // 或者也可以直接通过Docker Redis 下令进入Redis控制台 (上面两个下令的结合)// exec -it 容器名称docker exec -it redis redis-cli
复制代码
springboot设置Docker

IDEA安装Docker插件
  1. setting-plugin-docker
复制代码
设置Docker信息
TCP socket
  1. Engine API URL: tcp://xx.xx.xx.xx:2375
复制代码
connection successful 表示连接乐成
如连接失败,需开放2375端口
docker设置端口2375

设置启动文件
1)、sudo vim /lib/systemd/system/docker.service
2)、修改下面语句
  1. ExecStart=/usr/bin/dockerd -H unix://
  2. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
复制代码
在web项目src/main/resources 下新建Dockerfile
  1. #基础镜像使用java
  2. FROM openjdk:8-jre
  3. #作者
  4. MAINTAINER xkw
  5. #VOLUME 指定临时文件目录为/tmp
  6. #在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
  7. VOLUME /tmp
  8. #将jar包添加到容器中并命名为app.jar
  9. ADD *.jar app.jar
  10. #暴露8088端口作为服务端口
  11. EXPOSE 8088
  12. #中文编码
  13. ENV LANG C.UTF-8
  14. ENV LANGUAGE zh_CN.UTF-8
  15. ENV LC_ALL C.UTF-8
  16. #运行jar包
  17. ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
  18. # docker启动项目
  19. #docker run -e TZ="Asia/Shanghai" -v /home/project/ecg_algorithm/files/ecgData:/home/project/ecg_algorithm/files/ecgData -v /home/project/ecg_algorithm/logs:/logs --privileged=true -p 9092:9092 --name ecg-web -d ecg-web
复制代码
编辑docker
在build DockerFile 选择上方文件,
在pom.xml文件中添加

  1. <build>
  2.         <finalName>${project.name}</finalName>
  3.         <plugins>
  4.             <plugin>
  5.                 <groupId>org.springframework.boot</groupId>
  6.                 <artifactId>spring-boot-maven-plugin</artifactId>
  7.                 <executions>
  8.                     <execution>
  9.                         <phase>package</phase>
  10.                         <goals>
  11.                             <goal>repackage</goal>
  12.                         </goals>
  13.                     </execution>
  14.                 </executions>
  15.                 <configuration>
  16.                     <includeSystemScope>true</includeSystemScope>
  17.                    <!--指定启动的Application-->
  18.                    <mainClass>cn.com.star.update.DeviceUpdateApplication</mainClass>
  19.                 </configuration>
  20.             </plugin>
  21.             <plugin>
  22.                 <groupId>com.spotify</groupId>
  23.                 <artifactId>docker-maven-plugin</artifactId>
  24.                 <version>1.0.0</version>
  25.                 <!--将插件绑定在某个phase执行-->
  26.                 <executions>
  27.                     <execution>
  28.                         <id>build-image</id>
  29.                         <!--将插件绑定在package这个phase上。也就是说,
  30.                         用户只需执行mvn package ,就会自动执行mvn docker:build-->
  31.                         <phase>package</phase>
  32.                         <goals>
  33.                             <goal>build</goal>
  34.                         </goals>
  35.                     </execution>
  36.                 </executions>
  37.                 <configuration>
  38.                     <!--指定生成的镜像名,这里是我们的项目名-->
  39.                     <imageName>${project.artifactId}</imageName>
  40.                     <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
  41.                     <imageTags>
  42.                         <imageTag>latest</imageTag>
  43.                     </imageTags>
  44.                     <!-- 指定我们项目中Dockerfile文件的路径-->
  45.                     <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
  46.                     <!--指定远程docker 地址-->
  47.                     <dockerHost>http://123.57.57.46:2375</dockerHost>
  48.                     <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
  49.                     <resources>
  50.                         <resource>
  51.                             <targetPath>/</targetPath>
  52.                             <!--jar包所在的路径  此处配置的即对应项目中target目录-->
  53.                             <directory>${project.build.directory}</directory>
  54.                             <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
  55.                             <include>${project.build.finalName}.jar</include>
  56.                         </resource>
  57.                     </resources>
  58.                 </configuration>
  59.             </plugin>
  60.         </plugins>
  61.     </build>
复制代码
在idea中Edit Configuration中添加docker,build-dockFile(选择建好的DockFile,Context-folder(web/traget),Image tag(表示版本号:web:v1.0,Run端口设置 8888 8888,hostIP为空,Protocol:tcp)),点击Modify选择Bind mount,挂载路径:/home/project/ecg_algorithm/files/ecgData:/home/project/ecg_algorithm/files/ecgData /home/project/ecg_algorithm/logs:/home/project/ecg_algorithm/logs 然后点击 Run即可一键部署
执行Maven右侧选项卡Lifecyle ——>clean ——> packages 打包,打包次序从下往上,即最底层的依赖到最上层依次依序
执行下令:
  1. docker run --name 容器名称 -p 8088:8088 -d 镜像名称:版本号
复制代码
idea docker中文乱码的办理办法:

  1. 1、打开IDEA-HELP-Edit Custom VM  Options;
  2. 2、添加代码“-Dfile.encoding=UTF-8”;
  3. 3、重启IDEA即可。
复制代码
查询docker实时日记

  1. docker logs -f 容器名称
复制代码
docker安装nginx

1.搜索nginx镜像
  1. docker search nginx
复制代码
2.拉取镜像
  1. docker pull nginx
复制代码
3、启动nginx
  1. docker run --name mynginx -d -p 80:80 nginx:latest
复制代码
4、挂载设置文件
创建挂载目录
  1. # 创建挂载目录
  2. mkdir -p /home/nginx/{conf,log,html}
复制代码
把Nginx容器中的文件复制
nginx.conf 复制到主机
  1. # 生成容器
  2. docker run --name nginx -p 9001:80 -d nginx
  3. # 将容器nginx.conf文件复制到宿主机(复制容器文件必须先启动容器)
  4. docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
  5. # 将容器conf.d文件夹下内容复制到宿主机
  6. docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
  7. # 将容器中的html文件夹复制到宿主机
  8. docker cp nginx:/usr/share/nginx/html /home/nginx/
复制代码
停止刚刚创建的nginx容器
  1. docker stop 容器名称
复制代码
删除nginx容器
  1. docker rm 窗器ID
复制代码
修改nginx/conf.d/default.conf文件,添加项目部署文件
  1. server {
  2.     # 替换http请求的内部端口
  3.     listen       9092;
  4.         # 窗口映射外部访问端口
  5.     listen  [::]:8093;   
  6.     server_name  localhost;
  7.     client_max_body_size 2048M;
  8.     proxy_set_header Host $host:$server_port;
  9.     proxy_set_header X-Forwarded-For $remote_addr;
  10.     proxy_set_header X-Forwarded-Host $server_name;
  11.     proxy_set_header X-Real-IP $remote_addr;
  12.     proxy_set_header X-Forwarded-Proto $scheme;
  13.     proxy_set_header X-Forwarded-Scheme $scheme;
  14.     #charset koi8-r;
  15.    
  16.     #access_log  logs/host.access.log  main;
  17.     # 前端
  18.     location /  {
  19.         root         /home/project/ecg_algorithm/front/;
  20.         index        index.html;
  21.     }
  22.     # 服务端
  23.     location ^~ /api/ {
  24.         proxy_set_header Host $host:$server_port;
  25.     proxy_set_header X-Forwarded-For $remote_addr;
  26.     proxy_set_header X-Forwarded-Host $server_name;
  27.     proxy_set_header X-Real-IP $remote_addr;
  28.     proxy_set_header X-Forwarded-Proto $scheme;
  29.     proxy_set_header X-Forwarded-Scheme $scheme;
  30.                 # 对应docker项目IP:Port   
  31.         proxy_pass http://10.100.0.200:9092/;
  32.         index /;
  33.         client_max_body_size  100m;
  34.     }
  35.     # 上传的文件
  36.     location /picture/ {
  37.         # 替换项目文件存储的目录
  38.         alias /home/project/ecg_algorithm/files/;
  39.     }
  40.     #location ~* \.(eot|otf|ttf|woff|svg)$ {
  41.     #    add_header Access-Control-Allow-Origin *;
  42.     #}
  43. error_page   500 502 503 504  /50x.html;
  44.            location = /50x.html {
  45.     root   html;
  46.     }
  47. }
复制代码
重新创建容器(把80端口映射到80,9002映射到8093端口,并挂载目录)
9002内部端口 8093指映射的外部端口,必须和default.conf文件对应好,
要把挂载的files和前端项目路径挂载出去,要和nginx.conf保持一致
  1. docker run -p 80:80 -p 8093:9092 --restart=always
  2. --name nginx -v  /home/project/ecg_algorithm/files:/home/project/ecg_algorithm/files -v  /home/project/ecg_algorithm/front:/home/project/ecg_algorithm/front -v  /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
复制代码
重启nginx
(修改default.conf文件后必须要重启nginx)
  1. docker restart nginx
复制代码
安装MQTT

–name 名字

-p 18083 服务器启动端口

-p 1882 TCP端口

-p 8083 WS端口

-p 8084 WSS端口

-p 8883 SSL端口

-d 指定容器

  1. docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6
复制代码
9、Docker安装rabbitmq

  1. docker pull rabbitmq
  2. #运行
  3. docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
  4. # 进入容器内部
  5. docker exec -it 容器id /bin/bash
  6. #运行
  7. rabbitmq-plugins enable rabbitmq_management
复制代码
10、Docker安装Mongodb

  1. <!--1.pull中文版镜像-->docker pull mongo:4<!--2.创建目录-->mkdir -p /mydata/mongodb/datadb<!--3.修改目录权限-->chmod 777 /mydata/mongodb/datadb<!--4.运行--><!--准备好目录之后, 就可以开始运行 Docker 镜像了:-->docker run -d --name mongodb -v /mydata/mongodb/datadb:/data/db -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin --privileged=true mongo:4<!---d 后台运行容器--><!----name mongodb 运行容器名--><!---v /mydata/mongodb/datadb:/data/db 挂载目录--><!---p 27017:27017:将27017映射到外部端口27017 将容器的27017端口映射到主机的27017端口,27017是和宿主机的通信接口,所有docker内部容器的连接使用27017接口,集群设置需连接容器内部27017端口,故最好保持前后端口一致--><!---e MONGO_INITDB_ROOT_USERNAME=admin 指定用户名--><!---e MONGO_INITDB_ROOT_PASSWORD=admin 指定暗码--><!----privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限--><!--5.查看mongodb日记-->docker logs mongodb<!--6、mongodb随 docker 自启动-->docker update mongodb --restart=always
  2. <!--注意:这里的 gitlab 是容器的名字,不是镜像的名字。--><!--7 启动|停止|重启-->docker start mongodbdocker stop mongodbdocker restart mongodb<!--注意:这里的 mongodb 是容器的名字,不是镜像的名字。--><!--8、进入mongodb (optional)-->docker exec -it mongodb /bin/bash<!--按Ctrl+D或输入exit退出。-->
复制代码
11、安装Mongodb

  1. #下载mkdir /opt/srccd /opt/srcwget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.8.tgztar zxf mongodb-linux-x86_64-rhel70-5.0.8.tgz -C /optmv /opt/mongodb-linux-x86_64-rhel70-5.0.8  /opt/mongodb-5.0.8#设置情况变量vi /etc/profile
  2. #文件末了添加此设置(第一种)export MONGODB_HOME=/opt/mongodb-5.0.8export PATH=$PATH:${MONGODB_HOME}/bin#革新设置文件,使之见效source /etc/profile
  3. #创建日记和数据文件夹cd /opt/mongodb-5.0.8/mkdir data logs#在mongodb-5.0.8 下的bin创建设置文件夹cd /opt/mongodb-5.0.8/binvi mongodb.conf# 输入如下设置port=27017 #端口bind_ip=0.0.0.0 #默认是127.0.0.1dbpath=/opt/mongodb-5.0.8/data #数据库存放logpath=/opt/mongodb-5.0.8/logs/mongodb.log #日记文件fork=true #设置后台运行#auth=true #开启认证#启动mongodbcd /opt/mongodb-5.0.8/binmongod --config mongodb.conf#启动完可以先本地测试一下连接mongouse admin# 创建用户名和暗码db.createUser({user: "admin",pwd: "admin",roles: [{ role: "userAdminAnyDatabase", db: "admin" }]})# 用户名和暗码登录db.auth('admin','admin')#创建数据库use ai_monitor_dev#设置数据库用户名和暗码db.createUser({user:"xkw",pwd:"xkw123",roles:[ {role:"readWrite",db:"ai_monitor_dev" } ]})
复制代码
12、搭建Mqtt集群(非docker安装)

用局域网ip,或云服务器私有ip,集群服务器处于同个区域
EMQX集群搭建
要在两台服务器 192.168.1.195 192.168.1.101 上部署 EMQX 集群
需要步调:
把emqx-centos7-v4.0.13.x86_64.rpm 上传到服务器
执行安装下令:rmp -ivh emqx-centos7-v4.0.13.x86_64.rpm
1.安装Erlang(基于Erlang互联)
2.开启emqx集群模式、集群设置
1.安装Erlang
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
(上述失败时:yum -y install epel-release)
sudo yum install erlang
查验:erl
2(1)设置 192.168.1.195 节点

vi /etc/emqx/emqx.conf
修改集群模式为 static

cluster.discovery = static
#####设置节点发现列表
cluster.static.seeds = emqx@192.168.1.195,emqx@192.168.1.101
设置节点名称,请注意,节点标识必须和上面节点发现列表中的一致,否则将无法实现集群节点发现

node.name = emqx@192.168.1.195
emqx重启:
/usr/bin/emqx restart
(2)设置 192.168.1.101 节点
vi /home/emqx/emqx/etc/emqx.conf
修改集群模式为 static

cluster.discovery = static
设置节点发现列表

cluster.static.seeds = emqx@192.168.1.195,emqx@192.168.1.101
设置节点名称,请注意,节点标识必须和上面节点发现列表中的一致,否则将无法实现集群节点发现

node.name = emqx@192.168.1.101
emqx重启
/home/emqx/emqx/bin/emqx restart
进入emqx控制台,查看集群节点情况:
部署项目jar

1、在idea中打包选择 maven-lifecycle-package,先打依赖包再打主项目jar。
2、修改DockFile文件
monitor_center-0.0.1-SNAPSHOT.jar 表示架包名称
monitor_center 拷贝到data目录下并重新命名
8773指项目内部端口
FROM openjdk:8 MAINTAINER xh ADD monitor_center-0.0.1-SNAPSHOT.jar /data/monitor_center.jar EXPOSE 8773 ENTRYPOINT ["java","-jar","/data/monitor_center.jar"]
2、修改dockerstart 文件
  1. #!/bin/shWORKSPACE=''PROJECT=''# 替换项目路径TARGET='/home/project/ai_monitor' #DockerFile路径#替换项目名称NAME='monitor_center' #项目名称#替换项目端口PORT='8775' #容器袒露端口EXPORT='8775' #主机袒露端口CID=$(docker ps
  2. -a
  3. | grep "$NAME" | awk '{print $1}')#修改Jar包名对应上方架包命名CONTAINER_NAME='monitor_center' #Jar包名echo ===容器ID $CID# 以下为jenkins用复制jar脚本 start#cd $WORKSPACE$PROJECT#echo ===当前路径#pwd#echo ===复制文件开始===#cp $CONTAINER_NAME*.jar $TARGET#echo ===复制文件结束===# end# docker操作cd $TARGETecho ===当前路径pwdif [ "$CID" ]; thenecho "存在容器$NAME, CID-$CID"echo ===停止docker容器===docker stop $NAMEecho ===删除docker容器===docker rm $NAMEdocker rmi $NAMEfiecho ===构建docker镜像开始===docker build -f Dockerfile . -t $NAMEecho ===构建docker镜像结束===echo ===启动docker容器===# 替换项目文件存储路径 -v 把容器内日记文件挂载在/home/project/ai_monitor/logs 冒号":"前面的目录是宿主机目录,后面的目录是容器内目录docker run -e TZ="Asia/Shanghai" -v /home/project/ai_monitor/files:/home/project/ai_monitor/files -v /home/project/ai_monitor/logs:/logs --privileged=true -p $PORT:$PORT --name $NAME -d $NAME
复制代码
3、修改nginx文件
cd /usr/local/nginx/conf/
vi nginx.conf
:w! 不保存退出 :wq!保存退出
  1. #user  nobody;
  2. worker_processes  1;
  3. #error_log  logs/error.log;
  4. #error_log  logs/error.log  notice;
  5. #error_log  logs/error.log  info;
  6. #pid        logs/nginx.pid;
  7. events {
  8.     worker_connections  1024;
  9. }
  10. http {
  11.     include       mime.types;
  12.     default_type  application/octet-stream;
  13.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  14.     #                  '$status $body_bytes_sent "$http_referer" '
  15.     #                  '"$http_user_agent" "$http_x_forwarded_for"';
  16.     #access_log  logs/access.log  main;
  17.     sendfile        on;
  18.     #tcp_nopush     on;
  19.     #keepalive_timeout  0;
  20.     keepalive_timeout  65;
  21.     #gzip  on;
  22.         #AI监护仪
  23.     server {
  24.         # 替换http请求的外部端口
  25.         listen       8093;
  26.         server_name  localhost;
  27.         client_max_body_size 2048M;
  28.         proxy_set_header Host $host:$server_port;
  29.         proxy_set_header X-Forwarded-For $remote_addr;
  30.         proxy_set_header X-Forwarded-Host $server_name;
  31.         proxy_set_header X-Real-IP $remote_addr;
  32.         proxy_set_header X-Forwarded-Proto $scheme;
  33.         proxy_set_header X-Forwarded-Scheme $scheme;
  34.         #charset koi8-r;
  35.         
  36.         #access_log  logs/host.access.log  main;
  37.         # 前端
  38.         location /  {
  39.             root         /home/project/ai_monitor/front/;
  40.             index        index.html;
  41.         }
  42.         # 服务端
  43.         location ^~ /api/ {
  44.             proxy_set_header Host $host:$server_port;
  45.             proxy_set_header X-Forwarded-For $remote_addr;
  46.             proxy_set_header X-Forwarded-Host $server_name;
  47.             proxy_set_header X-Real-IP $remote_addr;
  48.             proxy_set_header X-Forwarded-Proto $scheme;
  49.             proxy_set_header X-Forwarded-Scheme $scheme;
  50.             proxy_pass http://123.60.101.61:8775/;
  51.             index /;
  52.             client_max_body_size  100m;
  53.         }
  54.         # 上传的文件
  55.         location /picture/ {
  56.             # 替换项目文件存储的目录
  57.             alias /home/project/ai_monitor/files/;
  58.         }
  59.         #location ~* \.(eot|otf|ttf|woff|svg)$ {
  60.         #    add_header Access-Control-Allow-Origin *;
  61.         #}
  62.         error_page   500 502 503 504  /50x.html;
  63.                location = /50x.html {
  64.             root   html;
  65.         }
  66.     }  
  67.     server {
  68.         listen       80;
  69.         server_name  localhost;
  70.         #charset koi8-r;
  71.         #access_log  logs/host.access.log  main;
  72.         location / {
  73.             root   html;
  74.             index  index.html index.htm;
  75.         }
  76.         #error_page  404              /404.html;
  77.         # redirect server error pages to the static page /50x.html
  78.         #
  79.         error_page   500 502 503 504  /50x.html;
  80.         location = /50x.html {
  81.             root   html;
  82.         }
  83.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  84.         #
  85.         #location ~ \.php$ {
  86.         #    proxy_pass   http://127.0.0.1;
  87.         #}
  88.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  89.         #
  90.         #location ~ \.php$ {
  91.         #    root           html;
  92.         #    fastcgi_pass   127.0.0.1:9000;
  93.         #    fastcgi_index  index.php;
  94.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
  95.         #    include        fastcgi_params;
  96.         #}
  97.         # deny access to .htaccess files, if Apache's document root
  98.         # concurs with nginx's one
  99.         #
  100.         #location ~ /\.ht {
  101.         #    deny  all;
  102.         #}
  103.     }
  104.     # another virtual host using mix of IP-, name-, and port-based configuration
  105.     #
  106.     #server {
  107.     #    listen       8000;
  108.     #    listen       somename:8080;
  109.     #    server_name  somename  alias  another.alias;
  110.     #    location / {
  111.     #        root   html;
  112.     #        index  index.html index.htm;
  113.     #    }
  114.     #}
  115.     # HTTPS server
  116.     #
  117.     #server {
  118.     #    listen       443 ssl;
  119.     #    server_name  localhost;
  120.     #    ssl_certificate      cert.pem;
  121.     #    ssl_certificate_key  cert.key;
  122.     #    ssl_session_cache    shared:SSL:1m;
  123.     #    ssl_session_timeout  5m;
  124.     #    ssl_ciphers  HIGH:!aNULL:!MD5;
  125.     #    ssl_prefer_server_ciphers  on;
  126.     #    location / {
  127.     #        root   html;
  128.     #        index  index.html index.htm;
  129.     #    }
  130.     #}
  131. }
复制代码
4、启动dockerstart文件
  1. sh dockerstart.sh
  2. #查询实时日志
  3. docker logs -f 容器名称
复制代码
5、重启nginx
  1. #进入到nginx/sbin/
  2. cd /usr/local/nginx/sbin/
  3. #检查配置文件语法
  4. ./nginx -t
  5. /nginx/ -tc /usr/local/nginx/conf/nginx.conf
  6. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  7. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  8. # 重新加载
  9. /nginx/ -s reload
复制代码
查询日记文件
  1. #外部访问文件时文件夹必须授权
  2. chmod 777 文件夹
  3. #进入内部容器
  4. docker exec -it 容器id /bin/bash
  5. #日志文件保存在根目录
  6. cd /
  7. cd logs/
  8. # 挂载目录 -v
  9. docker run  -v /home/project/ai_monitor/files:/home/project/ai_monitor/files -v /home/project/ai_monitor/logs:/logs --privileged=true -p $PORT:$PORT --name $NAME -d $NAME
复制代码
Linux常用下令
  1. #查询当前所在目录
  2. pwd
  3. # 查询java进程
  4. ps -ef | grep java
  5. # 列出目前所有的正在内存当中的程序
  6. ps -aux
  7. # 定位文件目录
  8. whereis 文件名
  9. #  查找文件
  10. find / -name '文件名'
  11. <!--下载文件命令:-->
  12. docker cp containerID(CONTAINERNAME):容器内要拷贝的文件或文件夹路径 要拷贝到宿主机内的目标路径
  13. 示例: docker cp mykenkins:/logs /home/project/
  14. mv myfile mydir  #移动目录或文件
  15. cp myfile myfir  #复制目录或文件
复制代码
docker安装rockerMQ

#拉取镜像
  1. #服务
  2. docker pull foxiswho/rocketmq:server-4.7.0
  3. #代理
  4. docker pull foxiswho/rocketmq:broker-4.7.0
复制代码
创建目录
  1. mkdir /opt/rocketmq-server
  2. mkdir /opt/rocketmq-broker/conf -p
复制代码
创建代理设置文件
[root@localhost opt]# cat /opt/rocketmq-broker/conf/broker.conf
  1. namesrvAddr=192.168.1.200:9876
  2. brokerClusterName = DefaultCluster
  3. brokerName = broker-a
  4. brokerId = 0
  5. deleteWhen = 04
  6. fileReservedTime = 48
  7. brokerRole = ASYNC_MASTER
  8. flushDiskType = ASYNC_FLUSH
  9. brokerIP1 = 192.168.1.200
  10. listenPort=10911
复制代码
启动服务
  1. #启动rocketmq-serverdocker run -d \--restart=always
  2. \--name rmqnamesrv \-p 9876:9876 \-v /opt/rocketmq-server/logs:/root/logs \-v /opt/rocketmq-server/store:/root/store \-e "MAX_POSSIBLE_HEAP=100000000" \foxiswho/rocketmq:server-4.7.0 \sh mqnamesrv#如报错#docker: Error response from daemon: driver failed programming external connectivity on endpoint rmqnamesrv (ab8f847cc722d9c07c6ad8cfb29880fe2e27080af158e5a684bbac87a1c3fa86):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --to-destination 172.17.0.5:9876 ! -i docker0: iptables: No chain/target/match by that name.#办理方法:输入指令   重启docker服务及可重新生成自定义链DOCKERsystemctl restart docker
  3.      #启动rocketmq-brokerdocker run -d  \--restart=always
  4. \--name rmqbroker \--link rmqnamesrv:namesrv \-p 10911:10911 \-p 10909:10909 \-v  /opt/rocketmq-broker/logs:/root/logs \-v  /opt/rocketmq-broker/store:/root/store \-v /opt/rocketmq-broker/conf/broker.conf:/opt/rocketmq-4.7.0/conf/broker.conf \-e "NAMESRV_ADDR=namesrv:9876" \-e "MAX_POSSIBLE_HEAP=200000000" \-e "autoCreateTopicEnable=true" \foxiswho/rocketmq:broker-4.7.0 \sh mqbroker -c /opt/rocketmq-4.7.0/conf/broker.conf#启动RocketMQ的管理工具rocketmq-consoledocker run -itd -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.1.200:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t styletang/rocketmq-console-ng:latest
复制代码
docker启动nacos(单机模式、集群模式)

1.拉取nacos镜像
  1. docker pull nacos/nacos-server:v2.1.2
复制代码
2.将nacos容器中的文件拷贝到主机上,以便挂载
2.1.先以单机模式运行nacos
  1. docker run -d --name nacos -p 8848:8848 nacos/nacos-server:v2.1.2
复制代码
查看运行过程:docker logs -f nacos
2.2.将nacos文件拷贝到主机上的/app目录下
  1. docker cp nacos:/home/nacos /app
复制代码
ps:nacos在docker中的默认存放位置为/home/nacos
2.3.删除nacos容器
  1. docker rm -f nacos
复制代码
3.创建nacos数据库
找到/app/nacos/config下的mysql-schema.sql文件,复制内里的内容在mysql中运行,然后会自动生成数据表
4.运行nacos
4.1.以单机模式运行nacos,并使用mysql存储信息
  1. docker run -d --name nacos \-p 8848:8848 \-p 9848:9848 \-p 9849:9849 \--restart=always
  2. \-v /app/nacos/logs:/home/nacos/logs \-v /app/nacos/data:/home/nacos/data \-v /app/nacos/config:/home/nacos/config \-e MODE=standalone \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=192.168.0.200 \  #数据库地址-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_DB_NAME=nacos_2.1.2 \ #数据库名称-e MYSQL_SERVICE_USER=root \   -e MYSQL_SERVICE_PASSWORD=RUI2ghlmcl \nacos/nacos-server:v2.1.2
复制代码
4.2.以集群模式运行nacos,并使用mysql存储信息
  1. docker run -d  \-p 8848:8848 \-p 9848:9848 \-p 9849:9849 \--restart=always
  2. \-v /app/nacos/logs:/home/nacos/logs \-v /app/nacos/data:/home/nacos/data \-v /app/nacos/config:/home/nacos/config \-e MODE=cluster \-e NACOS_SERVERS='10.100.0.200:8848 10.100.0.205:8848' \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=192.168.0.200 \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_DB_NAME=nacos_2.1.2 \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=RUI2ghlmcl \-e TZ=Asia/Shanghai \--name nacos-cluster nacos/nacos-server:v2.1.2
复制代码
nacos2
  1. docker run -d --name nacos-cluster \
  2. -p 8848:8848 \
  3. -p 9848:9848 \
  4. -p 9849:9849 \(9848、9849为nacos2.X新增端口,不加的话SpringBoot服务会注册失败)
  5. –net host \(从桥接模式改成主机模式,用主机的ip地址,不然注册服务可能会出错)
  6. –restart always \(前面为两个短杠,记得修改)
  7. -v /app/nacos/logs:/home/nacos/logs \
  8. -v /app/nacos/data:/home/nacos/data \
  9. -v /app/nacos/config:/home/nacos/config \
  10. -e MODE=cluster \
  11. -e NACOS_SERVERS=192.168.137.134:8848 \(此处为指向其他集群服务的ip地址,如果有多个ip则用单引号括起来)
  12. -e SPRING_DATASOURCE_PLATFORM=mysql \
  13. -e MYSQL_SERVICE_HOST=192.168.137.134 \
  14. -e MYSQL_SERVICE_PORT=3306 \
  15. -e MYSQL_SERVICE_DB_NAME=nacos \
  16. -e MYSQL_SERVICE_USER=root \
  17. -e MYSQL_SERVICE_PASSWORD=数据库密码 \
  18. -e TZ=Asia/Shanghai \(不加时间注册服务时可能会报错)
  19. nacos/nacos-server:v2.1.2
复制代码
创建文件服务器(用于生成url访问)

1、CentOS7中安装httpd
  1. yum install httpd
  2. httpd -version
复制代码
2、修改设置
httpd的设置文件是/etc/httpd/conf/httpd.conf
  1. vi /etc/httpd/conf/httpd.conf
  2. #服务端口设置为8000
  3. Listen 8000
  4. service httpd start :启动
  5. service httpd restart:重新启动
  6. service httpd stop :停止服务
  7. systemctl enable httpd :开机自启动
复制代码
3、测试
在设置文件中可以发现,服务器默认的访问路径在/var/www/html目录下。进入/var/www/html目录,新建一个test.sh文件,输入hello
查询开放端口

  1. netstat -anp
复制代码
1、开启防火墙
  1. systemctl start firewalld
复制代码
2、开放指定端口
  1. firewall-cmd --zone=public --add-port=1935/tcp --permanent
复制代码
下令含义:
--zone #作用域
--add-port=1935/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久见效,没有此参数重启后失效
3、重启防火墙
  1. firewall-cmd --reload
复制代码
访问nacos客户端
http://10.100.0.200:8848/nacos

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4