Update Apache
This commit is contained in:
99
install.sh
99
install.sh
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Скрипт для автоматической установки и настройки LEMP (Nginx, MariaDB, PHP-FPM 8.3)
|
||||
# Исправленный скрипт для автоматической установки и настройки LEMP
|
||||
set -e
|
||||
|
||||
# --- 1. ПРОВЕРКА СИСТЕМЫ И ПРАВ ---
|
||||
@@ -21,7 +21,7 @@ fi
|
||||
|
||||
echo "Определен дистрибутив: $DISTRO (Семейство: ${FAMILY:-$DISTRO}, Версия: $VERSION_ID)"
|
||||
|
||||
# --- 2. УСТАНОВКА ДЛЯ DEBIAN-ПОДОБНЫХ СИСТЕМ (Debian, Ubuntu) ---
|
||||
# --- 2. УСТАНОВКА ДЛЯ DEBIAN-ПОДОБНЫХ СИСТЕМ ---
|
||||
|
||||
if echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then
|
||||
echo "Начало установки LEMP для Debian-подобной системы..."
|
||||
@@ -29,7 +29,7 @@ if echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then
|
||||
apt update -y
|
||||
apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2
|
||||
|
||||
# Добавление PPA ondrej/php для гарантированной установки PHP 8.3
|
||||
# Добавление PPA ondrej/php для PHP 8.3
|
||||
if ! apt-cache show php8.3-fpm &>/dev/null; then
|
||||
echo "PHP 8.3 не найден. Добавляем PPA ondrej/php..."
|
||||
CODENAME=$(lsb_release -sc)
|
||||
@@ -47,11 +47,17 @@ if echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Установка пакетов: apache2, nginx (для прокси), mariadb, redis, php-fpm..."
|
||||
# Устанавливаем Nginx и PHP-FPM
|
||||
apt install -y apache2 nginx mariadb-server redis-server libreoffice default-jre
|
||||
echo "Установка пакетов: nginx, mariadb, redis, php-fpm..."
|
||||
|
||||
# Останавливаем Apache, если он запущен, и удаляем его
|
||||
systemctl stop apache2 2>/dev/null || true
|
||||
systemctl disable apache2 2>/dev/null || true
|
||||
apt remove -y apache2 apache2-common apache2-utils 2>/dev/null || true
|
||||
|
||||
# Устанавливаем только нужные пакеты
|
||||
apt install -y nginx mariadb-server redis-server libreoffice default-jre
|
||||
|
||||
# Устанавливаем PHP 8.3-FPM и все необходимые расширения
|
||||
# Устанавливаем PHP 8.3-FPM и расширения
|
||||
PHP_PACKAGES="php8.3-fpm 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"
|
||||
@@ -69,44 +75,20 @@ if echo "$DISTRO $FAMILY" | grep -qi "debian\|ubuntu"; then
|
||||
fi
|
||||
echo "PHP 8.3 ($INSTALLED_PHP_VERSION) успешно установлен."
|
||||
|
||||
systemctl enable --now mariadb redis-server nginx php8.3-fpm
|
||||
systemctl enable --now mariadb redis-server php8.3-fpm
|
||||
|
||||
else
|
||||
echo "ОШИБКА: Ваш дистрибутив '$DISTRO' не поддерживается этим скриптом. Поддерживаются только Debian/Ubuntu."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
systemctl stop apache2 nginx
|
||||
# --- 3. НАСТРОЙКА NGINX ---
|
||||
|
||||
WEBROOT="/var/www/html"
|
||||
echo "Корневая директория веб-сервера: $WEBROOT"
|
||||
mkdir -p "$WEBROOT"
|
||||
|
||||
APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
|
||||
echo "Настройка Apache в $APACHE_CONF..."
|
||||
|
||||
# Конфигурация Apache для работы с PHP-FPM
|
||||
cat > "$APACHE_CONF" <<EOF
|
||||
<VirtualHost *:8080>
|
||||
DocumentRoot $WEBROOT
|
||||
<Directory $WEBROOT>
|
||||
Options -Indexes +FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
<FilesMatch \.php$>
|
||||
SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost"
|
||||
</FilesMatch>
|
||||
|
||||
ErrorLog \${APACHE_LOG_DIR}/error.log
|
||||
CustomLog \${APACHE_LOG_DIR}/access.log combined
|
||||
</VirtualHost>
|
||||
EOF
|
||||
|
||||
sed -i 's/Listen 80/Listen 8080/' /etc/apache2/ports.conf
|
||||
|
||||
# Создание конфигурации Nginx для нашего сайта
|
||||
# Создание правильной конфигурации Nginx
|
||||
NGINX_CONF="/etc/nginx/sites-available/default"
|
||||
echo "Создание конфигурации Nginx в $NGINX_CONF..."
|
||||
|
||||
@@ -115,25 +97,36 @@ server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
root $WEBROOT;
|
||||
index index.php index.html index.htm;
|
||||
server_name _;
|
||||
|
||||
# Основная обработка файлов
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8080;
|
||||
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;
|
||||
try_files \$uri \$uri/ =404;
|
||||
}
|
||||
|
||||
# Обработка PHP файлов через PHP-FPM
|
||||
location ~ \.php$ {
|
||||
return 404;
|
||||
include snippets/fastcgi-php.conf;
|
||||
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
|
||||
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
# Запрет доступа к .htaccess файлам
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
|
||||
# Кэширование статических файлов
|
||||
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
a2enmod proxy_fcgi rewrite
|
||||
systemctl restart apache2
|
||||
|
||||
# Проверка конфигурации Nginx
|
||||
if ! nginx -t; then
|
||||
echo "ОШИБКА: Конфигурация Nginx содержит ошибки."
|
||||
@@ -142,7 +135,6 @@ fi
|
||||
|
||||
# --- 4. СОЗДАНИЕ ВЕБ-ФАЙЛОВ ---
|
||||
|
||||
# Файлы db_config.php и index.php остаются такими же, как в предыдущей версии.
|
||||
# Создаем db_config.php
|
||||
cat > "$WEBROOT/db_config.php" << 'EOF'
|
||||
<?php
|
||||
@@ -156,7 +148,7 @@ define('DB_CHARSET', 'utf8mb4');
|
||||
?>
|
||||
EOF
|
||||
|
||||
# Создаем index.php
|
||||
# Создаем index.php (тот же код что и в оригинале)
|
||||
cat > "$WEBROOT/index.php" << 'EOF'
|
||||
<?php
|
||||
require_once __DIR__ . '/db_config.php';
|
||||
@@ -204,7 +196,7 @@ $opcache_enabled = function_exists('opcache_get_status') && opcache_get_status(f
|
||||
<style>
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; background-color: #f4f7f9; color: #333; margin: 0; padding: 20px; }
|
||||
.container { max-width: 800px; margin: auto; background: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.05); overflow: hidden; }
|
||||
h1, h2 { padding: 20px 25px; margin: 0; background: #009639; color: #fff; } /* Nginx green */
|
||||
h1, h2 { padding: 20px 25px; margin: 0; background: #009639; color: #fff; }
|
||||
h1 { font-size: 24px; }
|
||||
h2 { font-size: 18px; background: #68a068; margin-top: 10px; }
|
||||
.content { padding: 25px; }
|
||||
@@ -239,7 +231,7 @@ $opcache_enabled = function_exists('opcache_get_status') && opcache_get_status(f
|
||||
<h2>Информация о системе</h2>
|
||||
<div class="status info">
|
||||
<strong>Java:</strong> <?php $java_version = shell_exec('java -version 2>&1 | head -n1'); echo $java_version ? htmlspecialchars(trim($java_version)) : 'Не найдена'; ?><br>
|
||||
<strong>Сервер:</strong> <?= $_SERVER['SERVER_SOFTWARE'] ?? 'Неизвестно' ?><br>
|
||||
<strong>Сервер:</strong> <?= $_SERVER['SERVER_SOFTWARE'] ?? 'Nginx' ?><br>
|
||||
<strong>Web SAPI:</strong> <?= php_sapi_name() ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -253,7 +245,6 @@ chmod -R 755 "$WEBROOT"
|
||||
|
||||
# --- 5. НАСТРОЙКА PHP.INI ДЛЯ FPM ---
|
||||
|
||||
# Настраиваем php.ini именно для FPM
|
||||
PHP_INI_FPM="/etc/php/8.3/fpm/php.ini"
|
||||
echo "Настройка PHP-FPM в $PHP_INI_FPM..."
|
||||
|
||||
@@ -263,7 +254,6 @@ if [ -f "$PHP_INI_FPM" ]; then
|
||||
sed -i 's/post_max_size = .*/post_max_size = 64M/' "$PHP_INI_FPM"
|
||||
sed -i 's/max_execution_time = .*/max_execution_time = 300/' "$PHP_INI_FPM"
|
||||
sed -i 's/memory_limit = .*/memory_limit = 256M/' "$PHP_INI_FPM"
|
||||
# Явно включаем opcache
|
||||
sed -i 's/;opcache.enable=.*/opcache.enable=1/' "$PHP_INI_FPM"
|
||||
sed -i 's/;opcache.enable_cli=.*/opcache.enable_cli=1/' "$PHP_INI_FPM"
|
||||
sed -i 's/;opcache.memory_consumption=.*/opcache.memory_consumption=128/' "$PHP_INI_FPM"
|
||||
@@ -285,7 +275,6 @@ DELETE FROM mysql.user WHERE user='root' AND host NOT IN ('localhost', '127.0.0.
|
||||
DROP DATABASE IF EXISTS test;
|
||||
MYSQL_SCRIPT
|
||||
|
||||
# Выполняем настройку через системный вызов
|
||||
if ! mysql -u root < "$MYSQL_TMP_SCRIPT"; then
|
||||
echo "ОШИБКА: Не удалось выполнить скрипт настройки MariaDB."
|
||||
rm -f "$MYSQL_TMP_SCRIPT"
|
||||
@@ -298,15 +287,15 @@ echo "База данных успешно настроена."
|
||||
# --- 7. ПЕРЕЗАПУСК СЛУЖБ И ФИНАЛЬНАЯ ПРОВЕРКА ---
|
||||
|
||||
systemctl restart php8.3-fpm
|
||||
systemctl restart apache2
|
||||
systemctl restart nginx
|
||||
|
||||
systemctl enable apache2 nginx php8.3-fpm mariadb redis-server
|
||||
systemctl enable nginx php8.3-fpm mariadb redis-server
|
||||
|
||||
# --- ЗАВЕРШЕНИЕ ---
|
||||
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||
echo ""
|
||||
echo ""
|
||||
echo "=== УСТАНОВКА ЗАВЕРШЕНА ==="
|
||||
echo " Архитектура: LEMP (Linux + Nginx + MariaDB + PHP)"
|
||||
echo " Версия PHP: $(php --version | head -n1)"
|
||||
echo " Веб-директория: $WEBROOT"
|
||||
echo ""
|
||||
@@ -315,5 +304,5 @@ echo " -> http://localhost/"
|
||||
echo " -> http://$IP_ADDR/"
|
||||
echo ""
|
||||
echo " Статус активных служб:"
|
||||
systemctl is-active apache2 nginx php8.3-fpm mariadb redis-server || echo "ПРЕДУПРЕЖДЕНИЕ: Некоторые службы неактивны."
|
||||
echo ""
|
||||
systemctl is-active nginx php8.3-fpm mariadb redis-server || echo "ПРЕДУПРЕЖДЕНИЕ: Некоторые службы неактивны."
|
||||
echo ""
|
||||
Reference in New Issue
Block a user