使用shell拉取代码并部署

#!/bin/bash

# @Author: admin
# @Date:   2023-11-22 17:20:22
# @Last Modified by:   admin
# @Last Modified time: 2023-11-22 20:58:01

# 添加部署脚本
# 首先给脚本执行权限 chmod +x ./deploy.sh
# 使用: ./gitee.sh
# 或: ./deploy.sh www  // www为最终发布目录的所属用户
# 源码将发布到 destDir设置的目录下

# read -p "请输入gitee账号 :" username

# while true
# do
#         if [ ! -n "$username" ];then
#                 read -p "必须输入请输入gitee账号 或者q退出:" username

#         else
#                 if [ "$username" = "q" ];then
#                         exit 0
#                     else
#                         break
#                 fi

#         fi

# done

# read -p "请输入gitee密码 :" password

# while true
# do
#         if [ ! -n "$password" ];then
#                 read -p "必须输入请输入gitee密码 或者q退出:" password

#         else
#                 if [ "$password" = "q" ];then
#                         exit 0
#                     else
#                         break
#                 fi

#         fi

# done


echo '--初始化目录--'
# 临时目录,多个仓库应该使用不同的临时目录
tmpDir="$(pwd)/.qqmasterTemp"
# 部署目录不能与脚本所有目录相同
newDir="$(pwd)/qqmaster"


if [ ! -e "$tmpDir" ];then

    mkdir "$tmpDir"
fi

if [ ! -e "$newDir" ];then

    mkdir "$newDir"
fi



# 代码仓库目录 deploy:gitlab-ci-token修改为部署令牌和密码,也可以是gitlab用户和密码
repository="https://gitee.com/wangzh/qqmaster.git"


# if [ -d $tmpDir ]
# then
#     rm -rf $tmpDir
# fi

echo '--拉取代码--'
git clone $repository $tmpDir

echo '--拉取完成--'

#切換分支
echo '--切換分支--'
cd $tmpDir && git checkout dev

echo '--刪除不能覆蓋的文件--'
cd $tmpDir && rm -rf ApiAdmin/.env && rm -rf ApiAdmin/config && rm -rf ApiAdmin/.git && rm -rf ApiAdmin/cert


# 拷贝源码到部署目录
echo '--拷贝源码到部署目录--'
cd $tmpDir && cp -rf "./" $newDir

echo '--为项目赋权--'
cd $newDir && sudo -S chown -R www:www ./*  && sudo -S chmod -R 755 ./*

echo '--移除临时目录--'
rm -rf $tmpDir


echo "--发布完成--"

此方法的好处是可以避免一些冲突提示

此方法的缺点是仓库用的是码云的,每次使用https方式拉取都要输入账号密码

js递归修改数据节点

function formatPrice(list,field,price) {
    list.forEach(item => {
        item[field] = price//实际处理的代码
        if (item.children) {
            if (item.children.length === 0) {
                delete item.children;
            } else if (item.children.length > 0) {
                formatPrice(item.children,field,price);
            }
        }
    });
    return data;
}

Linux硬盘挂载

输入 lsblk-f 查看所有设备的挂载情况
2023-11-13T03:12:04.png
例如我的是 /dev/sdb

将新添加的硬盘分区 输入命令fdisk /dev/sdb
2023-11-13T03:12:11.png
输入p创建主分区
2023-11-13T03:12:29.png
默认1即可
2023-11-13T03:13:00.png

分区创建好了之后 输入 w 保存退出
2023-11-13T03:14:18.png

分区创建好了之后 将分区格式化 格式化命令 mkfs -t ext4 /dev/sdb
2023-11-13T03:14:55.png

所有操作完成后就可以开始挂载了
mount /dev/sdb /指定文件的路径

挂载完后后设置开机自动挂载

先使用 df -TH 查看硬盘列表
2023-11-13T03:17:24.png

查看挂载的磁盘属性
2023-11-13T03:18:44.png

打开配置文件,写入自动配置
2023-11-13T03:19:42.png

参数说明:
第一列为UUID,此处填写查询到的磁盘分区的UUID
第二列为磁盘分区的挂载目录,可以通过df -TH命令查询
第三列为磁盘分区的文件系统格式,可以通过df -TH命令查询
第四列为磁盘分区的挂载选项,此处通常设置为defaults即可
第五列为Linux dump备份选项
(1) 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
(2) 表示使用Linux dump备份。
第六列为fsck选项,即开机时是否使用fsck检查磁盘。
(1) 0表示不检验。
(2) 挂载点为(/)根目录的分区,此处必须填写1。
(3) 根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。

最后保存配置即可

sh脚本拉取线上代码部署网站

#!/bin/bash

# 添加部署脚本
# 首先给脚本执行权限 chmod +x ./deploy.sh
# 使用: ./deploy.sh
# 或: ./deploy.sh www  // www为最终发布目录的所属用户
# 源码将发布到 destDir设置的目录下

user=${1:-"none"}
# 当前用户密码,用于sudo提权
sudoPwd=""
# 临时目录,多个仓库应该使用不同的临时目录
tmpDir="$(pwd)/.deploy"
# 部署目录不能与脚本所有目录相同
destDir="$(pwd)/destDir"
# 代码仓库目录 deploy:gitlab-ci-token修改为部署令牌和密码,也可以是gitlab用户和密码
repository="http://deploy:gitlab-ci-token@git仓库地址"

echo '初始化目录'
if [ -d $tmpDir ]
then
    rm -rf $tmpDir
fi

echo '拉取代码'
git clone $repository $tmpDir

rm -rf $tmpDir/.git
echo '发布代码'
# 拷贝源码到部署目录
cp -rf $tmpDir $destDir

if [ "$user" != "none" ]
then
    if [ "$sudoPwd" = "" ]
    then
        echo '缺少用户密码'
        exit 1
    fi
    # 修改目录权限
    echo "$sudoPwd" | sudo -S chown -R $user: $destDir
fi

echo '移除仓库'
rm -rf $tmpDir

echo '发布完成'

PHP调试函数

  • 该函数可以替代var_dump
  • 每次使用会输出调用地址
function ds($val,...$param) {
    $call_info = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
    if (isset($call_info[0]['file'])) {
        $call_info = "{$call_info[0]['file']} | {$call_info[0]['line']}";
    }else{
        $call_info = '';
    }

    echo "<font size='1'>{$call_info}</font>";
    echo "<pre>";
    dump($val,...$param);
    echo "</pre>";
    exit("exit ^");
}

css图片单页

页面就一张图片,无论PC或mobile打开都让图片充满整个屏幕

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>剧本鲨俱乐部!</title>
    <style>
    *{
        margin:0;
        padding:0;
    }
    .box {
        width: auto;
        height: 100%
    }

    .box img {
        width: 100%;
        height: 100%
    }
    </style>
</head>
<body>
    <div class="box">
        <img src="photo_2023-06-17_21-49-52.jpg" />
    </div>
</body>
</html>

搭建ssr

CentOS 6和7/Debian6+/Ubuntu14+ ShadowsocksR/Shadowsocks一键部署管理脚本:

yum -y install wget
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ss-go.sh && chmod +x ss-go.sh && bash ss-go.sh
  • 如果搭建SSR账号,请使用脚本一,目前推荐的SSR参数设置为以下,有利于突破网络封锁,参数如下:
  1. 加密方式:none 协议:origin 混淆:tls1.2_ticket_auth
  2. 加密方式:none 协议:auth_chain_a 混淆:tls1.2_ticket_auth
  3. 如果搭建SS账号,请使用脚本二,加密方式可选aes-256-gcm,或者高阶篇的SS+插件模式(推荐)
  4. 推荐搭建SSR账号。

安装完成后,快捷管理命令:

bash ssr.sh

input type="range" 滑块

[type="range"] {
            border:none !important;
            outline: none !important;
            -webkit-appearance: none;
            appearance: none;
            margin: 0;
            background-color: transparent;
            width: 500px;
        }
        [type="range"]::-webkit-slider-runnable-track {
            height: 4px;
            background: #eee;
        }
        [type="range" i]::-webkit-slider-container {
            height: 20px;
            overflow: hidden;
        }
        [type="range"]::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: #f44336;
            border: 1px solid transparent;
            margin-top: -8px;
            border-image: linear-gradient(#f44336,#f44336) 0 fill / 8 20 8 0 / 0px 0px 0 2000px;
        }
<input type="range" name="salary" class="form-control mb-3" step="10" min="1000" max="50000">

效果图
2023-03-11T14:18:43.png