*КУБ — полный комплекс облачных услуг!

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

Linux VPS
Как установить и настроить LAMP на Linux VPS

Подготовка

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

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

sudo apt update && sudo apt -y upgrade
sudo apt -y install apache2
sudo systemctl enable --now apache2
curl -I http://127.0.0.1
Apache

Ожидаем HTTP/1.1-заголовки 200 OK. Страница по умолчанию находится в /var/www/html/.

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

sudo systemctl status apache2 --no-pager
sudo ufw allow 'Apache Full'   # открывает 80 и 443
sudo ufw enable
sudo ufw status
Брандмауер UFW

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

MySQL Server: установка и базовая защита

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

Настроим безопасность:

  • Включить проверку надежности паролей (Yes).
  • Удалить анонимных пользователей (Yes).
  • Запретить удаленный вход root (Yes).
  • Удалить тестовую базу данных (Yes).
  • Перезагрузить привилегии (Yes).
MySQL Server

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

sudo mysql -u root -p

В консоли MySQL:

CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'S3cureP@ss!';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Створюємо базу

Для удалённого доступа указывай хост: «appuser»@’%’ и настраивай bind-address/брандмауэр изолированно.

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

sudo apt -y install php libapache2-mod-php php-mysql php-cli php-curl php-xml php-zip
php -v
echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php

Открой в браузере http:///info.php — увидишь страницу phpinfo() (затем удали её).

PHP

Продакшн-директория и виртуальный хост Apache

Создадим структуру сайта и файл конфигурации:

sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com
sudo nano /var/www/example.com/public_html/index.php

index.php (проверка PHP):
<?php echo "Hello from LAMP!"; ?>

Создай конфиг /etc/apache2/sites-available/example.com.conf:


  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/example.com/public_html

  
    AllowOverride All
    Require all granted
  

  ErrorLog ${APACHE_LOG_DIR}/example_error.log
  CustomLog ${APACHE_LOG_DIR}/example_access.log combined
Продакшн-директорія

AllowOverride All нужен, если используешь .htaccess (перенаправления, кэширование и т. д.).

Активируем сайт, mod_rewrite и перезагружаем конфигурацию

sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf
sudo a2enmod rewrite
sudo apache2ctl configtest   # Syntax OK
sudo systemctl reload apache2
Активуємо сайт

Проверь сайт по домену или IP: должна открыться страница Hello from LAMP!.

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

Создай файл /var/www/example.com/public_html/dbtest.php:

<?php
try {
  $pdo = new PDO('mysql:host=localhost;dbname=appdb;charset=utf8mb4','appuser','S3cureP@ss!', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  ]);
  echo $pdo->query('SELECT 1')->fetchColumn();
} catch (Throwable $e) { echo $e->getMessage(); }

Откройте http://example.com/dbtest.php → вы увидите 1.

Перевірка зв’язку PHP

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

Если домен указывает на сервер — устанавливаем бесплатный сертификат:

sudo apt -y install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com

Certbot автоматически включит HTTPS и автообновление.

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

Отредактируй /etc/php/*/apache2/php.ini:

  • expose_php = Off
  • memory_limit = 256M (в зависимости от нагрузки)
  • upload_max_filesize и post_max_size под вашу CMS
  • date.timezone = Europe/Kyiv
  • Перезапустите Apache: sudo systemctl reload apache2.

Аналоги для AlmaLinux/Rocky/CentOS (RHEL)

sudo dnf -y install httpd mariadb-server php php-mysqlnd php-cli php-xml php-zip php-curl
sudo systemctl enable --now httpd mariadb
sudo mysql_secure_installation
# далее — те же шаги: создать БД/пользователя, vhost в /etc/httpd/conf.d/site.conf,
# включить firewalld: sudo firewall-cmd --add-service=http --add-service=https --permanent && sudo firewall-cmd --reload

Чек-лист запуска LAMP

  • Apache работает, порты 80/443 открыты, mod_rewrite включен.
  • MySQL защищён, созданы appdb и пользователь appuser.
  • PHP установлен с необходимыми модулями, файл info.php удалён.
  • Виртуальный хост активирован, AllowOverride All настроен.
  • dbtest.php возвращает 1 (PDO работает).
  • HTTPS включен (если есть домен), cron/auto-renew активен.
Menu