#!/bin/bash
# Nginx Autoindex 文件列表部署脚本
# 自动部署美化版的nginx文件列表系统
set -e
echo "================================"
echo "Nginx Autoindex 文件列表部署脚本"
echo "================================"
echo ""
# 检测nginx是否安装
echo "检查nginx是否已安装..."
if ! command -v nginx &> /dev/null; then
echo "❌ 错误: 未检测到nginx"
echo "请先安装nginx: sudo apt-get install nginx"
exit 1
fi
echo "✓ nginx已安装: $(nginx -v 2>&1)"
echo ""
# 设置变量
AUTOINDEX_DIR="/var/www/autoindex"
FILES_DIR="/var/www/files"
NGINX_CONFIG="/etc/nginx/sites-available/autoindex-files"
NGINX_ENABLED="/etc/nginx/sites-enabled/autoindex-files"
# 检测是否为root用户
if [ "$EUID" -ne 0 ]; then
echo "❌ 请使用root权限运行此脚本: sudo ./deploy.sh"
exit 1
fi
echo "开始部署..."
echo ""
# 1. 创建目录
echo "1. 创建必要目录..."
mkdir -p "$AUTOINDEX_DIR"
mkdir -p "$FILES_DIR"
echo "✓ 目录创建完成"
echo ""
# 2. 复制header.html
echo "2. 部署header.html..."
cat > "$AUTOINDEX_DIR/header.html" << 'EOF'
📁 文件列表
EOF
echo "✓ header.html部署完成"
echo ""
# 3. 复制footer.html
echo "3. 部署footer.html..."
cat > "$AUTOINDEX_DIR/footer.html" << 'FOOTEREOF'
FOOTEREOF
echo "✓ footer.html部署完成"
echo ""
# 4. 创建nginx配置
echo "4. 创建nginx配置..."
cat > "$NGINX_CONFIG" << 'EOF'
# nginx autoindex 美化配置
server {
listen 80;
server_name _;
root /var/www/files;
charset utf-8;
location / {
# 启用autoindex
autoindex on;
autoindex_exact_size off; # 显示KB/MB而不是字节
autoindex_localtime on; # 使用本地时间
autoindex_format html;
# 注入自定义样式
add_before_body /autoindex-header.html;
add_after_body /autoindex-footer.html;
}
# 提供header文件
location = /autoindex-header.html {
alias /var/www/autoindex/header.html;
}
# 提供footer文件
location = /autoindex-footer.html {
alias /var/www/autoindex/footer.html;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
return 404;
}
}
EOF
echo "✓ nginx配置创建完成"
echo ""
# 5. 启用配置
echo "5. 启用nginx配置..."
# 删除默认配置
if [ -f "/etc/nginx/sites-enabled/default" ]; then
rm -f /etc/nginx/sites-enabled/default
echo "✓ 已删除默认配置"
fi
# 创建软链接
ln -sf "$NGINX_CONFIG" "$NGINX_ENABLED"
echo "✓ 配置已启用"
echo ""
# 6. 设置权限
echo "6. 设置目录权限..."
chmod 755 "$AUTOINDEX_DIR"
chmod 644 "$AUTOINDEX_DIR"/*.html
chmod 755 "$FILES_DIR"
echo "✓ 权限设置完成"
echo ""
# 7. 测试nginx配置
echo "7. 测试nginx配置..."
if nginx -t 2>&1 | grep -q "successful"; then
echo "✓ nginx配置测试通过"
else
echo "❌ nginx配置测试失败"
nginx -t
exit 1
fi
echo ""
# 8. 重载nginx
echo "8. 重载nginx服务..."
systemctl reload nginx
echo "✓ nginx已重载"
echo ""
# 9. 创建示例文件
echo "9. 创建示例文件..."
cat > "$FILES_DIR/README.md" << 'EOF'
# 欢迎使用文件列表系统
这是一个美化版的nginx autoindex文件列表系统。
## 功能特点
- 搜索文件
- 复制文件链接
- 美观的界面
- 文件/文件夹颜色区分
将你的文件放到 /var/www/files 目录即可。
EOF
# 创建示例目录
mkdir -p "$FILES_DIR/documents"
mkdir -p "$FILES_DIR/images"
mkdir -p "$FILES_DIR/downloads"
echo "✓ 示例文件创建完成"
echo ""
echo "================================"
echo "✅ 部署完成!"
echo "================================"
echo ""
echo "访问地址: http://$(hostname -I | awk '{print $1}')"
echo ""
echo "文件存放目录: $FILES_DIR"
echo "配置文件位置: $NGINX_CONFIG"
echo ""
echo "提示:"
echo "- 将文件放到 $FILES_DIR 即可在网页上看到"
echo "- 修改配置后运行: sudo systemctl reload nginx"
echo ""