*Cube-Host– облачный хостинг!!

Как установить и настроить LAMP на VPS под управлением Linux

How to install and configure LAMP on Linux VPS

LAMP (Linux, Apache, MySQL/MariaDB, PHP) — это классический и надежный стек для веб-сайтов, API и многих популярных CMS-платформ. В этом руководстве вы настроите Apache, обеспечите безопасность MySQL, установите модули PHP, настроите виртуальный хост Apache, протестируете связь между PHP и базой данных и, при желании, включите HTTPS с помощью Let’s Encrypt.

Для производственных проектов начните с стабильного VPS на Linux, обладающего достаточной производительностью процессора, оперативной памяти и диска, чтобы обеспечить отзывчивость веб-сервера и базы данных под нагрузкой.

Подготовка

  • VPS под управлением Ubuntu 20.04/22.04/24.04 или Debian 11/12.
  • Пользователь с правами sudo и доступом по SSH.
  • Доменное имя (необязательно, но рекомендуется для HTTPS) и открытые порты 80/443 в брандмауэре/панели управления провайдера.

Совет: сначала выполните начальное обновление. Это снижает вероятность проблем при установке и устанавливает патчи безопасности.

sudo apt update && sudo apt -y upgrade

Apache: установка, запуск и проверка

sudo apt install -y apache2
sudo systemctl enable --now apache2

# Quick checks
sudo systemctl status apache2 --no-pager
curl -I http://127.0.0.1
Apache installation and verification on Linux VPS

Вы должны увидеть HTTP/1.1 200 OK. Корневой каталог веб-сайта по умолчанию обычно находится по адресу /var/www/html/.

Брандмауэр UFW для HTTP/HTTPS и состояние службы

Если вы используете UFW (Ubuntu/Debian), примените политику «default-deny» и разрешите только необходимые порты. Всегда сначала разрешайте SSH, чтобы не заблокировать себе доступ.

sudo apt install -y ufw

# Safe defaults
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Allow SSH first
sudo ufw allow OpenSSH

# Allow Apache ports
sudo ufw allow 'Apache Full'

# Enable and verify
sudo ufw enable
sudo ufw status verbose
UFW rules for HTTP and HTTPS on Linux VPS

Если вы не используете UFW, убедитесь, что порты 80/443 разрешены в облачном брандмауэре/группе безопасности вашего провайдера.

Сервер MySQL: установка и базовая безопасность

В Debian/Ubuntu mysql-server MySQL уже установлен (часто с безопасной аутентификацией по умолчанию). Если вы предпочитаете MariaDB, вы можете установить mariadb-server ее вместо MySQL.

sudo apt install -y mysql-server
sudo systemctl enable --now mysql

# Security hardening wizard
sudo mysql_secure_installation

Рекомендуемые ответы в mysql_secure_installation:

  • Включить проверку надежности паролей: Да (если предлагается).
  • Удалить анонимных пользователей: Да.
  • Отключить удаленный вход пользователя root: Да.
  • Удалить тестовую базу данных: Да.
  • Перезапустить привилегии: Да.
mysql_secure_installation on Linux VPS

Создание базы данных и пользователя для приложения

Создайте выделенную базу данных и выделенного пользователя, имеющего только необходимые привилегии. Избегайте использования учетной записи root MySQL в приложениях.

sudo mysql

В консоли MySQL:

CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD_HERE';

GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';

FLUSH PRIVILEGES;

EXIT;
Creating MySQL database and user on Linux VPS

Примечание по безопасности: используйте отдельного пользователя для удаленного доступа к базе данных, например 'appuser'@'%' только в случае крайней необходимости, а затем ограничьте его доступ с помощью правил брандмауэра и настроек привязки MySQL. В большинстве случаев держите MySQL в частном и локальном режиме.

PHP: установка модулей и тестовая страница

Установите PHP и общие модули, используемые CMS и фреймворками. Позже вы сможете добавить другие в зависимости от вашего приложения.

sudo apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-xml php-mbstring php-zip php-gd php-intl

Создайте временный phpinfo() файл, чтобы проверить, работает ли PHP через Apache:

echo "" | sudo tee /var/www/html/info.php

Откройте http:///info.php в браузере и убедитесь, что страница загрузилась. Затем удалите файл (его сохранение представляет угрозу безопасности):

sudo rm -f /var/www/html/info.php
PHP module installation and phpinfo test on Linux VPS

Рабочий каталог и виртуальный хост Apache

Для производственной среды лучше всего создать отдельный каталог для каждого домена и настроить отдельный виртуальный хост.

# Replace example.com with your domain
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com

# Simple test page
echo "" > /var/www/example.com/public_html/index.php

Создайте файл конфигурации /etc/apache2/sites-available/example.com.conf:

sudo nano /etc/apache2/sites-available/example.com.conf

Пример виртуального хоста:


    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com/public_html

    
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
Apache virtual host configuration for LAMP on Linux VPS

Примечание: AllowOverride All требуется только в том случае, если вы используете .htaccess (перенаправления, правила кэширования и т. д.). Если вам это не нужно, установите AllowOverride None для лучшей производительности и безопасности.

Активируйте сайт, включите mod_rewrite и перезапустите

sudo a2ensite example.com.conf
sudo a2enmod rewrite headers

# Optional: disable default site to avoid conflicts
# sudo a2dissite 000-default.conf

sudo apache2ctl configtest
sudo systemctl reload apache2
Enable Apache site and reload configuration on Linux VPS

Теперь откройте свой домен (или IP-адрес сервера) и убедитесь, что загружается страница «Hello from LAMP!».

Проверка соединения PHP ↔ MySQL (PDO)

Создайте /var/www/example.com/public_html/dbtest.php (используйте имя базы данных/имя пользователя/пароль):

 PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    echo "1";
} catch (Throwable $e) {
    http_response_code(500);
    echo "DB connection failed";
}

Откройте http://example.com/dbtest.php → вы должны увидеть 1. Затем удалите файл (он нужен только для тестирования):

rm -f /var/www/example.com/public_html/dbtest.php
PDO test for PHP and MySQL connection on Linux VPS

HTTPS за 2 минуты (бонус)

Если ваш домен указывает на сервер и порт 80 доступен, установите бесплатный сертификат с помощью Certbot. Он также настроит перенаправления и автоматическое обновление.

sudo apt update
sudo apt install -y certbot python3-certbot-apache

sudo certbot --apache -d example.com -d www.example.com --redirect 
  --agree-tos -m admin@example.com --no-eff-email

# Test renewal
sudo certbot renew --dry-run

Настройка PHP для производственной среды (кратко)

Отредактируйте конфигурацию PHP в Apache (путь зависит от версии): /etc/php/*/apache2/php.ini. Рекомендуемые настройки по умолчанию:

  • expose_php = Off
  • memory_limit = 256M (настройте в соответствии с нагрузкой вашего приложения)
  • upload_max_filesize и post_max_size в соответствии с вашей CMS
  • date.timezone = UTC (или вашему местному часовому поясу)
sudo systemctl reload apache2

Эквиваленты для AlmaLinux/Rocky/CentOS (RHEL)

В системах на базе RHEL httpd, в качестве базы данных обычно используется MariaDB, а брандмауэр, как правило, firewalld.

sudo dnf -y update
sudo dnf install -y httpd mariadb-server php php-mysqlnd php-cli php-gd php-mbstring php-xml php-opcache

sudo systemctl enable --now httpd mariadb

# Open firewall
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# Check Apache
curl -I http://127.0.0.1

Настройки виртуального хоста обычно находятся в /etc/httpd/conf.d/ (например, /etc/httpd/conf.d/example.com.conf), затем перезапустите httpd.

Контрольный список запуска LAMP

  • Apache запущен, порты 80/443 открыты, а правила перенаправления работают, если это необходимо.
  • MySQL защищен, а appdb и appuser созданы.
  • PHP установлен с необходимыми модулями; тестовые файлы (info.php, dbtest.php) удалены.
  • Виртуальный хост включен и указывает на правильный DocumentRoot.
  • HTTPS включен (если домен существует), и выполнена проверка автопродления.

Разверните LAMP на готовом к производственному использованию VPS на базе Linux

Нужна стабильная платформа для Apache, MySQL и PHP? Начните с надежного VPS на базе Linux и разверните чистый стек LAMP менее чем за час, следуя приведенным выше инструкциям.

Prev
Menu