Обновлена логика с БД, добавлена больше информации в логах, добавлен проверка на установленность, а также на возможность на переустановку

This commit is contained in:
2025-08-10 22:54:54 +03:00
parent 6c45ed7310
commit b826ddb49d

View File

@@ -4,14 +4,21 @@ clear
set -e set -e
UNINSTALL=false UNINSTALL=false
FORCE_REINSTALL=false
while getopts ":u" opt; do while getopts ":uf" opt; do
case $opt in case $opt in
u) u)
UNINSTALL=true UNINSTALL=true
;; ;;
f)
FORCE_REINSTALL=true
;;
\?) \?)
echo -e "${RED}[Ошибка]${NC} Неизвестный параметр: -$OPTARG" >&2 echo -e "${RED}[Ошибка]${NC} Неизвестный параметр: -$OPTARG" >&2
echo "Использование: $0 [-u] [-f]"
echo " -u Полное удаление"
echo " -f Принудительная переустановка"
exit 1 exit 1
;; ;;
esac esac
@@ -20,20 +27,164 @@ done
RED='\033[0;31m' RED='\033[0;31m'
GREEN='\033[0;32m' GREEN='\033[0;32m'
YELLOW='\033[1;33m' YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' NC='\033[0m'
log_success() { echo -e "${GREEN}[Успех]${NC} $1"; } log_success() { echo -e "${GREEN}[Успех]${NC} $1"; }
log_error() { echo -e "${RED}[Ошибка]${NC} $1"; } log_error() { echo -e "${RED}[Ошибка]${NC} $1"; }
log_info() { echo -e "${BLUE}[Инфо]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[Предупреждение]${NC} $1"; }
log_step() { echo -e "${CYAN}[Шаг]${NC} $1"; }
generate_password() { generate_password() {
openssl rand -base64 32 | tr -d "=+/" | cut -c1-16 openssl rand -base64 32 | tr -d "=+/" | cut -c1-16
} }
full_uninstall() { check_component() {
echo -e "${YELLOW}[Инфо]${NC} Начинаем полное удаление Altcor... :(" local component=$1
local command_check=$2
local service_check=$3
if [[ -n "$command_check" && $(command -v "$command_check" 2>/dev/null) ]]; then
if [[ -n "$service_check" ]]; then
if systemctl is-active --quiet "$service_check" 2>/dev/null; then
return 0 # установлен и работает
else
return 1 # установлен, но не работает
fi
else
return 0 # установлен
fi
else
return 2 # не установлен
fi
}
check_existing_installation() {
log_step "Проверка существующей установки..."
local apache_status php_status mariadb_status redis_status
local need_reinstall=false
# Проверка Apache
if [ "$DISTRO_FAMILY" = "debian" ]; then
check_component "Apache2" "apache2" "apache2"
apache_status=$?
else
check_component "Apache (httpd)" "httpd" "httpd"
apache_status=$?
fi
# Проверка PHP
check_component "PHP" "php" ""
php_status=$?
# Проверка MariaDB
check_component "MariaDB" "mysql" "mariadb"
mariadb_status=$?
# Проверка Redis
check_component "Redis" "redis-server" "redis-server"
if [ $? -eq 2 ]; then
check_component "Redis" "redis-cli" "redis"
redis_status=$?
else
redis_status=$?
fi
echo ""
echo "=== Статус компонентов ==="
case $apache_status in
0) echo -e "Apache: ${GREEN}Установлен и работает${NC}" ;;
1) echo -e "Apache: ${YELLOW}Установлен, но не работает${NC}"; need_reinstall=true ;;
2) echo -e "Apache: ${RED}Не установлен${NC}"; need_reinstall=true ;;
esac
case $php_status in
0)
php_version=$(php -v 2>/dev/null | head -1 | cut -d' ' -f2 | cut -d'.' -f1,2)
if [[ "$php_version" == "8.3" ]]; then
echo -e "PHP: ${GREEN}Установлен (версия $php_version)${NC}"
else
echo -e "PHP: ${YELLOW}Установлен (версия $php_version, требуется 8.3)${NC}"
need_reinstall=true
fi
;;
2) echo -e "PHP: ${RED}Не установлен${NC}"; need_reinstall=true ;;
esac
case $mariadb_status in
0) echo -e "MariaDB: ${GREEN}Установлен и работает${NC}" ;;
1) echo -e "MariaDB: ${YELLOW}Установлен, но не работает${NC}"; need_reinstall=true ;;
2) echo -e "MariaDB: ${RED}Не установлен${NC}"; need_reinstall=true ;;
esac
case $redis_status in
0) echo -e "Redis: ${GREEN}Установлен и работает${NC}" ;;
1) echo -e "Redis: ${YELLOW}Установлен, но не работает${NC}"; need_reinstall=true ;;
2) echo -e "Redis: ${RED}Не установлен${NC}"; need_reinstall=true ;;
esac
# Проверка конфигурации базы данных
if [ -f "/var/www/html/db_config.php" ]; then
echo -e "Конфигурация БД: ${GREEN}Найдена${NC}"
else
echo -e "Конфигурация БД: ${RED}Не найдена${NC}"
need_reinstall=true
fi
echo ""
if [ "$need_reinstall" = false ] && [ "$apache_status" -eq 0 ] && [ "$php_status" -eq 0 ] && [ "$mariadb_status" -eq 0 ]; then
log_success "Все компоненты уже установлены и работают корректно!"
echo ""
if [ "$FORCE_REINSTALL" = false ]; then
echo "Что вы хотите сделать?"
echo "1) Продолжить (проверить/обновить конфигурацию)"
echo "2) Принудительно переустановить все компоненты"
echo "3) Выйти"
echo ""
read -p "Выберите опцию (1-3): " choice
case $choice in
1)
log_info "Продолжаем с проверкой конфигурации..."
return 1 # продолжить с настройкой
;;
2)
log_info "Начинаем принудительную переустановку..."
FORCE_REINSTALL=true
return 0 # полная переустановка
;;
3)
log_info "Установка отменена."
exit 0
;;
*)
log_warning "Неверный выбор. Продолжаем с проверкой конфигурации..."
return 1
;;
esac
else
log_info "Форсируем переустановку всех компонентов..."
return 0
fi
else
log_info "Обнаружены отсутствующие или неработающие компоненты. Продолжаем установку..."
return 0
fi
}
full_uninstall() {
log_step "Начинаем полное удаление Altcor... :("
log_info "Остановка сервисов..."
systemctl stop nginx apache2 httpd php*-fpm mariadb mysql redis 2>/dev/null || true systemctl stop nginx apache2 httpd php*-fpm mariadb mysql redis 2>/dev/null || true
log_info "Удаление пакетов..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
apt purge -y nginx* apache2* php* mariadb* mysql* redis* 2>/dev/null || true apt purge -y nginx* apache2* php* mariadb* mysql* redis* 2>/dev/null || true
apt autoremove -y 2>/dev/null || true apt autoremove -y 2>/dev/null || true
@@ -41,6 +192,7 @@ full_uninstall() {
$PKG_MANAGER remove -y nginx httpd php* mariadb* mysql* redis* 2>/dev/null || true $PKG_MANAGER remove -y nginx httpd php* mariadb* mysql* redis* 2>/dev/null || true
fi fi
log_info "Удаление файлов конфигурации и данных..."
rm -rf \ rm -rf \
/etc/nginx \ /etc/nginx \
/etc/apache2 \ /etc/apache2 \
@@ -50,9 +202,10 @@ full_uninstall() {
/var/lib/mysql* \ /var/lib/mysql* \
/var/lib/redis* \ /var/lib/redis* \
~/.mysql_history \ ~/.mysql_history \
/root/.mysql_history 2>/dev/null || true /root/.mysql_history \
/root/.db_password 2>/dev/null || true
echo -e "${GREEN}[Успешно]${NC} Полное удаление завершено." log_success "Полное удаление завершено."
exit 0 exit 0
} }
@@ -61,10 +214,12 @@ if [[ $EUID -ne 0 ]]; then
exit 1 exit 1
fi fi
log_step "Определение дистрибутива..."
if [ -f /etc/os-release ]; then if [ -f /etc/os-release ]; then
. /etc/os-release . /etc/os-release
DISTRO="$ID" DISTRO="$ID"
FAMILY="$ID_LIKE" FAMILY="$ID_LIKE"
log_success "Обнаружен дистрибутив: $PRETTY_NAME"
else else
log_error "Не удалось определить дистрибутив." log_error "Не удалось определить дистрибутив."
exit 1 exit 1
@@ -88,102 +243,151 @@ if [ "$UNINSTALL" = true ]; then
full_uninstall full_uninstall
fi fi
# Проверка существующей установки
check_existing_installation
INSTALL_TYPE=$?
if [ "$INSTALL_TYPE" -eq 1 ]; then
# Только настройка конфигурации
SKIP_PACKAGE_INSTALL=true
else
# Полная установка
SKIP_PACKAGE_INSTALL=false
fi
DB_PASSWORD=$(generate_password) DB_PASSWORD=$(generate_password)
systemctl stop nginx httpd apache2 php*-fpm 2>/dev/null || true if [ "$SKIP_PACKAGE_INSTALL" = false ]; then
systemctl disable nginx httpd 2>/dev/null || true log_step "Остановка конфликтующих сервисов..."
systemctl stop nginx httpd apache2 php*-fpm 2>/dev/null || true
systemctl disable nginx httpd 2>/dev/null || true
echo "Установка Altcor..." echo ""
echo "🚀 Начинаем установку Altcor..."
echo ""
if [ "$DISTRO_FAMILY" = "debian" ]; then log_step "Удаление старых версий пакетов..."
apt remove -y nginx nginx-common nginx-core >/dev/null 2>&1 || true if [ "$DISTRO_FAMILY" = "debian" ]; then
apt remove -y php7.* php8.0* php8.1* php8.2* libapache2-mod-php7.* libapache2-mod-php8.0* libapache2-mod-php8.1* libapache2-mod-php8.2* >/dev/null 2>&1 || true apt remove -y nginx nginx-common nginx-core >/dev/null 2>&1 || true
elif [ "$DISTRO_FAMILY" = "rhel" ]; then apt remove -y php7.* php8.0* php8.1* php8.2* libapache2-mod-php7.* libapache2-mod-php8.0* libapache2-mod-php8.1* libapache2-mod-php8.2* >/dev/null 2>&1 || true
$PKG_MANAGER remove -y nginx >/dev/null 2>&1 || true elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER remove -y php php7* php80* php81* php82* >/dev/null 2>&1 || true $PKG_MANAGER remove -y nginx >/dev/null 2>&1 || true
fi $PKG_MANAGER remove -y php php7* php80* php81* php82* >/dev/null 2>&1 || true
fi
log_success "Старые пакеты удалены"
if [ "$DISTRO_FAMILY" = "debian" ]; then log_step "Обновление списка пакетов..."
apt update -y >/dev/null 2>&1 if [ "$DISTRO_FAMILY" = "debian" ]; then
apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https unzip >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER update -y >/dev/null 2>&1
$PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true
$PKG_MANAGER install -y curl wget gnupg2 unzip >/dev/null 2>&1
fi
if [ "$DISTRO_FAMILY" = "debian" ]; then
if ! apt-cache show php8.3 &>/dev/null; then
if ! add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1; then
log_error "Не удалось добавить PPA ondrej/php."
exit 1
fi
apt update -y >/dev/null 2>&1 apt update -y >/dev/null 2>&1
apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https unzip >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER update -y >/dev/null 2>&1
$PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true
$PKG_MANAGER install -y curl wget gnupg2 unzip >/dev/null 2>&1
fi
log_success "Система обновлена, базовые пакеты установлены"
log_step "Добавление репозиториев для PHP 8.3..."
if [ "$DISTRO_FAMILY" = "debian" ]; then
if ! apt-cache show php8.3 &>/dev/null; then if ! apt-cache show php8.3 &>/dev/null; then
log_error "PHP 8.3 все еще недоступен после добавления PPA." log_info обавление PPA ondrej/php..."
if ! add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1; then
log_error "Не удалось добавить PPA ondrej/php."
exit 1
fi
apt update -y >/dev/null 2>&1
if ! apt-cache show php8.3 &>/dev/null; then
log_error "PHP 8.3 все еще недоступен после добавления PPA."
exit 1
fi
log_success "PPA добавлен успешно"
else
log_success "PHP 8.3 уже доступен в репозиториях"
fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
log_info "Добавление репозитория Remi..."
if [ "$DISTRO" = "fedora" ]; then
$PKG_MANAGER install -y https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm >/dev/null 2>&1 || true
else
$PKG_MANAGER install -y https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm >/dev/null 2>&1 || true
fi
if command -v dnf >/dev/null 2>&1; then
dnf module reset php -y >/dev/null 2>&1 || true
dnf module enable php:remi-8.3 -y >/dev/null 2>&1 || true
fi
if ! $PKG_MANAGER list available php83* php8.3* >/dev/null 2>&1; then
log_error "PHP 8.3 недоступен в репозиториях."
exit 1 exit 1
fi fi
log_success "Репозиторий Remi добавлен успешно"
fi fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then log_step "Установка Apache..."
if [ "$DISTRO" = "fedora" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
$PKG_MANAGER install -y https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm >/dev/null 2>&1 || true apt install -y apache2 >/dev/null 2>&1
else elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm >/dev/null 2>&1 || true $PKG_MANAGER install -y httpd >/dev/null 2>&1
fi fi
log_success "Apache установлен"
if command -v dnf >/dev/null 2>&1; then
dnf module reset php -y >/dev/null 2>&1 || true log_step "Установка MariaDB..."
dnf module enable php:remi-8.3 -y >/dev/null 2>&1 || true if [ "$DISTRO_FAMILY" = "debian" ]; then
apt install -y mariadb-server >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y mariadb-server >/dev/null 2>&1
fi fi
log_success "MariaDB установлен"
if ! $PKG_MANAGER list available php83* php8.3* >/dev/null 2>&1; then
log_error "PHP 8.3 недоступен в репозиториях." log_step "Установка дополнительных компонентов (Redis, LibreOffice, Java)..."
exit 1 if [ "$DISTRO_FAMILY" = "debian" ]; then
fi apt install -y redis-server libreoffice default-jre >/dev/null 2>&1
fi elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y redis libreoffice java-11-openjdk >/dev/null 2>&1
if [ "$DISTRO_FAMILY" = "debian" ]; then
apt install -y apache2 >/dev/null 2>&1
apt install -y mariadb-server >/dev/null 2>&1
apt install -y redis-server libreoffice default-jre >/dev/null 2>&1
PHP_PACKAGES="php8.3 php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-intl \
php8.3-bcmath libapache2-mod-php8.3"
if ! apt install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_error "Не удалось установить PHP 8.3 и/или его расширения."
exit 1
fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y httpd >/dev/null 2>&1
$PKG_MANAGER install -y mariadb-server >/dev/null 2>&1
$PKG_MANAGER install -y redis libreoffice java-11-openjdk >/dev/null 2>&1
if [ "$DISTRO" = "fedora" ]; then
PHP_PACKAGES="php php-cli php-common php-mysqlnd php-curl php-gd \
php-mbstring php-xml php-zip php-opcache php-intl \
php-bcmath"
else
PHP_PACKAGES="php83 php83-php php83-php-cli php83-php-common php83-php-mysqlnd php83-php-curl php83-php-gd \
php83-php-mbstring php83-php-xml php83-php-zip php83-php-opcache php83-php-intl \
php83-php-bcmath"
fi
if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_error "Не удалось установить PHP 8.3 и/или его расширения."
exit 1
fi
if command -v php83 >/dev/null 2>&1 && [ ! -f /usr/bin/php ]; then
ln -sf /usr/bin/php83 /usr/bin/php >/dev/null 2>&1 || true
fi fi
log_success "Дополнительные компоненты установлены"
log_step "Установка PHP 8.3 и расширений..."
if [ "$DISTRO_FAMILY" = "debian" ]; then
PHP_PACKAGES="php8.3 php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-intl \
php8.3-bcmath libapache2-mod-php8.3"
if ! apt install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_error "Не удалось установить PHP 8.3 и/или его расширения."
exit 1
fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
if [ "$DISTRO" = "fedora" ]; then
PHP_PACKAGES="php php-cli php-common php-mysqlnd php-curl php-gd \
php-mbstring php-xml php-zip php-opcache php-intl \
php-bcmath"
else
PHP_PACKAGES="php83 php83-php php83-php-cli php83-php-common php83-php-mysqlnd php83-php-curl php83-php-gd \
php83-php-mbstring php83-php-xml php83-php-zip php83-php-opcache php83-php-intl \
php83-php-bcmath"
fi
if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_error "Не удалось установить PHP 8.3 и/или его расширения."
exit 1
fi
if command -v php83 >/dev/null 2>&1 && [ ! -f /usr/bin/php ]; then
ln -sf /usr/bin/php83 /usr/bin/php >/dev/null 2>&1 || true
fi
fi
log_success "PHP 8.3 и расширения установлены"
else
log_info "Пропускаем установку пакетов (используем существующие)"
fi fi
log_step "Настройка Apache и модулей..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
a2enmod php8.3 rewrite ssl headers expires deflate >/dev/null 2>&1 a2enmod php8.3 rewrite ssl headers expires deflate >/dev/null 2>&1
@@ -208,9 +412,10 @@ LoadModule rewrite_module modules/mod_rewrite.so
SetHandler application/x-httpd-php SetHandler application/x-httpd-php
</FilesMatch> </FilesMatch>
EOF EOF
fi fi
log_success "Модули Apache настроены"
log_step "Создание конфигурации виртуального хоста..."
mkdir -p "$WEBROOT" mkdir -p "$WEBROOT"
cat > "$APACHE_CONF" <<EOF cat > "$APACHE_CONF" <<EOF
@@ -265,7 +470,9 @@ cat > "$APACHE_CONF" <<EOF
CustomLog \${APACHE_LOG_DIR}/access.log combined CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost> </VirtualHost>
EOF EOF
log_success "Конфигурация виртуального хоста создана"
log_step "Настройка PHP.ini..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
PHP_INI_PATH="/etc/php/8.3/apache2/php.ini" PHP_INI_PATH="/etc/php/8.3/apache2/php.ini"
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
@@ -295,8 +502,13 @@ if [ -f "$PHP_INI_PATH" ]; then
sed -i 's/;*expose_php = .*/expose_php = Off/' "$PHP_INI_PATH" sed -i 's/;*expose_php = .*/expose_php = Off/' "$PHP_INI_PATH"
sed -i 's/;*display_errors = .*/display_errors = Off/' "$PHP_INI_PATH" sed -i 's/;*display_errors = .*/display_errors = Off/' "$PHP_INI_PATH"
sed -i 's/;*log_errors = .*/log_errors = On/' "$PHP_INI_PATH" sed -i 's/;*log_errors = .*/log_errors = On/' "$PHP_INI_PATH"
log_success "PHP.ini настроен"
else
log_warning "Файл PHP.ini не найден по пути: $PHP_INI_PATH"
fi fi
log_step "Создание конфигурации базы данных..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
DB_SOCKET="/var/run/mysqld/mysqld.sock" DB_SOCKET="/var/run/mysqld/mysqld.sock"
else else
@@ -305,17 +517,16 @@ fi
cat > "$WEBROOT/db_config.php" << EOF cat > "$WEBROOT/db_config.php" << EOF
<?php <?php
\$db_host = 'localhost'; define('DB_HOST', 'localhost');
\$db_user = 'root'; define('DB_USER', 'root');
\$db_pass = '$DB_PASSWORD'; define('DB_PASS', '$DB_PASSWORD');
\$db_name = 'ALTCor'; define('DB_NAME', 'ALTCor');
\$db_socket = '$DB_SOCKET';
define('OFFICE', '/usr/bin/libreoffice');
define('DB_CHARSET', 'utf8mb4');
define('DB_SOCKET', '$DB_SOCKET'); define('DB_SOCKET', '$DB_SOCKET');
define('DB_CHARSET', 'utf8mb4');
define('OFFICE', '/usr/bin/libreoffice');
?> ?>
EOF EOF
log_success "Конфигурация БД создана"
DOWNLOAD_URL="https://cloud.altcor.ru/setup/download.php" DOWNLOAD_URL="https://cloud.altcor.ru/setup/download.php"
TEMP_DOWNLOAD="/tmp/web_files_$(date +%s)" TEMP_DOWNLOAD="/tmp/web_files_$(date +%s)"
@@ -351,11 +562,11 @@ echo "</div>";
// Проверка подключения к БД // Проверка подключения к БД
try { try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass); $pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET, DB_USER, DB_PASS);
echo "<div class='status success'>"; echo "<div class='status success'>";
echo "<strong>База данных подключена</strong><br>"; echo "<strong>База данных подключена</strong><br>";
echo "База данных: $db_name<br>"; echo "База данных: " . DB_NAME . "<br>";
echo "Хост: $db_host"; echo "Хост: " . DB_HOST;
echo "</div>"; echo "</div>";
} catch (PDOException $e) { } catch (PDOException $e) {
echo "<div class='status warning'>"; echo "<div class='status warning'>";
@@ -377,6 +588,7 @@ echo "</html>";
EOF EOF
} }
log_step "Загрузка файлов приложения..."
find "$WEBROOT" -type f ! -name "db_config.php" -delete 2>/dev/null || true find "$WEBROOT" -type f ! -name "db_config.php" -delete 2>/dev/null || true
if curl -f -L --max-time 30 -o "$WEBROOT/index.php" "$DOWNLOAD_URL" 2>/dev/null; then if curl -f -L --max-time 30 -o "$WEBROOT/index.php" "$DOWNLOAD_URL" 2>/dev/null; then
@@ -384,13 +596,14 @@ if curl -f -L --max-time 30 -o "$WEBROOT/index.php" "$DOWNLOAD_URL" 2>/dev/null;
create_fallback_index create_fallback_index
log_warning "Скачанный файл не является PHP-скриптом, создана резервная страница" log_warning "Скачанный файл не является PHP-скриптом, создана резервная страница"
else else
echo "Ещё чуть-чуть..." log_success "Файлы приложения загружены"
fi fi
else else
create_fallback_index create_fallback_index
log_error "Не удалось загрузить файл с $DOWNLOAD_URL, создана резервная страница" log_warning "Не удалось загрузить файл с $DOWNLOAD_URL, создана резервная страница"
fi fi
log_step "Настройка прав доступа к файлам..."
chown $WEBSERVER_USER:$WEBSERVER_USER "$WEBROOT/index.php" chown $WEBSERVER_USER:$WEBSERVER_USER "$WEBROOT/index.php"
chmod 644 "$WEBROOT/index.php" chmod 644 "$WEBROOT/index.php"
@@ -439,7 +652,9 @@ chown -R $WEBSERVER_USER:$WEBSERVER_USER "$WEBROOT"
chmod -R 755 "$WEBROOT" chmod -R 755 "$WEBROOT"
chmod 644 "$WEBROOT/.htaccess" 2>/dev/null || true chmod 644 "$WEBROOT/.htaccess" 2>/dev/null || true
chmod 600 "$WEBROOT/db_config.php" chmod 600 "$WEBROOT/db_config.php"
log_success "Права доступа настроены"
log_step "Настройка базы данных MariaDB..."
MYSQL_TMP_SCRIPT="/tmp/mysql_setup_$(date +%s).sql" MYSQL_TMP_SCRIPT="/tmp/mysql_setup_$(date +%s).sql"
cat > "$MYSQL_TMP_SCRIPT" << MYSQL_SCRIPT cat > "$MYSQL_TMP_SCRIPT" << MYSQL_SCRIPT
@@ -465,16 +680,15 @@ if ! mysql -u root < "$MYSQL_TMP_SCRIPT" >/dev/null 2>&1; then
exit 1 exit 1
fi fi
rm -f "$MYSQL_TMP_SCRIPT" rm -f "$MYSQL_TMP_SCRIPT"
log_success "База данных настроена"
log_step "Проверка конфигурации Apache..."
if [ "$DISTRO_FAMILY" = "debian" ]; then if [ "$DISTRO_FAMILY" = "debian" ]; then
if ! apache2ctl configtest >/dev/null 2>&1; then if ! apache2ctl configtest >/dev/null 2>&1; then
log_error "Конфигурация Apache содержит ошибки." log_error "Конфигурация Apache содержит ошибки."
exit 1 exit 1
fi fi
systemctl restart apache2 >/dev/null 2>&1
systemctl enable apache2 >/dev/null 2>&1
WEBSERVER_SERVICE="apache2" WEBSERVER_SERVICE="apache2"
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
@@ -483,11 +697,17 @@ elif [ "$DISTRO_FAMILY" = "rhel" ]; then
exit 1 exit 1
fi fi
WEBSERVER_SERVICE="httpd"
fi
log_success "Конфигурация Apache проверена"
log_step "Запуск и включение сервисов..."
if [ "$DISTRO_FAMILY" = "debian" ]; then
systemctl restart apache2 >/dev/null 2>&1
systemctl enable apache2 >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then
systemctl restart httpd >/dev/null 2>&1 systemctl restart httpd >/dev/null 2>&1
systemctl enable httpd >/dev/null 2>&1 systemctl enable httpd >/dev/null 2>&1
WEBSERVER_SERVICE="httpd"
fi fi
systemctl restart mariadb >/dev/null 2>&1 systemctl restart mariadb >/dev/null 2>&1
@@ -496,6 +716,9 @@ systemctl restart redis-server >/dev/null 2>&1 || systemctl restart redis >/dev/
systemctl enable mariadb >/dev/null 2>&1 systemctl enable mariadb >/dev/null 2>&1
systemctl enable redis-server >/dev/null 2>&1 || systemctl enable redis >/dev/null 2>&1 || true systemctl enable redis-server >/dev/null 2>&1 || systemctl enable redis >/dev/null 2>&1 || true
log_success "Все сервисы запущены и добавлены в автозагрузку"
log_step "Финальная проверка работоспособности..."
if ! systemctl is-active --quiet $WEBSERVER_SERVICE; then if ! systemctl is-active --quiet $WEBSERVER_SERVICE; then
log_error "Веб-сервер не запущен" log_error "Веб-сервер не запущен"
exit 1 exit 1
@@ -511,6 +734,9 @@ if ! php -r "echo phpversion();" >/dev/null 2>&1; then
exit 1 exit 1
fi fi
log_success "Все компоненты работают корректно"
log_step "Сохранение учетных данных..."
DB_CREDENTIALS_FILE="/root/.db_password" DB_CREDENTIALS_FILE="/root/.db_password"
cat > "$DB_CREDENTIALS_FILE" << EOF cat > "$DB_CREDENTIALS_FILE" << EOF
# Учетные данные базы данных ALTCor # Учетные данные базы данных ALTCor
@@ -522,20 +748,29 @@ DB_NAME=ALTCor
EOF EOF
chmod 600 "$DB_CREDENTIALS_FILE" chmod 600 "$DB_CREDENTIALS_FILE"
log_success "Учетные данные сохранены в $DB_CREDENTIALS_FILE"
IP_ADDR=$(hostname -I | awk '{print $1}') IP_ADDR=$(hostname -I | awk '{print $1}')
log_success "Установка Altcor успешно завершена"
echo "" echo ""
echo "Установка Altcor успешно завершена." echo "🌐 Доступ к сайту:"
echo " Доступ к сайту:"
echo " • http://localhost/" echo " • http://localhost/"
echo " • http://$IP_ADDR/" echo " • http://$IP_ADDR/"
echo "" echo ""
echo " Доступ к БД:" echo "🗄️ Доступ к БД:"
echo " • Логин: root " echo " • Хост: localhost"
echo " • Логин: root"
echo " • Пароль: $DB_PASSWORD" echo " • Пароль: $DB_PASSWORD"
echo " • База данных: ALTCor"
echo "" echo ""
echo "📁 Расположение файлов:"
echo "Веб-корень: $WEBROOT"
echo " • Конфигурация БД: $WEBROOT/db_config.php"
echo " • Логи Apache: /var/log/apache2/ или /var/log/httpd/"
echo "" echo ""
echo -e "${YELLOW}[Инфо]${NC} При необходимости, пароль от базы данных" echo " Дополнительная информация:"
echo -e "находится в следующим пути: $DB_CREDENTIALS_FILE" echo " • Учетные данные БД: $DB_CREDENTIALS_FILE"
echo " • Для переустановки: ./install.sh -f"
echo " • Для удаления: ./install.sh -u"
echo "" echo ""