Изменены php файлы для веб-сервер

This commit is contained in:
2025-08-10 00:13:24 +03:00
parent add26f3f6b
commit 7642aa81cb

View File

@@ -64,7 +64,7 @@ log_info "Обновление списка пакетов..."
apt update -y
log_info "Установка базовых зависимостей..."
apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https
apt install -y software-properties-common lsb-release ca-certificates curl wget gnupg2 apt-transport-https unzip
# --- 4. ДОБАВЛЕНИЕ РЕПОЗИТОРИЯ PHP 8.3 ---
@@ -224,11 +224,10 @@ else
log_warning "Не найден файл конфигурации $PHP_INI_APACHE"
fi
# --- 8. СОЗДАНИЕ ВЕБ-ФАЙЛОВ ---
# --- 8. СОЗДАНИЕ КОНФИГУРАЦИОННОГО ФАЙЛА БД ---
log_info "Создание веб-файлов..."
log_info "Создание файла конфигурации базы данных..."
# Создаем db_config.php
cat > "$WEBROOT/db_config.php" << 'EOF'
<?php
$db_host = 'localhost';
@@ -241,175 +240,84 @@ define('DB_CHARSET', 'utf8mb4');
?>
EOF
# Создаем index.php
cat > "$WEBROOT/index.php" << 'EOF'
# --- 9. ЗАГРУЗКА УДАЛЕННЫХ ФАЙЛОВ ---
log_info "Загрузка веб-файлов с удаленного сервера..."
DOWNLOAD_URL="https://cloud.altcor.ru/setup/download.php"
TEMP_DOWNLOAD="/tmp/web_files_$(date +%s).zip"
# Проверка доступности сервера
if ! curl -f -s --head "$DOWNLOAD_URL" > /dev/null; then
log_error "Удаленный сервер недоступен: $DOWNLOAD_URL"
log_warning "Создание простого тестового index.php..."
# Создаем простой index.php как fallback
cat > "$WEBROOT/index.php" << 'EOF'
<?php
require_once __DIR__ . '/db_config.php';
// Проверка версии PHP
$php_version = phpversion();
$is_php83 = version_compare($php_version, '8.3.0', '>=') && version_compare($php_version, '8.4.0', '<');
// Проверка подключения к БД
$db_status = "";
$db_error = false;
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=" . DB_CHARSET, $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db_status = "Подключение к базе данных успешно!";
} catch (PDOException $e) {
$db_status = "Ошибка подключения к БД: " . $e->getMessage();
$db_error = true;
}
// Проверка расширений PHP
$extensions = [
'pdo_mysql' => extension_loaded('pdo_mysql'),
'curl' => extension_loaded('curl'),
'gd' => extension_loaded('gd'),
'mbstring' => extension_loaded('mbstring'),
'xml' => extension_loaded('xml'),
'zip' => extension_loaded('zip'),
'opcache' => extension_loaded('opcache'),
'intl' => extension_loaded('intl'),
'bcmath' => extension_loaded('bcmath'),
'json' => extension_loaded('json')
];
// Проверка статуса OPcache
$opcache_enabled = function_exists('opcache_get_status') && opcache_get_status(false)['opcache_enabled'];
// Информация о сервере
$server_info = $_SERVER['SERVER_SOFTWARE'] ?? 'Неизвестно';
$apache_version = apache_get_version() ?? 'Версия недоступна';
echo "<h1>Сервер LAMP готов к работе</h1>";
echo "<p>PHP " . phpversion() . " работает корректно!</p>";
echo "<p>Время: " . date('Y-m-d H:i:s') . "</p>";
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Статус сервера LAMP (Apache + PHP 8.3)</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #333;
margin: 0;
padding: 20px;
min-height: 100vh;
}
.container {
max-width: 900px;
margin: auto;
background: #fff;
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
overflow: hidden;
}
h1, h2 {
padding: 20px 25px;
margin: 0;
background: linear-gradient(135deg, #d73502 0%, #f56500 100%);
color: #fff;
text-shadow: 0 1px 2px rgba(0,0,0,0.2);
}
h1 { font-size: 28px; }
h2 { font-size: 20px; background: linear-gradient(135deg, #e56b47 0%, #f78a65 100%); margin-top: 10px; }
.content { padding: 30px; }
.status {
padding: 20px;
margin-bottom: 20px;
border-left: 5px solid;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}
.success { background: linear-gradient(135deg, #e6fffa 0%, #b2f5ea 100%); border-color: #38b2ac; color: #234e52; }
.error { background: linear-gradient(135deg, #fed7d7 0%, #feb2b2 100%); border-color: #e53e3e; color: #742a2a; }
.info { background: linear-gradient(135deg, #ebf8ff 0%, #bee3f8 100%); border-color: #4299e1; color: #2a4365; }
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 15px;
margin-top: 15px;
}
.grid-item {
padding: 15px;
border-radius: 8px;
text-align: center;
font-weight: 500;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.ok { background: linear-gradient(135deg, #c6f6d5 0%, #9ae6b4 100%); color: #22543d; }
.missing { background: linear-gradient(135deg, #fed7d7 0%, #feb2b2 100%); color: #742a2a; }
strong { color: #2d3748; }
.server-badge {
display: inline-block;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 5px 12px;
border-radius: 15px;
font-size: 12px;
font-weight: bold;
margin-left: 10px;
}
</style>
</head>
<body>
<div class="container">
<h1>🚀 Статус сервера LAMP <span class="server-badge">Apache + PHP 8.3</span></h1>
<div class="content">
<div class="status <?= $is_php83 ? 'success' : 'error' ?>">
<strong>🐘 Версия PHP:</strong> <?= htmlspecialchars($php_version) ?>
<?= $is_php83 ? '<strong style="color:#38b2ac;">✓ PHP 8.3 активен</strong>' : '<strong style="color:#e53e3e;">✗ НЕ PHP 8.3</strong>' ?>
</div>
<div class="status <?= $db_error ? 'error' : 'success' ?>">
<strong>🗄️ База данных:</strong> <?= htmlspecialchars($db_status) ?>
</div>
<div class="status <?= $opcache_enabled ? 'success' : 'error' ?>">
<strong>⚡ OPcache:</strong> <?= $opcache_enabled ? '✓ Включен и работает' : '✗ Отключен или не загружен' ?>
</div>
<h2>🔧 Расширения PHP</h2>
<div class="grid">
<?php foreach ($extensions as $ext => $loaded): ?>
<div class="grid-item <?= $loaded ? 'ok' : 'missing' ?>">
<strong><?= htmlspecialchars($ext) ?>:</strong><br>
<?= $loaded ? '✅ Загружено' : '❌ Отсутствует' ?>
</div>
<?php endforeach; ?>
</div>
<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> <?= htmlspecialchars($apache_version) ?><br>
<strong>⚙️ PHP SAPI:</strong> <?= php_sapi_name() ?><br>
<strong>📁 Document Root:</strong> <?= htmlspecialchars($_SERVER['DOCUMENT_ROOT'] ?? '/var/www/html') ?><br>
<strong>🕒 Время сервера:</strong> <?= date('Y-m-d H:i:s T') ?><br>
<strong>💾 Загруженные модули Apache:</strong>
<?php
if (function_exists('apache_get_modules')) {
$modules = apache_get_modules();
$php_modules = array_filter($modules, function($mod) { return strpos($mod, 'php') !== false; });
echo $php_modules ? implode(', ', $php_modules) : 'mod_php8.3';
} else {
echo 'Информация недоступна';
}
?>
</div>
</div>
</div>
</body>
</html>
EOF
log_warning "Создан временный index.php. Веб-файлы можно будет загрузить позже."
else
log_info "Загрузка файлов..."
# Очищаем веб-директорию (оставляем только db_config.php)
find "$WEBROOT" -type f ! -name "db_config.php" -delete 2>/dev/null || true
# Загружаем архив
if curl -f -s -o "$TEMP_DOWNLOAD" "$DOWNLOAD_URL"; then
log_success "Файлы успешно загружены."
log_info "Распаковка файлов..."
# Проверяем, что это ZIP-архив
if file "$TEMP_DOWNLOAD" | grep -q "Zip archive"; then
if unzip -q "$TEMP_DOWNLOAD" -d "$WEBROOT"; then
log_success "Файлы успешно распакованы в $WEBROOT"
else
log_error "Ошибка при распаковке архива."
rm -f "$TEMP_DOWNLOAD"
exit 1
fi
else
log_info "Полученный файл не является ZIP-архивом. Попытка сохранить как PHP-файл..."
# Если это не архив, возможно это PHP-скрипт
if head -n 1 "$TEMP_DOWNLOAD" | grep -q "<?php\|<!DOCTYPE"; then
mv "$TEMP_DOWNLOAD" "$WEBROOT/index.php"
log_success "Файл сохранен как index.php"
else
log_error "Неизвестный формат загруженного файла."
rm -f "$TEMP_DOWNLOAD"
exit 1
fi
fi
# Удаляем временный файл
rm -f "$TEMP_DOWNLOAD"
else
log_error "Не удалось загрузить файлы с $DOWNLOAD_URL"
log_warning "Создание простого тестового index.php..."
# Создаем простой index.php как fallback
cat > "$WEBROOT/index.php" << 'EOF'
<?php
echo "<h1>Сервер LAMP готов к работе</h1>";
echo "<p>PHP " . phpversion() . " работает корректно!</p>";
echo "<p>Время: " . date('Y-m-d H:i:s') . "</p>";
echo "<p><strong>Внимание:</strong> Не удалось загрузить основные файлы приложения.</p>";
?>
EOF
log_warning "Создан временный index.php. Проверьте доступность удаленного сервера."
fi
fi
# --- 8. СОЗДАНИЕ .HTACCESS ---
# --- 10. СОЗДАНИЕ .HTACCESS ---
log_info "Создание .htaccess для безопасности..."
@@ -462,10 +370,10 @@ EOF
# Установка правильных прав доступа
chown -R www-data:www-data "$WEBROOT"
chmod -R 755 "$WEBROOT"
chmod 644 "$WEBROOT/.htaccess"
chmod 644 "$WEBROOT/.htaccess" 2>/dev/null || true
chmod 600 "$WEBROOT/db_config.php"
# --- 9. НАСТРОЙКА БАЗЫ ДАННЫХ ---
# --- 11. НАСТРОЙКА БАЗЫ ДАННЫХ ---
log_info "Настройка MariaDB..."
@@ -503,7 +411,7 @@ else
fi
rm -f "$MYSQL_TMP_SCRIPT"
# --- 10. ПРОВЕРКА КОНФИГУРАЦИИ И ЗАПУСК ---
# --- 12. ПРОВЕРКА КОНФИГУРАЦИИ И ЗАПУСК ---
log_info "Проверка конфигурации Apache..."
if apache2ctl configtest; then
@@ -522,7 +430,7 @@ systemctl restart redis-server
systemctl enable apache2 mariadb redis-server
# --- 11. ФИНАЛЬНАЯ ПРОВЕРКА ---
# --- 13. ФИНАЛЬНАЯ ПРОВЕРКА ---
log_info "Выполнение финальной проверки..."
@@ -553,6 +461,13 @@ else
log_error "PHP не работает корректно"
fi
# Проверка загруженных файлов
if [ -f "$WEBROOT/index.php" ]; then
log_success "Веб-файлы найдены в $WEBROOT"
else
log_warning "Основной index.php не найден"
fi
# --- ЗАВЕРШЕНИЕ ---
IP_ADDR=$(hostname -I | awk '{print $1}')
@@ -566,6 +481,7 @@ echo " • Архитектура: LAMP (Linux + Apache + MariaDB + PHP)"
echo " • Версия PHP: $(php --version | head -n1)"
echo "Веб-директория: $WEBROOT"
echo " • База данных: ALTCor (пользователь: root)"
echo " • Источник файлов: $DOWNLOAD_URL"
echo ""
echo "🌐 Доступ к сайту:"
echo " • http://localhost/"
@@ -586,4 +502,8 @@ echo " • Файл db_config.php защищен от прямого дост
echo " • Включены базовые заголовки безопасности"
echo " • OPcache оптимизирован для производительности"
echo ""
echo "⚠️ Примечание:"
echo " Если загрузка не удалась, можете повторно загрузить файлы:"
echo " cd $WEBROOT && wget $DOWNLOAD_URL -O files.zip && unzip files.zip"
echo ""
echo "=============================================="