Перенос кода

This commit is contained in:
2025-08-14 05:56:25 +03:00
parent 21dd04a4b4
commit 1b5673aef1

View File

@@ -48,11 +48,9 @@ cleanup_apache_config() {
if [ -f /etc/apache2/ports.conf ]; then if [ -f /etc/apache2/ports.conf ]; then
cp /etc/apache2/ports.conf /etc/apache2/ports.conf.backup.$(date +%Y%m%d_%H%M%S) cp /etc/apache2/ports.conf /etc/apache2/ports.conf.backup.$(date +%Y%m%d_%H%M%S)
# Удаляем все Listen директивы для порта 80
grep -v "^Listen\s\+.*:80$" /etc/apache2/ports.conf > /etc/apache2/ports.conf.tmp || true grep -v "^Listen\s\+.*:80$" /etc/apache2/ports.conf > /etc/apache2/ports.conf.tmp || true
grep -v "^Listen\s\+80$" /etc/apache2/ports.conf.tmp > /etc/apache2/ports.conf.tmp2 || true grep -v "^Listen\s\+80$" /etc/apache2/ports.conf.tmp > /etc/apache2/ports.conf.tmp2 || true
# Добавляем одну Listen директиву
echo "Listen *:80" >> /etc/apache2/ports.conf.tmp2 echo "Listen *:80" >> /etc/apache2/ports.conf.tmp2
mv /etc/apache2/ports.conf.tmp2 /etc/apache2/ports.conf mv /etc/apache2/ports.conf.tmp2 /etc/apache2/ports.conf
rm -f /etc/apache2/ports.conf.tmp rm -f /etc/apache2/ports.conf.tmp
@@ -63,34 +61,18 @@ cleanup_apache_config() {
if [ -f "$HTTPD_CONF" ]; then if [ -f "$HTTPD_CONF" ]; then
cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)" cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
# Удаляем все Listen директивы для порта 80
grep -v "^Listen.*:80$" "$HTTPD_CONF" > "${HTTPD_CONF}.tmp" || true grep -v "^Listen.*:80$" "$HTTPD_CONF" > "${HTTPD_CONF}.tmp" || true
grep -v "^Listen 80$" "${HTTPD_CONF}.tmp" > "${HTTPD_CONF}.tmp2" || true grep -v "^Listen 80$" "${HTTPD_CONF}.tmp" > "${HTTPD_CONF}.tmp2" || true
# Добавляем одну Listen директиву
echo "Listen 80" >> "${HTTPD_CONF}.tmp2" echo "Listen 80" >> "${HTTPD_CONF}.tmp2"
mv "${HTTPD_CONF}.tmp2" "$HTTPD_CONF" mv "${HTTPD_CONF}.tmp2" "$HTTPD_CONF"
rm -f "${HTTPD_CONF}.tmp" rm -f "${HTTPD_CONF}.tmp"
fi fi
# Также очищаем PHP-FPM конфигурацию от дублирующихся модулей
if [ -f "/etc/httpd/conf.d/php-fpm.conf" ]; then if [ -f "/etc/httpd/conf.d/php-fpm.conf" ]; then
log_info "Очистка PHP-FPM конфигурации от LoadModule директив..." log_info "Очистка PHP-FPM конфигурации от LoadModule директив..."
if [ "$DISTRO" = "fedora" ]; then cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
DirectoryIndex index.php index.html index.htm
<Files "*.php">
Require all granted
</Files>
EOF
else
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
<FilesMatch \.php$> <FilesMatch \.php$>
SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost" SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch> </FilesMatch>
@@ -101,7 +83,6 @@ DirectoryIndex index.php index.html index.htm
Require all granted Require all granted
</Files> </Files>
EOF EOF
fi
fi fi
fi fi
@@ -142,7 +123,7 @@ check_existing_installation() {
if [ -f "/var/www/html/db_config.php" ]; then if [ -f "/var/www/html/db_config.php" ]; then
if grep -q "ALTCor" "/var/www/html/db_config.php" 2>/dev/null && grep -q "DB_NAME" "/var/www/html/db_config.php" 2>/dev/null; then if grep -q "ALTCor" "/var/www/html/db_config.php" 2>/dev/null && grep -q "DB_NAME" "/var/www/html/db_config.php" 2>/dev/null; then
altcor_signs=$((altcor_signs + 1)) altcor_signs=$((altcor_signs + 1))
log_info "Найдена конфигурация БД Altcor" log_info "Найдена конфигурация БД Altcor"
fi fi
fi fi
@@ -152,7 +133,7 @@ check_existing_installation() {
source "/root/.db_password" 2>/dev/null || true source "/root/.db_password" 2>/dev/null || true
if [ -n "$DB_PASSWORD" ] && mysql -u root -p"$DB_PASSWORD" -e "USE ALTCor; SELECT 1;" >/dev/null 2>&1; then if [ -n "$DB_PASSWORD" ] && mysql -u root -p"$DB_PASSWORD" -e "USE ALTCor; SELECT 1;" >/dev/null 2>&1; then
altcor_signs=$((altcor_signs + 1)) altcor_signs=$((altcor_signs + 1))
log_info "Найдена рабочая база данных ALTCor" log_info "Найдена рабочая база данных ALTCor"
fi fi
fi fi
fi fi
@@ -163,7 +144,7 @@ check_existing_installation() {
! grep -q "phpinfo\|Сервер готов к работе\|PHP.*работает" "/var/www/html/index.php" 2>/dev/null && ! grep -q "phpinfo\|Сервер готов к работе\|PHP.*работает" "/var/www/html/index.php" 2>/dev/null &&
wc -l < "/var/www/html/index.php" > 50); then wc -l < "/var/www/html/index.php" > 50); then
altcor_signs=$((altcor_signs + 1)) altcor_signs=$((altcor_signs + 1))
log_info "Найдены файлы приложения Altcor" log_info "Найдены файлы приложения Altcor"
fi fi
fi fi
@@ -233,9 +214,9 @@ check_existing_installation() {
fi fi
if [ "$altcor_installed" = true ]; then if [ "$altcor_installed" = true ]; then
echo -e "${GREEN}✓ ALTCOR УЖЕ УСТАНОВЛЕН${NC}" log_error "Обнаружена рабочая установка Altcor, которая уже содержится в системе."
echo "" echo ""
echo "Обнаружена рабочая установка Altcor со следующими компонентами:" echo "Установлено следующее:"
echo "" echo ""
case $apache_status in case $apache_status in
@@ -303,7 +284,7 @@ check_existing_installation() {
fi fi
elif [ "$components_installed" = true ]; then elif [ "$components_installed" = true ]; then
echo -e "${YELLOW}ОБНАРУЖЕНЫ СУЩЕСТВУЮЩИЕ ВЕБ-КОМПОНЕНТЫ${NC}" log_warning "ОБНАРУЖЕНЫ СУЩЕСТВУЮЩИЕ ВЕБ-КОМПОНЕНТЫ"
echo "" echo ""
echo "На вашем сервере уже установлены следующие компоненты:" echo "На вашем сервере уже установлены следующие компоненты:"
echo "" echo ""
@@ -383,15 +364,7 @@ check_existing_installation() {
fi fi
else else
echo -e "${GREEN}✓ СИСТЕМА ГОТОВА К УСТАНОВКЕ${NC}" log_success "Система готова к установке Altcor"
echo ""
echo "Компоненты для установки:"
echo "• Apache веб-сервер"
echo "• PHP 8.3"
echo "• MariaDB база данных"
echo "• Redis кеш-сервер"
echo "• LibreOffice"
echo ""
log_info "Начинаем чистую установку Altcor..." log_info "Начинаем чистую установку Altcor..."
return 0 return 0
fi fi
@@ -489,8 +462,8 @@ proceed_with_installation() {
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER update -y >/dev/null 2>&1 $PKG_MANAGER update -y >/dev/null 2>&1
$PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true $PKG_MANAGER install -y epel-release >/dev/null 2>&1 || true
$PKG_MANAGER install -y curl wget gnupg2 unzip >/dev/null 2>&1 $PKG_MANAGER install -y curl wget gnupg2 unzip openssl >/dev/null 2>&1
fi fi
log_success "Система обновлена, базовые пакеты установлены" log_success "Система обновлена, базовые пакеты установлены"
log_step "Добавление репозиториев для PHP 8.3..." log_step "Добавление репозиториев для PHP 8.3..."
@@ -573,7 +546,7 @@ proceed_with_installation() {
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
apt install -y redis-server libreoffice default-jre >/dev/null 2>&1 apt install -y redis-server libreoffice default-jre >/dev/null 2>&1
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
$PKG_MANAGER install -y redis libreoffice $PKG_MANAGER install -y redis libreoffice >/dev/null 2>&1
fi fi
log_success "Дополнительные компоненты установлены" log_success "Дополнительные компоненты установлены"
@@ -590,15 +563,9 @@ proceed_with_installation() {
fi fi
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
if [ "$DISTRO" = "fedora" ]; then PHP_PACKAGES="php83-php-cli php83-php-common php83-php-mysqlnd php83-php-curl php83-php-gd \
PHP_PACKAGES="php php-cli php-common php-mysqlnd php-curl php-gd \ php83-php-mbstring php83-php-xml php83-php-zip php83-php-opcache php83-php-intl \
php-mbstring php-xml php-zip php-opcache php-intl \ php83-php-bcmath php83-php-fpm"
php-bcmath php-fpm"
else
PHP_PACKAGES="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 php83-php-fpm"
fi
if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then if ! $PKG_MANAGER install -y $PHP_PACKAGES >/dev/null 2>&1; then
log_error "Не удалось установить PHP 8.3 и/или его расширения." log_error "Не удалось установить PHP 8.3 и/или его расширения."
@@ -614,61 +581,27 @@ proceed_with_installation() {
log_step "Настройка Apache и модулей..." 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
for php_ver in 7.4 8.0 8.1 8.2; do for php_ver in 7.4 8.0 8.1 8.2; do
a2dismod php$php_ver >/dev/null 2>&1 || true a2dismod php$php_ver >/dev/null 2>&1 || true
done done
WEBROOT="/var/www/html" WEBROOT="/var/www/html"
APACHE_CONF="/etc/apache2/sites-available/000-default.conf" APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
WEBSERVER_USER="www-data" WEBSERVER_USER="www-data"
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
WEBROOT="/var/www/html" WEBROOT="/var/www/html"
APACHE_CONF="/etc/httpd/conf.d/000-default.conf" APACHE_CONF="/etc/httpd/conf.d/000-default.conf"
WEBSERVER_USER="apache" WEBSERVER_USER="apache"
# Очищаем старые конфигурации
rm -f /etc/httpd/conf.d/php.conf rm -f /etc/httpd/conf.d/php.conf
rm -f /etc/httpd/conf.d/php-fpm.conf rm -f /etc/httpd/conf.d/php-fpm.conf
log_info "Настройка PHP-FPM для Apache..." log_info "Настройка PHP-FPM для Apache..."
if [ "$DISTRO" = "fedora" ]; then cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
# Для Fedora используем стандартный PHP-FPM без LoadModule директив
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
DirectoryIndex index.php index.html index.htm
<Files "*.php">
Require all granted
</Files>
EOF
# Настраиваем стандартный PHP-FPM для Fedora
if [ -f "/etc/php-fpm.d/www.conf" ]; then
PHP_FPM_CONF="/etc/php-fpm.d/www.conf"
cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
sed -i 's/^user = .*/user = apache/' "$PHP_FPM_CONF"
sed -i 's/^group = .*/group = apache/' "$PHP_FPM_CONF"
sed -i 's/^listen = .*/listen = 127.0.0.1:9000/' "$PHP_FPM_CONF"
log_info "PHP-FPM пул настроен для Fedora"
# Запускаем и включаем PHP-FPM
systemctl enable php-fpm >/dev/null 2>&1
systemctl start php-fpm >/dev/null 2>&1
fi
else
# Для CentOS/RHEL/AlmaLinux с Remi репозиторием
cat > "/etc/httpd/conf.d/php-fpm.conf" << 'EOF'
<FilesMatch \.php$> <FilesMatch \.php$>
SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost" SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch> </FilesMatch>
@@ -679,50 +612,40 @@ DirectoryIndex index.php index.html index.htm
Require all granted Require all granted
</Files> </Files>
EOF EOF
if [ -f "/etc/opt/remi/php83/php-fpm.d/www.conf" ]; then
PHP_FPM_CONF="/etc/opt/remi/php83/php-fpm.d/www.conf"
if [ -f "/etc/opt/remi/php83/php-fpm.d/www.conf" ]; then cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
PHP_FPM_CONF="/etc/opt/remi/php83/php-fpm.d/www.conf"
cp "$PHP_FPM_CONF" "${PHP_FPM_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
sed -i 's/^user = .*/user = apache/' "$PHP_FPM_CONF"
sed -i 's/^group = .*/group = apache/' "$PHP_FPM_CONF"
sed -i 's/^listen = .*/listen = \/var\/opt\/remi\/php83\/run\/php-fpm\/www.sock/' "$PHP_FPM_CONF"
sed -i 's/^;listen.owner = .*/listen.owner = apache/' "$PHP_FPM_CONF"
sed -i 's/^;listen.group = .*/listen.group = apache/' "$PHP_FPM_CONF"
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' "$PHP_FPM_CONF"
log_info "PHP-FPM пул настроен для RHEL/CentOS"
fi
mkdir -p /var/opt/remi/php83/run/php-fpm sed -i 's/^user = .*/user = apache/' "$PHP_FPM_CONF"
chown apache:apache /var/opt/remi/php83/run/php-fpm sed -i 's/^group = .*/group = apache/' "$PHP_FPM_CONF"
sed -i 's/^listen = .*/listen = \/var\/opt\/remi\/php83\/run\/php-fpm\/www.sock/' "$PHP_FPM_CONF"
sed -i 's/^;listen.owner = .*/listen.owner = apache/' "$PHP_FPM_CONF"
sed -i 's/^;listen.group = .*/listen.group = apache/' "$PHP_FPM_CONF"
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' "$PHP_FPM_CONF"
log_info "PHP-FPM пул настроен для RHEL/CentOS/Fedora"
fi fi
# Очищаем дублирующиеся Listen директивы mkdir -p /var/opt/remi/php83/run/php-fpm
chown apache:apache /var/opt/remi/php83/run/php-fpm
HTTPD_CONF="/etc/httpd/conf/httpd.conf" HTTPD_CONF="/etc/httpd/conf/httpd.conf"
log_step "Очистка дублирующихся Listen директив..." log_step "Очистка дублирующихся Listen директив..."
# Создаем резервную копию
cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)" cp "$HTTPD_CONF" "${HTTPD_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
# Удаляем все существующие Listen директивы для порта 80
sed -i '/^Listen.*:80$/d' "$HTTPD_CONF" sed -i '/^Listen.*:80$/d' "$HTTPD_CONF"
sed -i '/^Listen 80$/d' "$HTTPD_CONF" sed -i '/^Listen 80$/d' "$HTTPD_CONF"
# Добавляем только одну Listen директиву в конец файла
if ! grep -q "^Listen 80$" "$HTTPD_CONF"; then if ! grep -q "^Listen 80$" "$HTTPD_CONF"; then
echo "Listen 80" >> "$HTTPD_CONF" echo "Listen 80" >> "$HTTPD_CONF"
fi fi
log_success "Listen директивы очищены" log_success "Listen директивы очищены"
fi fi
# mkdir -p /var/opt/remi/php83/run/php-fpm
# chown apache:apache /var/opt/remi/php83/run/php-fpm
# fi
# fi
log_success "Модули Apache настроены" log_success "Модули Apache настроены"
log_step "Создание конфигурации виртуального хоста..." log_step "Создание конфигурации виртуального хоста..."
@@ -833,41 +756,17 @@ EOF
log_success "Конфигурация виртуального хоста создана" log_success "Конфигурация виртуального хоста создана"
cleanup_apache_config cleanup_apache_config
# log_step "Настройка Apache для прослушивания всех интерфейсов..."
# if [ "$DISTRO_FAMILY" = "debian" ]; then
# if ! grep -q "Listen.*:80" /etc/apache2/ports.conf; then
# echo "Listen *:80" >> /etc/apache2/ports.conf
# elif grep -q "Listen 127.0.0.1:80" /etc/apache2/ports.conf && ! grep -q "Listen \*:80\|Listen 0.0.0.0:80" /etc/apache2/ports.conf; then
# sed -i 's/Listen 127.0.0.1:80/Listen *:80/' /etc/apache2/ports.conf
# fi
# awk '!seen && /^Listen.*:80$/{seen=1; print "Listen *:80"; next} !/^Listen.*:80$/{print}' /etc/apache2/ports.conf > /etc/apache2/ports.conf.tmp && mv /etc/apache2/ports.conf.tmp /etc/apache2/ports.conf
# elif [ "$DISTRO_FAMILY" = "rhel" ]; then
# HTTPD_CONF="/etc/httpd/conf/httpd.conf"
# if ! grep -q "Listen.*:80" "$HTTPD_CONF"; then
# echo "Listen *:80" >> "$HTTPD_CONF"
# elif grep -q "Listen 127.0.0.1:80" "$HTTPD_CONF" && ! grep -q "Listen \*:80\|Listen 0.0.0.0:80" "$HTTPD_CONF"; then
# sed -i 's/Listen 127.0.0.1:80/Listen *:80/' "$HTTPD_CONF"
# fi
# awk '!seen && /^Listen.*:80$/{seen=1; print "Listen *:80"; next} !/^Listen.*:80$/{print}' "$HTTPD_CONF" > "$HTTPD_CONF.tmp" && mv "$HTTPD_CONF.tmp" "$HTTPD_CONF"
# fi
# log_success "Apache настроен для прослушивания всех интерфейсов"
log_step "Настройка PHP.ini..." 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
if [ "$DISTRO" = "fedora" ]; then if [ -f "/etc/opt/remi/php83/php.ini" ]; then
PHP_INI_PATH="/etc/opt/remi/php83/php.ini"
elif [ -f "/opt/remi/php83/root/etc/php.ini" ]; then
PHP_INI_PATH="/opt/remi/php83/root/etc/php.ini"
elif [ -f "/etc/php.ini" ]; then
PHP_INI_PATH="/etc/php.ini" PHP_INI_PATH="/etc/php.ini"
else
if [ -f "/etc/opt/remi/php83/php.ini" ]; then
PHP_INI_PATH="/etc/opt/remi/php83/php.ini"
elif [ -f "/opt/remi/php83/root/etc/php.ini" ]; then
PHP_INI_PATH="/opt/remi/php83/root/etc/php.ini"
elif [ -f "/etc/php.ini" ]; then
PHP_INI_PATH="/etc/php.ini"
fi
fi fi
fi fi
@@ -1267,19 +1166,17 @@ MYSQL_SCRIPT
WEBSERVER_SERVICE="apache2" WEBSERVER_SERVICE="apache2"
elif [ "$DISTRO_FAMILY" = "rhel" ]; then elif [ "$DISTRO_FAMILY" = "rhel" ]; then
if [ "$DISTRO" != "fedora" ]; then log_info "Запуск PHP-FPM..."
log_info "Запуск PHP-FPM..." systemctl stop php83-php-fpm >/dev/null 2>&1 || true
systemctl stop php83-php-fpm >/dev/null 2>&1 || true systemctl start php83-php-fpm >/dev/null 2>&1
systemctl start php83-php-fpm >/dev/null 2>&1 systemctl enable php83-php-fpm >/dev/null 2>&1
systemctl enable php83-php-fpm >/dev/null 2>&1
sleep 3
sleep 3
if ! systemctl is-active --quiet php83-php-fpm; then
if ! systemctl is-active --quiet php83-php-fpm; then log_error "PHP-FPM не запустился"
log_error "PHP-FPM не запустился" systemctl status php83-php-fpm --no-pager -l
systemctl status php83-php-fpm --no-pager -l exit 1
exit 1
fi
fi fi
systemctl restart httpd >/dev/null 2>&1 systemctl restart httpd >/dev/null 2>&1
@@ -1333,7 +1230,7 @@ MYSQL_SCRIPT
exit 1 exit 1
fi fi
if [ "$DISTRO_FAMILY" = "rhel" ] && [ "$DISTRO" != "fedora" ]; then if [ "$DISTRO_FAMILY" = "rhel" ]; then
if ! systemctl is-active --quiet php83-php-fpm; then if ! systemctl is-active --quiet php83-php-fpm; then
log_error "PHP-FPM не запущен" log_error "PHP-FPM не запущен"
systemctl status php83-php-fpm --no-pager -l systemctl status php83-php-fpm --no-pager -l