Skip to content

随记

将成功的东西整理成册,就能永远成功。

搭建运行服务器要做的一些工作,主要介绍Linux系统下,各个环境搭建,以及一些好用的脚本文件。
该文档相当于导航页

软件环境

搭建服务器部署环境

常用linux命令

下载文件且用文件名命名

shell
# 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

文本段写入文件

基本格式
cat > 文件地址 << EOF
文本内容1
文本内容2
EOF
# 注意存在特殊字符需要用“\”转义,例如\$,\\

shell
sudo mkdir -p /etc/docker
# 例如阿里云镜像加速器,写入配置文件
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://7jdhwfuo.mirror.aliyuncs.com"]
}
EOF

解压缩文件相关

  • zip
shell
# 压缩文件,格式: zip -r 压缩文件名.zip 文件地址
zip -r myfile.zip ./*
# 解压文件,格式: unzip -o 压缩文件名.zip
unzip -o myfile.zip

复制文件

  1. 防止出现是否需要提醒覆盖

因为有些时候即便执行了 unalias cp 也没用,不如用下面这招

shell
# 在命令行前加上"\",即可以完成cp -f 不转义,
# 格式:\ cp -f 文件地址 新文件地址
\ cp -f 1.txt test/1.txt

修改配置文件,非vi

比如每次安装后,需要修改配置文件,但是又不想用vi,所以用sed
格式:sed -i 's/旧内容/新内容/g' 文件地址,注意存在特殊字符需要用“\”转义,例如\$,\\

shell
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

防火墙

shell
#启动: 
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

快速设置环境变量

仅针对当前用户

shell
echo "export PATH=\$PATH:\$MAVEN_HOME/bin">>~/.bashrc
source ~/.bashrc

替换配置新写法

常用脚本

后端单独jar部署

更新->编译打包->备份旧包->停服务->更新新包->重启服务->打印日志

shell
#!/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. 生成秘钥

shell
ssh-keygen -t rsa

2. 添加主机名映射

shell
vi /etc/hosts

例如有三个服务器,当前机器是server01,要把server01数据同步到其他服务器

shell
服务器ip server01
服务器ip server02
服务器ip server03

3. 推送秘钥

同送除了自己的服务器,键入推送服务器账密

shell
ssh-copy-id server02
ssh-copy-id server03

4. 添加同步脚本

shell
vi xsync

键入以下内容,从《尚硅谷 Hadoop》课程中学到的

shell
#!/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
shell
# 添加可执行权限
chmod +x xsync
# 移动到环境变量目录,方便全局执行
mv xsync /usr/local/bin/

5. 使用

shell
#使用:xsync 文件路径
xsync /home/shafulin/1.txt

脚本统计耗时

shell
#!/bin/bash
# 开始计时
START_TIME=$(date +%s)

echo 自己的业务...

# 结束计时
END_TIME=$(date +%s)
# 计算耗时并打印
ELAPSED_TIME=$((END_TIME - START_TIME))
echo "脚本执行耗时:$ELAPSED_TIME 秒"

免密登录

原理:把本机公钥写到目标机器 ~/.ssh/authorized_keys

shell
# 本机执行(生成密钥,一路回车)
ssh-keygen -t ed25519
# 一键推送公钥到目标服务器
ssh-copy-id root@目标服务器IP

传输文件到目标服务器

shell
# 传输文件到目标服务器
scp 本地文件 root@目标服务器IP:目标路径
# 推荐使用rsync,可以差异化传输,只传输修改的文件
rsync -avzP 本地文件 root@目标IP:/目标目录

替换jar包内容

参考文档

shell
# 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

中文字体库

shell
# 安装字体库命令
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

windows开启/禁止更新

下载脚本后双击打开即可,参考文档

shell
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"
shell
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings]
"FlightSettingsMaxPauseDays"=-
"PauseFeatureUpdatesStartTime"=-
"PauseFeatureUpdatesEndTime"=-
"PauseQualityUpdatesStartTime"=-
"PauseQualityUpdatesEndTime"=-
"PauseUpdatesStartTime"=-
"PauseUpdatesExpiryTime"=-

windows11显示更多菜单

下载脚本后双击打开即可,参考文档

shell
@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
shell
@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

Released under the MIT License.