Linux 部署Java项目
不放棄 2024-10-19 11:07:01 阅读 70
阿里云服务器 初始化云盘后,要更换操作系统操作才能远程登录。
Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
1、安装jdk
把jdk上传至Linux服务器,执行下方解压命令
<code>tar -zxvf /jdk-8u144-linux-x64.tar.gz -C 安装目录
或
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,它是是所有用户的共用的环境变量
vi /etc/profile
在文件中添加
export JAVA_HOME=/usr/local/Java/jdk1.8.0_144
export JRE_HOME=/usr/local/Java/jdk1.8.0_144/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
使环境变量设置立即生效
source /etc/profile
2、安装nginx
安装所需插件
(1)、安装gcc
gcc可以编译 C,C++,Ada,Object C和Java等语言
gcc -v //查看gcc版本
yum -y install gcc //安装命令
(2)、pcre、pcre-devel安装
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
yum install -y pcre pcre-devel
(3)、zlib安装
zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
yum install -y zlib zlib-devel
(4)、安装openssl
openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔
yum install -y openssl openssl-devel
安装nginx
1、下载nginx安装包
wget http://nginx.org/download/nginx-1.9.9.tar.gz
2、把压缩包解压到usr/local/java
tar -zxvf nginx-1.9.9.tar.gz
3、切换到cd /usr/local/java/nginx-1.9.9/下
执行三个命令:
./configure //是可执行的脚本文件,用来检测你的安装平台的目标特征的,并生成Makefile文件
make // 编绎
make install // 安装
执行完make以后报错
make[1]: *** [objs/Makefile:445: objs/src/core/ngx_murmurhash.o] Error 1
make[1]: Leaving directory '/app/nginx-1.9.9'
make: *** [Makefile:8: build] Error 2
解决办法
找到对应的Maakefile文件(我的在 /nginx/objs/Makefile),将gcc参数中的-Werror去掉 再重新make即可
nginx编译时,make后会产生如下报错
①将/nginx目录下/objs/Makefile中的 -Werrori (有的为Wrror)删除(意思是将所有警告当作错误处理,因此要关闭)。
②立马再次编译的话,是会报另一个错误。
③在nginx目录下输入命令:
vim src/os/unix/ngx_user.c
将下图红框内内容注释,退出保存即可正常编译
cd.current_salt[0]=~salt[0];
方式一:传统方法
一、启动
cd usr/local/nginx/sbin
./nginx
二、重启
更改配置重启nginx
kill -HUP 主进程号或进程号文件路径
或者使用
cd /usr/local/nginx/sbin
./nginx -s reload
判断配置文件是否正确
nginx -t -c /usr/local/nginx/conf/nginx.conf
或者
cd /usr/local/nginx/sbin
./nginx -t
如果浏览器无法返回,查看阿里云服务器是否启动 80端口
3、安装Redis
1.下载redis安装包
可以在centos中使用wget命令下载redis安装包:
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
2.安装设置
安装包上传到服务器器后放到期望的目录中,或者是在期望的目录中使用wget命令,会自动下载到当前目录。
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
3.tar解压redis包
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版本
yum -y install gcc automake autoconf libtool make
#1、进入目录
cd redis-4.0.2
#2、编译
make
#3、安装
make install
5.修改配置
在解压目录中会有一个redis的配置文件redis.conf,vim编辑改文件。
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目录中所以需要加上路径
./src/redis-server redis.conf
6.设置redis开机自启动升级为系统服务
redis安装好之后,我们想让redis开机自启动,首先要把redis升级为一个系统服务,redis已经为我们提供好了解决方案。在redis的安装目录中,有一个utils文件夹,该文件夹中有一个install_server.sh文件,我们进入utils目录,执行这个文件。之后我们需要做一些配置,一路回车就可以了。
#注意当前是在redis.xx.xx目录中所以需要加上路径
./install_server.sh
#格式:systemctl start 服务名称
#启动redis
systemctl start redisd
#重启redis
systemctl restart redis
#查看状态
systemctl status redis
#重新加载配置
systemctl daemon-reload
远程连接redis服务器
./redis-cli -h redis服务器IP -p 6379 (默认端口)
1
tips:如果只是连接本地
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
wget https://www.emqx.com/en/downloads/broker/4.0.13/emqx-centos7-v4.0.13.x86_64.rpm //下载
sudo yum install emqx-centos7-v4.0.13.x86_64.rpm //安装
sudo emqx start // 运行
# 启动emqx
./bin/emqx start
# 停止emqx
./bin/emqx stop
# 重启emqx
./bin/emqx restart
# 检查运行状态
./bin/emqx_ctl status
# 服务卸载
./bin/emqx uninstall
在云服务器开放相应端口
http://IP:18083/#/
5、安装Docker
手动安装
卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1:执行如下命令,确保 yum 包更新到最新
yum update
2:如果安装过旧版本的话,执行如下命令卸载旧版本(没哟可以跳过此步骤)
yum remove docker docker-common docker-selinux docker-engine
3:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
4:设置yum源(这里使用的阿里云镜像源地址)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5:查看那个yum源最快,可以看到阿里的最快
yum makecache fast
6:查看docker的版本,可以选择指定版本安装
yum list docker-ce --showduplicates | sort -r
7:安装docker
#安装默认稳定版本
yum -y install docker-ce
#安装指定版本 其中VERSION_STRING 为版本号
sudo yum install docker-ce-<VERSION_STRING>
看到上面内容代表docker已经安装成功了
启动,关闭,开机启动docker
启动docker
service docker start
验证docker启动成功
docker version
看到上面有client和service两部分表示docker安装启动都成功了 !!!
设置docker开机启动
systemctl enable docker
停止docker
systemctl stop docker
查询容器挂载的目录
docker inspect 容器id | grep Mounts -A 20
启动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对其他容器产生影响。)
systemctl restart docker
Docker重启时,自动重启容器
--restart=always
docker打开2375监听端口
创建一个目录用于存储生成的证书和秘钥
mkdir /docker-ca && cd /docker-ca
使用openssl创建CA证书私钥,期间需要输入两次密码,生成文件为ca-key.pem
openssl genrsa -aes256 -out ca-key.pem 4096
Enter pass phrase for ca-key.pem: Your password
根据私钥创建CA证书,期间需要输入上一步设置的私钥密码,然后依次输入国家是 CN,省例如是Guangdong、市Guangzhou、组织名称、组织单位、姓名或服务器名、邮件地址,都可以随意填写,生成文件为ca.pem(注意证书有效期)
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
创建服务端私钥,生成文件为server-key.pem
openssl genrsa -out server-key.pem 4096
创建服务端证书签名请求文件,用于CA证书给服务端证书签名。IP需要换成自己服务器的IP地址,或者域名都可以。生成文件server.csr
openssl req -subj "/CN=Your server IP" -sha256 -new -key server-key.pem -out server.csr
配置白名单,用多个用逗号隔开,例如: IP:192.168.0.1,IP:0.0.0.0,这里需要注意,虽然0.0.0.0可以匹配任意,但是仍然需要配置你的服务器IP(不能是域名),如果省略会造成错误
echo subjectAltName = IP:Your server IP,IP:0.0.0.0 >> extfile.cnf
将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证
echo extendedKeyUsage = serverAuth >> extfile.cnf
创建CA证书签名好的服务端证书,期间需要输入CA证书私钥密码,生成文件为server-cert.pem
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
创建客户端私钥,生成文件为key.pem
openssl genrsa -out key.pem 4096
创建客户端证书签名请求文件,用于CA证书给客户证书签名,生成文件client.csr
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
要使密钥适合客户端身份验证,请创建扩展配置文件
echo extendedKeyUsage = clientAuth >> extfile.cnf
创建CA证书签名好的客户端证书,期间需要输入CA证书私钥密码,生成文件为cert.pem
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
删除不需要的文件,两个证书签名请求
rm -v client.csr server.csr
修改证书为只读权限保证证书安全
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
归集服务器证书
cp server-*.pem /etc/docker/ && cp ca.pem /etc/docker/
最终生成文件如下,有了它们我们就可以进行基于TLS的安全访问了
ca.pem CA证书
ca-key.pem CA证书私钥
server-cert.pem 服务端证书
server-key.pem 服务端证书私钥
cert.pem 客户端证书
key.pem 客户端证书私钥
配置Docker支持TLS
修改docker.service文件
vi /usr/lib/systemd/system/docker.service
修改以ExecStart开头的配置,开启TLS认证,并配置好CA证书、服务端证书和服务端私钥
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
systemctl daemon-reload && systemctl restart docker
重启docker
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
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
2、刷新配置文件,重启docker
systemctl daemon-reload
systemctl restart docker
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://szm81lc6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看系统网络端口2375是否被docker所监听
netstat -tulp
测试是否监听成功
http://ip:2375
启动 Docker。
sudo systemctl start docker
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
sudo docker run hello-world
设置docker开机启动
systemctl enable docker
停止docker
systemctl stop docker
卸载 docker
删除安装包:
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
docker ps -a
(2)关闭容器
docker stop 容器ID 或容器名称
(3)删除容器
docker rm 容器ID或容器名称
(4)查看镜像ID
docker images
(5)删除容器
docker rmi 镜像ID或容器名称
6、安装MySql
1、用 docker search mysql 命令来查看可用版本:
docker search mysql
2、拉取 MySQL 镜像
这里我们拉取官方的最新版本的镜像:
// docker pull mysql:latest
docker pull mysql:5.7
3、查看本地镜像
使用以下命令来查看是否已安装了 mysql:
docker images
在上图中可以看到我们已经安装了最新版本(latest)的 mysql 镜像。
4、运行容器
安装完成后,我们可以使用以下命令来运行 mysql:5.7 容器:
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
docker ps
2、进入容器
# 把容器id替换成你自己的
docker exec -it id /bin/bash
# 也可以直接使用下面的命令,效果一样
docker exec -it mysql /bin/bash
3、输入用户名密码登录,然后就可以正常使用了
mysql -uroot -p123456
7、docker 安装redis
// 搜索所有redis镜像
docker search redis
// 下载指定版本的Redis镜像 (xxx指具体版本号)
docker pull redis:bullseye
// 检查当前所有Docker下载的镜像
docker images
创建Redis配置文件
启动前需要先创建Redis外部挂载的配置文件 ( /home/redis/conf/redis.conf )
之所以要先创建 , 是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 redis.conf 文件
当服务器和容器都不存在 redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为目录创建 , 这并不是我们想要的结果
创建目录
mkdir -p /home/redis/conf
创建文件
touch /home/redis/conf/redis.conf
下面可省略
编辑文件
vi redis.conf
加入以下文件
protected-mode no
port 6379
tcp-backlog 511
requirepass 123456
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
创建Redis容器并启动
本次执行命令:
docker run --name redis -p 6379:6379 \
-v /home/redis/data:/data \
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
-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是否运行
// 查看Docker运行中的容器
docker ps
docker ps | 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容器
// 通过 Docker 命令进入 Redis 容器内部
// -it 容器名字
docker exec -it redis /bin/bash
docker exec -it redis bash
// 进入 Redis 控制台
redis-cli
// 添加一个变量为 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插件
setting-plugin-docker
配置Docker信息
TCP socket
Engine API URL: tcp://xx.xx.xx.xx:2375
connection successful 表示连接成功
如连接失败,需开放2375端口
docker设置端口2375
配置启动文件
1)、sudo vim /lib/systemd/system/docker.service
2)、修改下面语句
ExecStart=/usr/bin/dockerd -H unix://
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
在web项目src/main/resources 下新建Dockerfile
#基础镜像使用java
FROM openjdk:8-jre
#作者
MAINTAINER xkw
#VOLUME 指定临时文件目录为/tmp
#在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
#将jar包添加到容器中并命名为app.jar
ADD *.jar app.jar
#暴露8088端口作为服务端口
EXPOSE 8088
#中文编码
ENV LANG C.UTF-8
ENV LANGUAGE zh_CN.UTF-8
ENV LC_ALL C.UTF-8
#运行jar包
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
# docker启动项目
#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-webcode>
编辑docker
在build DockerFile 选择上方文件,
在pom.xml文件中添加
<build>
<finalName>${project.name}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
<!--指定启动的Application-->
<mainClass>cn.com.star.update.DeviceUpdateApplication</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。也就是说,
用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名,这里是我们的项目名-->
<imageName>${project.artifactId}</imageName>
<!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定我们项目中Dockerfile文件的路径-->
<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
<!--指定远程docker 地址-->
<dockerHost>http://123.57.57.46:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar包所在的路径 此处配置的即对应项目中target目录-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</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 打包,打包顺序从下往上,即最底层的依赖到最上层依次依序
执行命令:
docker run --name 容器名称 -p 8088:8088 -d 镜像名称:版本号
idea docker中文乱码的解决办法:
1、打开IDEA-HELP-Edit Custom VM Options;
2、添加代码“-Dfile.encoding=UTF-8”;
3、重启IDEA即可。
查询docker实时日志
docker logs -f 容器名称
docker安装nginx
1.搜索nginx镜像
docker search nginx
2.拉取镜像
docker pull nginx
3、启动nginx
docker run --name mynginx -d -p 80:80 nginx:latest
4、挂载配置文件
创建挂载目录
# 创建挂载目录
mkdir -p /home/nginx/{conf,log,html}
把Nginx容器中的文件复制
nginx.conf 复制到主机
# 生成容器
docker run --name nginx -p 9001:80 -d nginx
# 将容器nginx.conf文件复制到宿主机(复制容器文件必须先启动容器)
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
停止刚刚创建的nginx容器
docker stop 容器名称
删除nginx容器
docker rm 窗器ID
修改nginx/conf.d/default.conf文件,添加项目部署文件
server {
# 替换http请求的内部端口
listen 9092;
# 窗口映射外部访问端口
listen [::]:8093;
server_name localhost;
client_max_body_size 2048M;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
#charset koi8-r;
#access_log logs/host.access.log main;
# 前端
location / {
root /home/project/ecg_algorithm/front/;
index index.html;
}
# 服务端
location ^~ /api/ {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
# 对应docker项目IP:Port
proxy_pass http://10.100.0.200:9092/;
index /;
client_max_body_size 100m;
}
# 上传的文件
location /picture/ {
# 替换项目文件存储的目录
alias /home/project/ecg_algorithm/files/;
}
#location ~* \.(eot|otf|ttf|woff|svg)$ {
# add_header Access-Control-Allow-Origin *;
#}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
重新创建容器(把80端口映射到80,9002映射到8093端口,并挂载目录)
9002内部端口 8093指映射的外部端口,必须和default.conf文件对应好,
要把挂载的files和前端项目路径挂载出去,要和nginx.conf保持一致
docker run -p 80:80 -p 8093:9092 --restart=always --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)
docker restart nginx
安装MQTT
拉取镜像
docker pull emqx/emqx:5.0.4
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.0.4
#docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6
运行镜像
–name 名字
-p 18083 服务器启动端口
-p 1882 TCP端口
-p 8083 WS端口
-p 8084 WSS端口
-p 8883 SSL端口
-d 指定容器
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
进入emq服务页面
在浏览器输入机器IP:18083 就可以进入emqtt页面
9、Docker安装rabbitmq
docker pull rabbitmq
#运行
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
# 进入容器内部
docker exec -it 容器id /bin/bash
#运行
rabbitmq-plugins enable rabbitmq_management
10、Docker安装Mongodb
<!--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
<!--注意:这里的 gitlab 是容器的名字,不是镜像的名字。-->
<!--7 启动|停止|重启-->
docker start mongodb
docker stop mongodb
docker restart mongodb
<!--注意:这里的 mongodb 是容器的名字,不是镜像的名字。-->
<!--8、进入mongodb (optional)-->
docker exec -it mongodb /bin/bash
<!--按Ctrl+D或输入exit退出。-->
11、安装Mongodb
#下载
mkdir /opt/src
cd /opt/src
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.8.tgz
tar zxf mongodb-linux-x86_64-rhel70-5.0.8.tgz -C /opt
mv /opt/mongodb-linux-x86_64-rhel70-5.0.8 /opt/mongodb-5.0.8
#配置环境变量
vi /etc/profile
#文件最后添加此配置(第一种)
export MONGODB_HOME=/opt/mongodb-5.0.8
export PATH=$PATH:${MONGODB_HOME}/bin
#刷新配置文件,使之生效
source /etc/profile
#建立日志和数据文件夹
cd /opt/mongodb-5.0.8/
mkdir data logs
#在mongodb-5.0.8 下的bin建立配置文件夹
cd /opt/mongodb-5.0.8/bin
vi mongodb.conf
# 输入如下配置
port=27017 #端口
bind_ip=0.0.0.0 #默认是127.0.0.1
dbpath=/opt/mongodb-5.0.8/data #数据库存放
logpath=/opt/mongodb-5.0.8/logs/mongodb.log #日志文件
fork=true #设置后台运行
#auth=true #开启认证
#启动mongodb
cd /opt/mongodb-5.0.8/bin
mongod --config mongodb.conf
#启动完可以先本地测试一下连接
mongo
use 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 文件
#!/bin/sh
WORKSPACE=''code>
PROJECT=''code>
# 替换项目路径
TARGET='/home/project/ai_monitor' #DockerFile路径code>
#替换项目名称
NAME='monitor_center' #项目名称code>
#替换项目端口
PORT='8775' #容器暴露端口code>
EXPORT='8775' #主机暴露端口code>
CID=$(docker ps -a | grep "$NAME" | awk '{print $1}')
#修改Jar包名对应上方架包命名
CONTAINER_NAME='monitor_center' #Jar包名code>
echo ===容器ID $CID
# 以下为jenkins用复制jar脚本 start
#cd $WORKSPACE$PROJECT
#echo ===当前路径
#pwd
#echo ===复制文件开始===
#cp $CONTAINER_NAME*.jar $TARGET
#echo ===复制文件结束===
# end
# docker操作
cd $TARGET
echo ===当前路径
pwd
if [ "$CID" ]; then
echo "存在容器$NAME, CID-$CID"
echo ===停止docker容器===
docker stop $NAME
echo ===删除docker容器===
docker rm $NAME
docker rmi $NAME
fi
echo ===构建docker镜像开始===
docker build -f Dockerfile . -t $NAME
echo ===构建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 $NAMEcode>
3、修改nginx文件
cd /usr/local/nginx/conf/
vi nginx.conf
:w! 不保存退出 :wq!保存退出
#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;
#AI监护仪
server {
# 替换http请求的外部端口
listen 8093;
server_name localhost;
client_max_body_size 2048M;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
#charset koi8-r;
#access_log logs/host.access.log main;
# 前端
location / {
root /home/project/ai_monitor/front/;
index index.html;
}
# 服务端
location ^~ /api/ {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_pass http://123.60.101.61:8775/;
index /;
client_max_body_size 100m;
}
# 上传的文件
location /picture/ {
# 替换项目文件存储的目录
alias /home/project/ai_monitor/files/;
}
#location ~* \.(eot|otf|ttf|woff|svg)$ {
# add_header Access-Control-Allow-Origin *;
#}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# 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;
# }
#}
}
4、启动dockerstart文件
sh dockerstart.sh
#查询实时日志
docker logs -f 容器名称
5、重启nginx
#进入到nginx/sbin/
cd /usr/local/nginx/sbin/
#检查配置文件语法
./nginx -t
/nginx/ -tc /usr/local/nginx/conf/nginx.conf
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 重新加载
/nginx/ -s reload
查询日志文件
#外部访问文件时文件夹必须授权
chmod 777 文件夹
#进入内部容器
docker exec -it 容器id /bin/bash
#日志文件保存在根目录
cd /
cd logs/
# 挂载目录 -v
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常用命令
#查询当前所在目录
pwd
# 查询java进程
ps -ef | grep java
# 列出目前所有的正在内存当中的程序
ps -aux
# 定位文件目录
whereis 文件名
# 查找文件
find / -name '文件名'
<!--下载文件命令:-->
docker cp containerID(CONTAINERNAME):容器内要拷贝的文件或文件夹路径 要拷贝到宿主机内的目标路径
示例: docker cp mykenkins:/logs /home/project/
mv myfile mydir #移动目录或文件
cp myfile myfir #复制目录或文件
docker安装rockerMQ
#拉取镜像
#服务
docker pull foxiswho/rocketmq:server-4.7.0
#代理
docker pull foxiswho/rocketmq:broker-4.7.0
创建目录
mkdir /opt/rocketmq-server
mkdir /opt/rocketmq-broker/conf -p
创建代理配置文件
[root@localhost opt]# cat /opt/rocketmq-broker/conf/broker.conf
namesrvAddr=192.168.1.200:9876
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.1.200
listenPort=10911
启动服务
#启动rocketmq-server
docker run -d \
--restart=always \
--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服务及可重新生成自定义链DOCKER
systemctl restart docker
#启动rocketmq-broker
docker run -d \
--restart=always \
--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-console
docker 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镜像
docker pull nacos/nacos-server:v2.1.2
2.将nacos容器中的文件拷贝到主机上,以便挂载
2.1.先以单机模式运行nacos
docker run -d --name nacos -p 8848:8848 nacos/nacos-server:v2.1.2
查看运行过程:docker logs -f nacos
2.2.将nacos文件拷贝到主机上的/app目录下
docker cp nacos:/home/nacos /app
ps:nacos在docker中的默认存放位置为/home/nacos
2.3.删除nacos容器
docker rm -f nacos
3.创建nacos数据库
找到/app/nacos/config下的mysql-schema.sql文件,复制里面的内容在mysql中运行,然后会自动生成数据表
4.运行nacos
4.1.以单机模式运行nacos,并使用mysql存储信息
docker run -d --name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
-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存储信息
docker run -d \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
-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' \code>
-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
docker run -d --name nacos-cluster \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \(9848、9849为nacos2.X新增端口,不加的话SpringBoot服务会注册失败)
–net host \(从桥接模式改成主机模式,用主机的ip地址,不然注册服务可能会出错)
–restart always \(前面为两个短杠,记得修改)
-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=192.168.137.134:8848 \(此处为指向其他集群服务的ip地址,如果有多个ip则用单引号括起来)
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.137.134 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=数据库密码 \
-e TZ=Asia/Shanghai \(不加时间注册服务时可能会报错)
nacos/nacos-server:v2.1.2
创建文件服务器(用于生成url访问)
1、CentOS7中安装httpd
yum install httpd
httpd -version
2、修改配置
httpd的配置文件是/etc/httpd/conf/httpd.conf
vi /etc/httpd/conf/httpd.conf
#服务端口设置为8000
Listen 8000
service httpd start :启动
service httpd restart:重新启动
service httpd stop :停止服务
systemctl enable httpd :开机自启动
3、测试
在配置文件中可以发现,服务器默认的访问路径在/var/www/html目录下。进入/var/www/html目录,新建一个test.sh文件,输入hello
查询开放端口
netstat -anp
1、开启防火墙
systemctl start firewalld
2、开放指定端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
命令含义:
--zone #作用域
--add-port=1935/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
3、重启防火墙
firewall-cmd --reload
访问nacos客户端
http://10.100.0.200:8848/nacos
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。