chore:移动脚本到对应位置

This commit is contained in:
hsc 2025-03-30 14:27:57 +08:00
commit 03f2b710b0
8 changed files with 562 additions and 0 deletions

17
readme.md Normal file
View File

@ -0,0 +1,17 @@
# 🔧 工具箱 📂 代码片段集合
本仓库整理了日常开发中常用的代码片段,包含 **Shell 💻、Node.js 🚀、SQL 🛠️** 等语言,助力快速复用与效率提升!
---
## 📋 目录
1. **工具集合** 📦 → [跳转](#工具集合)
2. **使用指南** 📖 → [跳转](#使用指南)
3. **贡献说明** 👥 → [跳转](#贡献说明)
4. **联系作者** 📧 → [跳转](#联系作者)
---

103
sh/db/init_postgresql.sh Normal file
View File

@ -0,0 +1,103 @@
#!/bin/bash
# PostgreSQL 14 安装配置脚本 (Rocky Linux 8.0)
# 数据库将安装在 /data/postgresql
# 账号: 1825713423 密码: hsc1825713423
# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
echo "请使用root用户运行此脚本"
exit 1
fi
# 1. 添加PostgreSQL官方仓库
echo "添加PostgreSQL官方YUM仓库..."
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf -qy module disable postgresql
# 2. 安装PostgreSQL 14
echo "安装PostgreSQL 14..."
dnf install -y postgresql14-server postgresql14-contrib
# 3. 创建数据目录并初始化
echo "创建数据目录并初始化数据库..."
mkdir -p /data/postgresql
chown postgres:postgres /data/postgresql
sudo -u postgres /usr/pgsql-14/bin/initdb -D /data/postgresql
# 4. 修改配置文件
echo "配置PostgreSQL..."
cat > /data/postgresql/postgresql.conf <<EOF
listen_addresses = '*'
port = 5432
max_connections = 100
shared_buffers = 128MB
dynamic_shared_memory_type = posix
datestyle = 'iso, mdy'
timezone = 'Asia/Shanghai'
log_timezone = 'Asia/Shanghai'
unix_socket_directories = '/var/run/postgresql'
password_encryption = scram-sha-256
EOF
# 5. 配置客户端认证
cat > /data/postgresql/pg_hba.conf <<EOF
# TYPE DATABASE USER ADDRESS METHOD
local all all scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
host all all 0.0.0.0/0 scram-sha-256
EOF
# 6. 创建系统服务
cat > /etc/systemd/system/postgresql-14.service <<EOF
[Unit]
Description=PostgreSQL 14 database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGDATA=/data/postgresql
OOMScoreAdjust=-1000
ExecStart=/usr/pgsql-14/bin/pg_ctl -D \${PGDATA} start
ExecStop=/usr/pgsql-14/bin/pg_ctl -D \${PGDATA} stop
ExecReload=/usr/pgsql-14/bin/pg_ctl -D \${PGDATA} reload
TimeoutSec=0
[Install]
WantedBy=multi-user.target
EOF
# 7. 启动PostgreSQL服务
echo "启动PostgreSQL服务..."
systemctl daemon-reload
systemctl enable postgresql-14
systemctl start postgresql-14
# 8. 创建指定用户和密码
echo "创建用户和数据库..."
sudo -u postgres psql <<EOF
CREATE USER "1825713423" WITH PASSWORD 'hsc1825713423';
ALTER USER "1825713423" WITH SUPERUSER;
CREATE DATABASE db_1825713423 OWNER "1825713423";
GRANT ALL PRIVILEGES ON DATABASE db_1825713423 TO "1825713423";
EOF
# 9. 开放防火墙
echo "配置防火墙..."
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
# 10. 完成信息
echo "PostgreSQL 14 安装配置完成!"
echo "连接信息:"
echo "主机: localhost"
echo "端口: 5432"
echo "用户名: 1825713423"
echo "密码: hsc1825713423"
echo "默认数据库: db_1825713423"
echo "数据目录: /data/postgresql"
echo "管理命令: systemctl [start|stop|restart] postgresql-14"

View File

@ -0,0 +1,26 @@
#!/bin/bash
# 修复 PostgreSQL 密码认证问题
# 1. 为 postgres 用户设置密码
POSTGRES_PASSWORD="YourStrongPassword@123"
sudo -u postgres psql <<EOF
ALTER USER postgres WITH PASSWORD '${POSTGRES_PASSWORD}';
ALTER USER "1825713423" WITH PASSWORD 'hsc1825713423';
EOF
# 2. 确保 pg_hba.conf 配置正确
sudo -u postgres cat > /data/postgresql/pg_hba.conf <<EOF
# TYPE DATABASE USER ADDRESS METHOD
local all postgres scram-sha-256
local all all scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
host all all 0.0.0.0/0 scram-sha-256
EOF
# 3. 重启服务
sudo systemctl restart postgresql-14
# 4. 验证连接
echo "验证 postgres 用户连接..."
psql -U postgres -h 127.0.0.1 -c "SELECT version();" -W

117
sh/git/init_gitea.sh Normal file
View File

@ -0,0 +1,117 @@
#!/bin/bash
# Gitea 快速安装配置脚本
# 前提条件:
# 1. PostgreSQL 已安装,用户 postgres 密码 hsc1825713423
# 2. Redis 已安装,密码 hsc1825713423
# 3. 安装目录:/data/gitea
# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
echo "请使用root用户运行此脚本!"
exit 1
fi
# 配置参数
GITEA_VERSION="1.21.0"
GITEA_USER="gitea"
GITEA_HOME="/data/gitea"
GITEA_CONFIG="$GITEA_HOME/custom/conf/app.ini"
# 创建用户和目录结构
echo "创建Gitea用户和目录结构..."
useradd -d $GITEA_HOME -m -s /bin/bash $GITEA_USER
mkdir -p $GITEA_HOME/{custom,data,log}
chown -R $GITEA_USER:$GITEA_USER $GITEA_HOME
# 下载Gitea
echo "下载Gitea $GITEA_VERSION..."
wget -O /tmp/gitea https://dl.gitea.io/gitea/$GITEA_VERSION/gitea-$GITEA_VERSION-linux-amd64
chmod +x /tmp/gitea
mv /tmp/gitea $GITEA_HOME/gitea
chown $GITEA_USER:$GITEA_USER $GITEA_HOME/gitea
# 创建配置文件
echo "创建Gitea配置文件..."
cat > $GITEA_CONFIG <<EOF
[server]
APP_DATA_PATH = $GITEA_HOME/data
HTTP_PORT = 3000
ROOT_URL = http://$(hostname):3000/
DISABLE_SSH = false
SSH_PORT = 22
DOMAIN = $(hostname)
LFS_START_SERVER = true
OFFLINE_MODE = false
[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gitea
USER = gitea
PASSWD = hsc1825713423
SSL_MODE = disable
[redis]
ENABLED = true
HOST = 127.0.0.1:6379
PASSWORD = hsc1825713423
DB = 0
[session]
PROVIDER = redis
[cache]
ADAPTER = redis
[queue]
TYPE = redis
[log]
ROOT_PATH = $GITEA_HOME/log
MODE = file
LEVEL = Info
[security]
INSTALL_LOCK = true
SECRET_KEY = $(head -c 16 /dev/urandom | sha256sum | head -c 64)
EOF
# 设置权限
chown $GITEA_USER:$GITEA_USER $GITEA_CONFIG
chmod 640 $GITEA_CONFIG
# 创建systemd服务
echo "创建systemd服务..."
cat > /etc/systemd/system/gitea.service <<EOF
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=postgresql.service
After=redis.service
[Service]
RestartSec=2s
Type=simple
User=$GITEA_USER
Group=$GITEA_USER
WorkingDirectory=$GITEA_HOME
ExecStart=$GITEA_HOME/gitea web --config $GITEA_CONFIG
Restart=always
Environment=USER=$GITEA_USER HOME=$GITEA_HOME
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动服务
systemctl daemon-reload
systemctl enable --now gitea
# 输出信息
echo "Gitea 安装完成!"
echo "访问地址: http://$(hostname -I | awk '{print $1}'):3000"
echo "安装目录: $GITEA_HOME"
echo "配置文件: $GITEA_CONFIG"
echo "管理命令: systemctl [start|stop|restart|status] gitea"

121
sh/linux/init_linux.sh Normal file
View File

@ -0,0 +1,121 @@
#!/bin/bash
# 初始化Linux服务器脚本
# 功能1. 时钟同步配置 2. Yum加速配置 3. 系统基础优化
# 检查是否为root用户
if [ $(id -u) != "0" ]; then
echo "错误请使用root用户执行此脚本"
exit 1
fi
# 定义颜色变量
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${GREEN}开始初始化系统配置...${NC}"
# 1. 配置时钟同步
echo -e "${YELLOW}1. 配置时钟同步服务...${NC}"
# 安装chrony时间同步服务
yum install -y chrony
# 配置chrony使用国内时间服务器
cat > /etc/chrony.conf <<EOF
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp.ntsc.ac.cn iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168/16
local stratum 10
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony
EOF
# 启动并设置开机自启
systemctl enable chronyd --now
timedatectl set-timezone Asia/Shanghai
chronyc sources
echo -e "${GREEN}时钟同步配置完成${NC}"
# 2. 配置国内Yum镜像源
echo -e "${YELLOW}2. 配置阿里云Yum镜像源...${NC}"
# 备份原配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 生成新的配置文件适配CentOS 7/8
cat > /etc/yum.repos.d/CentOS-Base.repo <<EOF
# CentOS-Base.repo
[base]
name=CentOS-\$releasever - Base - Aliyun
baseurl=http://mirrors.aliyun.com/centos/\$releasever/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[appstream]
name=CentOS-\$releasever - AppStream - Aliyun
baseurl=http://mirrors.aliyun.com/centos/\$releasever/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[extras]
name=CentOS-\$releasever - Extras - Aliyun
baseurl=http://mirrors.aliyun.com/centos/\$releasever/extras/\$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[centosplus]
name=CentOS-\$releasever - Plus - Aliyun
baseurl=http://mirrors.aliyun.com/centos/\$releasever/centosplus/\$basearch/os/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
EOF
# 生成缓存
yum clean all
yum makecache
echo -e "${GREEN}Yum镜像源配置完成${NC}"
# 3. 系统基础优化
echo -e "${YELLOW}3. 执行系统基础优化...${NC}"
# 关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
# 关闭防火墙(生产环境慎用)
systemctl stop firewalld
systemctl disable firewalld
# 设置最大打开文件数
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
# 优化内核参数
cat >> /etc/sysctl.conf <<EOF
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 65536 6291456
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
EOF
sysctl -p
echo -e "${GREEN}系统基础优化完成${NC}"
echo -e "${GREEN}所有初始化配置已完成!建议重启系统后使用${NC}"

84
sh/redis/fix_redis.sh Normal file
View File

@ -0,0 +1,84 @@
#!/bin/bash
# Rocky Linux 8 Redis 5.x 基础配置脚本
# 功能配置Redis允许外部访问设置密码基础优化
# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
echo "请使用root用户运行此脚本!"
exit 1
fi
# 定义配置参数
REDIS_PASSWORD="hsc1825713423"
REDIS_CONFIG="/etc/redis.conf"
REDIS_PORT=6379
REDIS_BIND_IP="0.0.0.0" # 允许所有IP访问
# 备份原始配置文件
echo "备份原始配置文件到 /etc/redis.conf.bak..."
cp "$REDIS_CONFIG" "${REDIS_CONFIG}.bak"
# 基础安全配置
echo "配置Redis基础安全设置..."
sed -i "s/^# requirepass .*/requirepass $REDIS_PASSWORD/" "$REDIS_CONFIG"
sed -i "s/^bind 127.0.0.1/bind $REDIS_BIND_IP/" "$REDIS_CONFIG"
sed -i "s/^protected-mode yes/protected-mode no/" "$REDIS_CONFIG" # 关闭保护模式以允许远程访问
# 性能优化配置
echo "配置性能优化参数..."
sed -i "s/^# tcp-keepalive 300/tcp-keepalive 60/" "$REDIS_CONFIG"
sed -i "s/^# maxmemory-policy noeviction/maxmemory-policy allkeys-lru/" "$REDIS_CONFIG"
sed -i "s/^timeout 0/timeout 30/" "$REDIS_CONFIG" # 30秒无操作超时
# 持久化配置
echo "配置持久化选项..."
sed -i "s/^save 900 1/# save 900 1/" "$REDIS_CONFIG"
sed -i "s/^save 300 10/# save 300 10/" "$REDIS_CONFIG"
sed -i "s/^save 60 10000/# save 60 10000/" "$REDIS_CONFIG"
echo "appendonly yes" >> "$REDIS_CONFIG"
echo "appendfsync everysec" >> "$REDIS_CONFIG"
# 限制配置
echo "配置连接限制..."
echo "maxclients 10000" >> "$REDIS_CONFIG"
echo "tcp-backlog 511" >> "$REDIS_CONFIG"
# 防火墙配置
echo "配置防火墙允许Redis端口 $REDIS_PORT..."
if command -v firewall-cmd &> /dev/null; then
firewall-cmd --permanent --add-port=$REDIS_PORT/tcp
firewall-cmd --reload
else
echo "未找到firewalld请确保端口 $REDIS_PORT 已开放"
fi
# 重启Redis服务
echo "重启Redis服务应用配置..."
systemctl restart redis
# 验证配置
echo "验证Redis配置..."
echo "当前绑定IP:"
grep "^bind" "$REDIS_CONFIG"
echo "保护模式状态:"
grep "^protected-mode" "$REDIS_CONFIG"
echo "密码设置:"
grep "^requirepass" "$REDIS_CONFIG"
# 测试远程连接
echo "测试Redis连接..."
echo "本地连接测试:"
redis-cli -a "$REDIS_PASSWORD" ping
echo "如需远程测试,请在其他服务器执行:"
echo "redis-cli -h <你的服务器IP> -p $REDIS_PORT -a $REDIS_PASSWORD ping"
# 完成信息
echo "Redis基础配置完成!"
echo "重要信息:"
echo "- Redis密码: $REDIS_PASSWORD"
echo "- 监听端口: $REDIS_PORT"
echo "- 绑定IP: $REDIS_BIND_IP (允许所有IP访问)"
echo "- 配置文件: $REDIS_CONFIG"
echo "- 管理命令: systemctl [start|stop|restart|status] redis"
echo "注意: 请确保服务器安全组/防火墙已开放 $REDIS_PORT 端口"

80
sh/redis/init_redis.sh Normal file
View File

@ -0,0 +1,80 @@
#!/bin/bash
# Rocky Linux 8 Redis 5.x 安装脚本修复版
# 密码设置为: hsc1825713423
# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
echo "请使用root用户运行此脚本!"
exit 1
fi
# 安装EPEL仓库
echo "正在安装EPEL仓库..."
dnf install -y epel-release
# 安装Redis 5.x
echo "正在安装Redis 5.x..."
dnf install -y redis
# 查找Redis实际安装路径
REDIS_SERVER_PATH=$(which redis-server)
echo "检测到Redis安装路径: $REDIS_SERVER_PATH"
# 创建正确的systemd服务文件
echo "正在修复systemd服务配置..."
cat > /etc/systemd/system/redis.service <<EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
Type=simple
ExecStart=$REDIS_SERVER_PATH /etc/redis.conf
Restart=on-failure
User=redis
Group=redis
[Install]
WantedBy=multi-user.target
EOF
# 配置Redis
echo "正在配置Redis..."
# 设置密码
sed -i "s/# requirepass foobared/requirepass hsc1825713423/" /etc/redis.conf
# 允许远程连接(根据需要取消注释)
# sed -i "s/bind 127.0.0.1/bind 0.0.0.0/" /etc/redis.conf
# 启用保护模式(更安全)
sed -i "s/protected-mode no/protected-mode yes/" /etc/redis.conf
# 修复权限问题
chown redis:redis /etc/redis.conf
chmod 640 /etc/redis.conf
# 重新加载systemd配置
systemctl daemon-reload
# 启动Redis服务并设置开机自启
echo "启动Redis服务..."
systemctl enable --now redis
# 检查Redis状态
echo "检查Redis状态..."
systemctl status redis --no-pager
# 测试Redis连接
echo "测试Redis连接..."
redis-cli -a hsc1825713423 ping
# 输出完成信息
echo "Redis 5.x 安装完成!"
echo "密码: hsc1825713423"
echo "配置文件: /etc/redis.conf"
echo "管理命令:"
echo "启动Redis: systemctl start redis"
echo "停止Redis: systemctl stop redis"
echo "重启Redis: systemctl restart redis"

14
sh/vpn/init_vpn.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# 初始化Linux服务器脚本
# 功能1. 时钟同步配置 2. Yum加速配置 3. 系统基础优化
# 检查是否为root用户
if [ $(id -u) != "0" ]; then
echo "错误请使用root用户执行此脚本"
exit 1
fi
echo 'welcom init vpn'
curl -fsSL https://tailscale.com/install.sh | sh