64 lines
1.6 KiB
Bash
64 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
# Usage: sudo ./deploy_random_html.sh --domain example.com
|
|
|
|
set -e
|
|
|
|
# --- ПАРСИНГ ПАРАМЕТРОВ ---
|
|
if [[ "$1" != "--domain" || -z "$2" ]]; then
|
|
echo "Usage: $0 --domain example.com"
|
|
exit 1
|
|
fi
|
|
|
|
DOMAIN="$2"
|
|
REPO_URL="https://gitea.creative-tg1.ru/CREATIVE_tg1/sites-auth.git"
|
|
DEPLOY_DIR="/var/www/$DOMAIN"
|
|
|
|
# --- УСТАНОВКА ЗАВИСИМОСТЕЙ ---
|
|
apt update
|
|
apt install -y git nginx certbot python3-certbot-nginx
|
|
|
|
# --- КЛОНИРОВАНИЕ РЕПО ---
|
|
TMP_DIR=$(mktemp -d)
|
|
git clone "$REPO_URL" "$TMP_DIR"
|
|
|
|
# --- ВЫБОР СЛУЧАЙНОГО HTML ФАЙЛА ---
|
|
HTML_FILE=$(find "$TMP_DIR" -type f -name "*.html" | shuf -n 1)
|
|
|
|
if [[ -z "$HTML_FILE" ]]; then
|
|
echo "Нет HTML файлов в репозитории!"
|
|
rm -rf "$TMP_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
# --- ПОДГОТОВКА ПАПКИ ДЛЯ ДОСТУПА ---
|
|
mkdir -p "$DEPLOY_DIR"
|
|
cp "$HTML_FILE" "$DEPLOY_DIR/index.html"
|
|
|
|
# --- НАСТРОЙКА NGINX ---
|
|
NGINX_CONF="/etc/nginx/sites-available/$DOMAIN"
|
|
cat > "$NGINX_CONF" <<EOL
|
|
server {
|
|
listen 80;
|
|
server_name $DOMAIN;
|
|
|
|
root $DEPLOY_DIR;
|
|
index index.html;
|
|
|
|
location / {
|
|
try_files \$uri \$uri/ =404;
|
|
}
|
|
}
|
|
EOL
|
|
|
|
ln -sf "$NGINX_CONF" /etc/nginx/sites-enabled/
|
|
nginx -t
|
|
systemctl reload nginx
|
|
|
|
# --- SSL через Certbot ---
|
|
certbot --nginx -d "$DOMAIN" --non-interactive --agree-tos -m admin@$DOMAIN
|
|
|
|
# --- УДАЛЕНИЕ ВРЕМЕННОГО РЕПО ---
|
|
rm -rf "$TMP_DIR"
|
|
|
|
echo "Готово! $DOMAIN развернут с файлом $(basename "$HTML_FILE") и временные файлы удалены." |