部署项目
沙福林 2023-04-09 23:14:00
部署
nginx
jdk
nodejs
redis
mysql
同步脚本
常用脚本
搭建运行服务器要做的一些工作,主要介绍Linux系统下,各个环境搭建,以及一些好用的脚本文件。
该文档相当于导航页
# 软件环境
搭建服务器部署环境
# 常用linux命令
# 下载文件且用文件名命名
# wget -O 文件名 下载链接
wget -O node-v20.0.0-linux-x64.tar.gz https://registry.npmmirror.com/-/binary/node/latest-v20.x/node-v20.0.0-linux-x64.tar.gz
1
2
2
# 文本段写入文件
基本格式
cat > 文件地址 << EOF
文本内容1
文本内容2
EOF
# 注意存在特殊字符需要用“\”转义,例如\$,\\
sudo mkdir -p /etc/docker
# 例如阿里云镜像加速器,写入配置文件
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://7jdhwfuo.mirror.aliyuncs.com"]
}
EOF
1
2
3
4
5
6
7
2
3
4
5
6
7
# 解压缩文件相关
- zip
# 压缩文件,格式: zip -r 压缩文件名.zip 文件地址
zip -r myfile.zip ./*
# 解压文件,格式: unzip -o 压缩文件名.zip
unzip -o myfile.zip
1
2
3
4
2
3
4
# 复制文件
- 防止出现是否需要提醒覆盖
因为有些时候即便执行了
unalias cp也没用,不如用下面这招
# 在命令行前加上"\",即可以完成cp -f 不转义,
# 格式:\ cp -f 文件地址 新文件地址
\ cp -f 1.txt test/1.txt
1
2
3
2
3
# 修改配置文件,非vi
比如每次安装后,需要修改配置文件,但是又不想用vi,所以用sed
格式:sed -i 's/旧内容/新内容/g' 文件地址,注意存在特殊字符需要用“\”转义,例如\$,\\
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
1
# 防火墙
#启动:
systemctl start firewalld
#关闭:
systemctl stop firewalld
#查看状态:
systemctl status firewalld
#开机禁用:
systemctl disable firewalld
#开机启用:
systemctl enable firewalld
# 添加端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 重新载入防火墙配置
firewall-cmd --reload
# 查看单个端口状态
firewall-cmd --zone=public --query-port=6379/tcp
# 查看所有端口
firewall-cmd --zone=public --list-ports
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 快速设置环境变量
仅针对当前用户
echo "export PATH=\$PATH:\$MAVEN_HOME/bin">>~/.bashrc
source ~/.bashrc
1
2
2
替换配置新写法
# 常用脚本
# 后端单独jar部署
更新->编译打包->备份旧包->停服务->更新新包->重启服务->打印日志
#!/bin/bash
echo 切换到项目所在目录
cd /home/project/prod-erp
echo 更新代码
git pull
echo 打包项目
mvnd clean package -Dmaven.test.skip=true
echo 备份上一次的工程
cd /app/server/DNA-tomcat/webapps/
cp -f ruoyi-admin.war ruoyi-admin_$(date +%Y%m%d%H%M).war.bak
echo 停止进程
ps -ef|grep DNA-tomcat | grep -v grep | awk '{print $2}' | xargs kill -9
echo 替换本次war包
cp -f /home/project/prod-erp/ruoyi-admin/target/ruoyi-admin.war .
echo 启动DNA-tomcat
sh /app/server/DNA-tomcat/bin/startup.sh
echo 查看启动日志
tail -100f /app/server/DNA-tomcat/logs/catalina.out
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 同步脚本
# 1. 生成秘钥
ssh-keygen -t rsa
1
# 2. 添加主机名映射
vi /etc/hosts
1
例如有三个服务器,当前机器是server01,要把server01数据同步到其他服务器
服务器ip server01
服务器ip server02
服务器ip server03
1
2
3
2
3
# 3. 推送秘钥
同送除了自己的服务器,键入推送服务器账密
ssh-copy-id server02
ssh-copy-id server03
1
2
2
# 4. 添加同步脚本
vi xsync
1
键入以下内容,从《尚硅谷 Hadoop》课程中学到的
#!/bin/bash
#1. 判断参数个数
# 判断参数是否小于1
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
# 对 server02,server03 都进行分发
for host in server02 server03
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
# 如果不存在
else
echo $file does not exists!
fi
done
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 添加可执行权限
chmod +x xsync
# 移动到环境变量目录,方便全局执行
mv xsync /usr/local/bin/
1
2
3
4
2
3
4
# 5. 使用
#使用:xsync 文件路径
xsync /home/shafulin/1.txt
1
2
2
# 脚本统计耗时
#!/bin/bash
# 开始计时
START_TIME=$(date +%s)
echo 自己的业务...
# 结束计时
END_TIME=$(date +%s)
# 计算耗时并打印
ELAPSED_TIME=$((END_TIME - START_TIME))
echo "脚本执行耗时:$ELAPSED_TIME 秒"
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 替换jar包内容
# 1. 查找文件
jar -tvf xxxx.jar | grep application.yml
# 2. 解压指定文件
jar -xvf xxxx.jar BOOT-INF/classes/application.yml
# 3. 压缩修改完毕的文件
jar -uvf xxxx.jar BOOT-INF/classes/application.yml
1
2
3
4
5
6
2
3
4
5
6
# 中文字体库
# 安装字体库命令
yum install -y fontconfig
# 切换到字体所在目录,并下载字体包
cd /usr/share/fonts;wget https://dz.shopec.com.cn/image-server/fonts.zip
# 解压字体库
unzip fonts.zip
# 刷新字体库
fc-cache -fv
# 查看已安装字体
fc-list
# 查看已安装中文字体
fc-list :lang=zh-cn
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# windows开启/禁止更新
下载脚本后双击打开即可,参考文档 (opens new window)
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings]
"FlightSettingsMaxPauseDays"=dword:00001b58
"PauseFeatureUpdatesStartTime"="2023-07-07T10:00:52Z"
"PauseFeatureUpdatesEndTime"="2042-09-05T09:59:52Z"
"PauseQualityUpdatesStartTime"="2023-07-07T10:00:52Z"
"PauseQualityUpdatesEndTime"="2042-09-05T09:59:52Z"
"PauseUpdatesStartTime"="2023-07-07T09:59:52Z"
"PauseUpdatesExpiryTime"="2042-09-05T09:59:52Z"
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings]
"FlightSettingsMaxPauseDays"=-
"PauseFeatureUpdatesStartTime"=-
"PauseFeatureUpdatesEndTime"=-
"PauseQualityUpdatesStartTime"=-
"PauseQualityUpdatesEndTime"=-
"PauseUpdatesStartTime"=-
"PauseUpdatesExpiryTime"=-
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# windows11显示更多菜单
下载脚本后双击打开即可,参考文档 (opens new window)
@echo off
reg add "HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /ve /f
taskkill /f /im explorer.exe
start explorer.exe
1
2
3
4
2
3
4
@echo off
reg delete "HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f
taskkill /f /im explorer.exe
start explorer.exe
1
2
3
4
2
3
4