Модернизация install.sh: добавлена поддержка неинтерактивного режима через переменные окружения

This commit is contained in:
root 2026-02-19 14:57:45 +00:00
parent 0af50038fe
commit 34bcd34979

View File

@ -23,6 +23,14 @@ if [ "$EUID" -ne 0 ]; then
exit 1
fi
# Проверка переменных окружения для неинтерактивного режима
NON_INTERACTIVE=false
if [ -n "${DOMAIN:-}" ] && [ -n "${DB_NAME:-}" ] && [ -n "${DB_USER:-}" ] && \
[ -n "${DB_PASSWORD:-}" ] && [ -n "${ADMIN_USER:-}" ] && [ -n "${ADMIN_PASSWORD:-}" ]; then
NON_INTERACTIVE=true
echo "Обнаружен неинтерактивный режим (переменные окружения заданы)"
fi
# Функция генерации случайной строки
generate_random() {
openssl rand -hex 32
@ -105,15 +113,23 @@ fi
echo "[3/7] Настройка Apache..."
# Определить домен
read -p "Введите доменное имя для F7cloud (например: cloud.example.com): " DOMAIN
if [ -z "$DOMAIN" ]; then
if [ -z "${DOMAIN:-}" ]; then
read -p "Введите доменное имя для F7cloud (например: cloud.example.com): " DOMAIN
if [ -z "$DOMAIN" ]; then
echo "Ошибка: Домен обязателен"
exit 1
fi
else
echo "Используется домен из переменной окружения: $DOMAIN"
fi
# Определить путь установки (DocumentRoot)
read -p "Путь установки F7cloud [$INSTALL_DIR]: " INSTALL_PATH
INSTALL_PATH=${INSTALL_PATH:-$INSTALL_DIR}
if [ -z "${INSTALL_PATH:-}" ]; then
read -p "Путь установки F7cloud [$INSTALL_DIR]: " INSTALL_PATH
INSTALL_PATH=${INSTALL_PATH:-$INSTALL_DIR}
else
echo "Используется путь установки из переменной окружения: $INSTALL_PATH"
fi
# Создать виртуальный хост Apache
APACHE_SITE_FILE="/etc/apache2/sites-available/f7cloud.conf"
@ -154,33 +170,57 @@ fi
# Запрос данных PostgreSQL
echo "[4/7] Настройка PostgreSQL..."
read -p "Хост PostgreSQL [localhost]: " DB_HOST
DB_HOST=${DB_HOST:-localhost}
if [ -z "${DB_HOST:-}" ]; then
read -p "Хост PostgreSQL [localhost]: " DB_HOST
DB_HOST=${DB_HOST:-localhost}
else
echo "Используется хост PostgreSQL из переменной окружения: $DB_HOST"
fi
read -p "Порт PostgreSQL [5432]: " DB_PORT
DB_PORT=${DB_PORT:-5432}
if [ -z "${DB_PORT:-}" ]; then
read -p "Порт PostgreSQL [5432]: " DB_PORT
DB_PORT=${DB_PORT:-5432}
else
echo "Используется порт PostgreSQL из переменной окружения: $DB_PORT"
fi
read -p "Имя базы данных: " DB_NAME
if [ -z "$DB_NAME" ]; then
if [ -z "${DB_NAME:-}" ]; then
read -p "Имя базы данных: " DB_NAME
if [ -z "$DB_NAME" ]; then
echo "Ошибка: Имя базы данных обязательно"
exit 1
fi
else
echo "Используется имя базы данных из переменной окружения: $DB_NAME"
fi
read -p "Пользователь PostgreSQL: " DB_USER
if [ -z "$DB_USER" ]; then
if [ -z "${DB_USER:-}" ]; then
read -p "Пользователь PostgreSQL: " DB_USER
if [ -z "$DB_USER" ]; then
echo "Ошибка: Пользователь обязателен"
exit 1
fi
else
echo "Используется пользователь PostgreSQL из переменной окружения: $DB_USER"
fi
read -sp "Пароль PostgreSQL: " DB_PASSWORD
echo ""
if [ -z "$DB_PASSWORD" ]; then
if [ -z "${DB_PASSWORD:-}" ]; then
read -sp "Пароль PostgreSQL: " DB_PASSWORD
echo ""
if [ -z "$DB_PASSWORD" ]; then
echo "Ошибка: Пароль обязателен"
exit 1
fi
else
echo "Используется пароль PostgreSQL из переменной окружения"
fi
read -p "Префикс таблиц [oc_]: " DB_PREFIX
DB_PREFIX=${DB_PREFIX:-oc_}
if [ -z "${DB_PREFIX:-}" ]; then
read -p "Префикс таблиц [oc_]: " DB_PREFIX
DB_PREFIX=${DB_PREFIX:-oc_}
else
echo "Используется префикс таблиц из переменной окружения: $DB_PREFIX"
fi
# Проверка подключения к БД
echo "Проверка подключения к PostgreSQL..."
@ -196,28 +236,54 @@ unset PGPASSWORD
# Дополнительные настройки
echo "[5/8] Дополнительные настройки..."
read -p "Директория данных [$DATA_DIR]: " DATA_DIR_INPUT
DATA_DIR=${DATA_DIR_INPUT:-$DATA_DIR}
if [ -z "${DATA_DIR_INPUT:-}" ]; then
read -p "Директория данных [$DATA_DIR]: " DATA_DIR_INPUT
DATA_DIR=${DATA_DIR_INPUT:-$DATA_DIR}
else
DATA_DIR=${DATA_DIR_INPUT:-$DATA_DIR}
echo "Используется директория данных из переменной окружения: $DATA_DIR"
fi
read -p "Trusted domains (через запятую) [$DOMAIN]: " TRUSTED_DOMAINS_INPUT
TRUSTED_DOMAINS=${TRUSTED_DOMAINS_INPUT:-$DOMAIN}
if [ -z "${TRUSTED_DOMAINS_INPUT:-}" ]; then
read -p "Trusted domains (через запятую) [$DOMAIN]: " TRUSTED_DOMAINS_INPUT
TRUSTED_DOMAINS=${TRUSTED_DOMAINS_INPUT:-$DOMAIN}
else
TRUSTED_DOMAINS=${TRUSTED_DOMAINS_INPUT:-$DOMAIN}
echo "Используются trusted domains из переменной окружения: $TRUSTED_DOMAINS"
fi
read -p "Trusted proxies (IP через запятую, Enter для пропуска): " TRUSTED_PROXIES
if [ -z "${TRUSTED_PROXIES:-}" ]; then
read -p "Trusted proxies (IP через запятую, Enter для пропуска): " TRUSTED_PROXIES
else
echo "Используются trusted proxies из переменной окружения: $TRUSTED_PROXIES"
fi
read -p "CLI URL (для occ команд) [https://$DOMAIN]: " CLI_URL
CLI_URL=${CLI_URL:-https://$DOMAIN}
if [ -z "${CLI_URL:-}" ]; then
read -p "CLI URL (для occ команд) [https://$DOMAIN]: " CLI_URL
CLI_URL=${CLI_URL:-https://$DOMAIN}
else
echo "Используется CLI URL из переменной окружения: $CLI_URL"
fi
# Данные администратора
echo "[6/8] Создание администратора..."
read -p "Логин администратора [admin]: " ADMIN_USER
ADMIN_USER=${ADMIN_USER:-admin}
if [ -z "${ADMIN_USER:-}" ]; then
read -p "Логин администратора [admin]: " ADMIN_USER
ADMIN_USER=${ADMIN_USER:-admin}
else
echo "Используется логин администратора из переменной окружения: $ADMIN_USER"
fi
read -sp "Пароль администратора: " ADMIN_PASSWORD
echo ""
if [ -z "$ADMIN_PASSWORD" ]; then
if [ -z "${ADMIN_PASSWORD:-}" ]; then
read -sp "Пароль администратора: " ADMIN_PASSWORD
echo ""
if [ -z "$ADMIN_PASSWORD" ]; then
echo "Ошибка: Пароль администратора обязателен"
exit 1
fi
else
echo "Используется пароль администратора из переменной окружения"
fi
# Генерация секретов
@ -383,15 +449,32 @@ if sudo -u $APACHE_USER php occ maintenance:install \
echo "Применение настроек из файла..."
USE_TALK_CONFIG_FILE=true
else
if [ -z "${CONFIGURE_TALK:-}" ]; then
read -p "Настроить F7Talk (Talk)? (y/N): " CONFIGURE_TALK
USE_TALK_CONFIG_FILE=false
if [[ ! "$CONFIGURE_TALK" =~ ^[Yy]$ ]]; then
echo "Пропуск настройки F7Talk"
USE_TALK_CONFIG_FILE=false
fi
else
USE_TALK_CONFIG_FILE=false
if [[ "$CONFIGURE_TALK" =~ ^[Yy]$ ]] || [ "$CONFIGURE_TALK" = "yes" ] || [ "$CONFIGURE_TALK" = "true" ]; then
echo "Настройка F7Talk включена через переменную окружения"
else
echo "Пропуск настройки F7Talk (задано через переменную окружения)"
fi
fi
fi
if [ "$USE_TALK_CONFIG_FILE" = true ] || [[ "$CONFIGURE_TALK" =~ ^[Yy]$ ]]; then
# Проверка, нужно ли настраивать F7Talk
SHOULD_CONFIGURE_TALK=false
if [ "$USE_TALK_CONFIG_FILE" = true ]; then
SHOULD_CONFIGURE_TALK=true
elif [[ "$CONFIGURE_TALK" =~ ^[Yy]$ ]] || [ "$CONFIGURE_TALK" = "yes" ] || [ "$CONFIGURE_TALK" = "true" ]; then
SHOULD_CONFIGURE_TALK=true
fi
if [ "$SHOULD_CONFIGURE_TALK" = true ]; then
echo "Настройка F7Talk..."
# Проверка, включён ли Talk