feat(init): 添加阿里云源初始化脚本

- 新增 linux-ali.sh 脚本
- 更新 README.md,添加阿里云源初始化说明
- 重命名 nginx 配置示例,从 git.sugarscat.cn 改为 example
- 更新 nginx 配置示例的 README.md
This commit is contained in:
2025-05-14 22:27:26 +08:00
parent 03702ac74b
commit bc2f167198
7 changed files with 188 additions and 85 deletions

View File

@@ -11,3 +11,14 @@ curl -sSL https://git.sugarscat.cn/me/script/-/raw/main/init/linux.sh | bash
1. 更换软件源为 `清华大学源`
2. 更换DNS为 `114.114.114.114``223.5.5.5`
3. 设置时区 `Asia/Shanghai` 和时间同步
```bash
curl -sSL https://git.sugarscat.cn/me/script/-/raw/main/init/linux-ali.sh | bash
```
进行的操作有:
1. 更换软件源为 `阿里云源`
2. 更换DNS为 `114.114.114.114``223.5.5.5`
3. 设置时区 `Asia/Shanghai` 和时间同步

90
init/linux-ali.sh Normal file
View File

@@ -0,0 +1,90 @@
#!/bin/bash
set -euo pipefail
echo "=== 通用 Linux 初始化脚本(阿里云版) ==="
# 获取系统信息
DISTRO_ID=$(grep ^ID= /etc/os-release | cut -d= -f2 | tr -d '"')
DISTRO_NAME=$(grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2 | tr -d '"')
CODENAME=$(lsb_release -cs 2>/dev/null || echo "")
echo "检测到系统: $DISTRO_NAME"
# 设置 DNS
set_dns() {
echo "配置 DNS 到 114.114.114.114 和 223.5.5.5..."
echo -e "nameserver 114.114.114.114\nnameserver 223.5.5.5" > /etc/resolv.conf || true
}
# 设置时区和同步时间
set_timezone() {
echo "设置时区为 Asia/Shanghai..."
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime || true
if command -v timedatectl >/dev/null 2>&1; then
timedatectl set-timezone Asia/Shanghai || true
timedatectl set-ntp true || true
else
echo "timedatectl 不可用,尝试使用 ntpdate..."
(apt install -y ntpdate || yum install -y ntpdate || dnf install -y ntpdate) >/dev/null 2>&1 || true
ntpdate ntp.aliyun.com || true
fi
}
# 设置软件源
set_mirrors() {
echo "更换软件源为阿里云镜像..."
case "$DISTRO_ID" in
ubuntu)
cat > /etc/apt/sources.list <<EOF
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME} main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME}-security main restricted universe multiverse
EOF
apt update -y || true
;;
debian|raspbian)
cat > /etc/apt/sources.list <<EOF
deb http://mirrors.aliyun.com/${DISTRO_ID}/ ${CODENAME} main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/${DISTRO_ID}/ ${CODENAME}-updates main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/${DISTRO_ID}/ ${CODENAME}-backports main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/${DISTRO_ID}-security ${CODENAME}-security main contrib non-free non-free-firmware
EOF
apt update -y || true
;;
centos|rhel|almalinux|rocky)
echo "配置 RHEL 系列阿里云镜像..."
if [ -f /etc/yum.repos.d/CentOS-Base.repo ]; then
sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' \
/etc/yum.repos.d/CentOS-Base.repo
fi
yum makecache || true
;;
fedora)
echo "配置 Fedora 阿里云镜像..."
sed -i.bak -e 's|^metalink=|#metalink=|g' \
-e 's|^#baseurl=https://download.example/pub|baseurl=http://mirrors.aliyun.com/fedora|g' \
/etc/yum.repos.d/fedora*.repo
dnf makecache || true
;;
*)
echo "不支持的系统类型:$DISTRO_ID,跳过换源"
;;
esac
}
# 主执行函数
main() {
set_mirrors
set_dns
set_timezone
echo "✅ 初始化完成。"
}
main

33
nginx/example/README.md Normal file
View File

@@ -0,0 +1,33 @@
# Example
## Nginx 配置
下载配置
```bash
curl -fsSL https://git.sugarscat.cn/me/script/-/raw/main/nginx/example/nginx.conf > /etc/nginx/sites-available/example.com
```
启用配置
```bash
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
```
修改配置
```bash
vim /etc/nginx/sites-available/example.com
```
测试配置
```bash
nginx -t
```
重启 nginx
```bash
systemctl restart nginx
```

49
nginx/example/nginx.conf Normal file
View File

@@ -0,0 +1,49 @@
server {
listen 80 ;
# listen 443 ssl http2 ;
server_name example.com;
index index.php index.html index.htm default.php default.htm default.html;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 重定向
# if ($scheme = http) {
# return 301 https://$host$request_uri;
# }
# ssl 设置
# ssl_certificate /etc/nginx/ssl/fullchain.crt;
# ssl_certificate_key /etc/nginx/ssl/privkey.key;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
proxy_set_header X-Forwarded-Proto https;
ssl_stapling on;
ssl_stapling_verify on;
# location ^~ / {
# proxy_pass https://127.0.0.1:8080;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header REMOTE-HOST $remote_addr;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_http_version 1.1;
# add_header X-Cache $upstream_cache_status;
# add_header Strict-Transport-Security "max-age=31536000";
# add_header Cache-Control no-cache;
# }
}

View File

@@ -1,29 +0,0 @@
# git.sugarscat.cn
## Nginx 配置
> 该配置需要在 `/etc/nginx/ssl/` 目录下创建 `fullchain.crt` 和 `privkey.key` 证书文件。
下载配置
```bash
curl -fsSL https://git.sugarscat.cn/me/script/-/raw/main/nginx/git.sugarscat.cn/nginx.conf > /etc/nginx/sites-available/git.sugarscat.cn
```
启用配置
```bash
ln -s /etc/nginx/sites-available/git.sugarscat.cn /etc/nginx/sites-enabled/
```
测试配置
```bash
nginx -t
```
重启 nginx
```bash
systemctl restart nginx
```

View File

@@ -1,51 +0,0 @@
server {
listen 80 ;
listen 443 ssl http2 ;
server_name git.sugarscat.cn;
index index.php index.html index.htm default.php default.htm default.html;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# acme.sh
location ^~ /.well-known/acme-challenge {
allow all;
root /var/www/html;
}
# 重定向
if ($scheme = http) {
return 301 https://$host$request_uri;
}
# ssl 设置
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/privkey.key;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
proxy_set_header X-Forwarded-Proto https;
ssl_stapling on;
ssl_stapling_verify on;
location ^~ / {
proxy_pass https://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}
}

View File

@@ -50,14 +50,14 @@ http {
##
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
##
# Virtual Host Configs