Update web_install.sh

This commit is contained in:
Ground-Zerro
2025-01-01 17:10:27 +11:00
parent 310c43be95
commit b2f90fe690

View File

@@ -13,7 +13,7 @@ if ! id "$USERNAME" &>/dev/null; then
echo "Пользователь $USERNAME не существует."
read -p "Хотите создать пользователя? (y/n): " CREATE_USER
if [[ "$CREATE_USER" =~ ^[Yy]$ ]]; then
sudo useradd -m -s /bin/bash "$USERNAME"
useradd -m -s /bin/bash "$USERNAME"
echo "Пользователь $USERNAME успешно создан."
else
echo "Скрипт завершён, так как пользователь не существует."
@@ -23,28 +23,32 @@ fi
# Обновление системы и установка зависимостей
echo "Обновляем систему и устанавливаем зависимости..."
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv gunicorn nginx certbot python3-certbot-nginx -y
apt update && apt upgrade -y
apt install python3 python3-pip python3-venv gunicorn nginx certbot python3-certbot-nginx -y
# Создание директории приложения
echo "Создаем директорию приложения..."
sudo -u $USERNAME mkdir -p $APP_DIR
mkdir -p $APP_DIR
# Настройка прав доступа
echo "Настроим права доступа для директории приложения..."
chown -R $USERNAME:$USERNAME $APP_DIR
chmod -R 755 $APP_DIR
# Перемещение в директорию приложения
cd $APP_DIR
# Создание виртуального окружения
echo "Создаем виртуальное окружение..."
sudo -u $USERNAME python3 -m venv venv
# Активация виртуального окружения и установка библиотек
echo "Устанавливаем зависимости Python..."
su - $USERNAME -c "python3 -m venv $APP_DIR/venv"
# Загрузка файла requirements.txt
echo "Загружаем файл requirements.txt..."
curl -o $APP_DIR/requirements.txt https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/refs/heads/main/requirements.txt
# Установка зависимостей из requirements.txt и добавление необходимых библиотек
sudo -u $USERNAME bash -c "source $APP_DIR/venv/bin/activate && pip install -r $APP_DIR/requirements.txt fastapi uvicorn pydantic"
echo "Устанавливаем зависимости Python..."
su - $USERNAME -c "source $APP_DIR/venv/bin/activate && pip install -r $APP_DIR/requirements.txt fastapi uvicorn pydantic gunicorn"
# Загрузка файлов приложения
echo "Загружаем файлы приложения..."
@@ -56,7 +60,7 @@ chown "$USERNAME":"$USERNAME" "$APP_DIR/main.py"
# Создание системного сервиса
echo "Создаем системный сервис..."
sudo tee $SERVICE_FILE > /dev/null <<EOF
tee $SERVICE_FILE > /dev/null <<EOF
[Unit]
Description=DNS Resolver Web App
After=network.target
@@ -73,15 +77,15 @@ EOF
# Активация и запуск сервиса
echo "Активируем и запускаем сервис..."
sudo systemctl daemon-reload
sudo systemctl start dns_resolver
sudo systemctl enable dns_resolver
systemctl daemon-reload
systemctl start dns_resolver
systemctl enable dns_resolver
# Настройка Nginx
echo "Настраиваем Nginx..."
sudo rm -f /etc/nginx/sites-enabled/default # Удаляем стандартный конфиг
rm -f /etc/nginx/sites-enabled/default # Удаляем стандартный конфиг
sudo tee $NGINX_CONF > /dev/null <<EOF
tee $NGINX_CONF > /dev/null <<EOF
server {
listen 80;
server_name _;
@@ -89,44 +93,54 @@ server {
root $APP_DIR;
index index.html;
# Статические файлы
location / {
try_files \$uri /index.html;
}
# Прокси для FastAPI
location /run {
proxy_pass http://127.0.0.1:5000; # Прокси на сервер FastAPI, если он работает на localhost и порту 5000
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 X-Forwarded-Proto \$scheme;
}
error_page 404 /index.html;
}
EOF
# Создаем символическую ссылку для конфигурации
sudo ln -sf $NGINX_CONF /etc/nginx/sites-enabled/
ln -sf $NGINX_CONF /etc/nginx/sites-enabled/
# Проверяем конфигурацию Nginx
sudo nginx -t
nginx -t
# Перезапускаем Nginx
sudo systemctl restart nginx
systemctl restart nginx
# Настройка прав доступа к директории приложения
echo "Настраиваем права доступа для Nginx..."
sudo chown -R www-data:www-data $APP_DIR
sudo chmod -R 755 $APP_DIR
chown -R www-data:www-data $APP_DIR
chmod -R 755 $APP_DIR
# Настраиваем доступ к домашней директории пользователя, если это требуется
HOME_DIR=$(dirname "$APP_DIR")
sudo chmod 755 $HOME_DIR
chmod 755 $HOME_DIR
echo "Права доступа к директории приложения настроены."
# Открытие портов для Nginx
echo "Открываем порты для Nginx..."
sudo ufw allow 'Nginx Full'
sudo ufw reload
ufw allow 'Nginx Full'
ufw reload
echo "Конфигурация Nginx завершена."
# Настройка HTTPS с помощью Certbot
echo "Настраиваем HTTPS с помощью Certbot..."
sudo certbot --nginx -n --agree-tos --email $EMAIL_ADR -d $DOMAIN_NAME
echo "Настроим HTTPS с помощью Certbot..."
certbot --nginx -n --agree-tos --email $EMAIL_ADR -d $DOMAIN_NAME
# Завершение
echo "Настройка завершена. Приложение доступно по адресу $DOMAIN_NAME"