Гид по технологиям

Установка LEMP на openSUSE Leap 42.1 — Nginx, MariaDB, PHP-FPM и phpMyAdmin

• 7 min read • Серверы • Обновлено 27 Nov 2025
LEMP на openSUSE Leap 42.1 — установка и защита
LEMP на openSUSE Leap 42.1 — установка и защита

О чём эта инструкция

Этот пошаговый материал показывает, как собрать стек LEMP (Linux, Engine‑X/Nginx, MariaDB, PHP‑FPM) на openSUSE Leap 42.1, открыть нужные порты в SuSEfirewall2, добавить виртуальные хосты в Nginx и защитить phpMyAdmin с помощью HTTP‑аутентификации. Подойдёт для администраторов и разработчиков, которые хотят быстро запустить PHP‑приложения под Nginx.

Important: перед изменениями делайте резервные копии конфигураций и данных.

Ключевые варианты использования и целевая аудитория

  • Быстрое развертывание PHP‑сайтов под Nginx на openSUSE.
  • Настройка локальной тестовой или небольшой прод‑среды.
  • Безопасная работа с phpMyAdmin через базовую HTTP‑аутентификацию.

Требования

  • openSUSE Leap 42.1;
  • root‑доступ;
  • базовое понимание zypper и systemctl.

Основные понятия в одну строчку

  • LEMP: стек для размещения PHP‑приложений на Nginx;
  • SuSEfirewall2: генератор правил iptables для openSUSE;
  • PHP‑FPM: менеджер процессов PHP, работающий через FastCGI;
  • phpMyAdmin: веб‑интерфейс для управления MariaDB/MySQL.

Шаг 1 — Установка и настройка SuSEfirewall2

SuSEfirewall2 генерирует правила iptables на основе файла /etc/sysconfig/SuSEfirewall2. Откроем только необходимые порты для SSH и веба.

Установка:

zypper in SuSEfirewall2

Откройте /etc/sysconfig/SuSEfirewall2 в редакторе и добавьте внешние TCP‑сервисы (пример на строке 253):

FW_SERVICES_EXT_TCP="22 80 443"

Перезапустите firewall и sshd, затем проверьте доступность порта 22, например telnet.

/sbin/rcSuSEfirewall2 restart
systemctl restart sshd

Проверка соединения по SSH (замените IP на адрес вашего сервера):

telnet 192.168.1.101 22

Notes: если telnet недоступен на системе, используйте nc или попытку SSH из другого хоста.


Шаг 2 — Установка и базовая проверка Nginx

Nginx — быстрый HTTP‑сервер с малым потреблением памяти. Установим и включим автозапуск:

zypper in nginx
systemctl start nginx
systemctl enable nginx

Если при обращении через браузер вы видите 403 Forbidden, это означает, что нет индексного файла в корне документа. Создайте индекс:

cd /srv/www/htdocs/
echo "

This is Nginx OpenSUSE Leap 42.1

" > index.html

Откройте http://192.168.1.101/ и убедитесь, что страница отображается.


Шаг 3 — Установка и настройка MariaDB

MariaDB — форк MySQL под лицензией GPL. Установим сервер и клиент, включим автозапуск и зададим пароль для root.

zypper in mariadb mariadb-client
systemctl start mysql
systemctl enable mysql

Задать пароль root можно через mysqladmin или mysql_secure_installation. Пример с mysqladmin (замените пароль на безопасный):

/usr/bin/mysqladmin -u root password 'aqwe123'

Вход в mysql‑оболочку:

mysql -u root -p
# При появлении приглашения введите пароль 'aqwe123'

Тест входа в MySQL

Примечание: используйте сложные пароли и, при возможности, управляйте доступом по socket или ограничивайте доступ по сети.


Шаг 4 — Установка и настройка PHP‑FPM

PHP‑FPM обслуживает PHP‑запросы через unix‑сокет. Установим PHP и нужные расширения для phpMyAdmin.

zypper in php5 php5-mysql php5-fpm php5-gd php5-mbstring

Скопируйте конфигурацию php‑fpm и отредактируйте её:

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf

Включите лог php‑fpm (пример строки):

error_log = log/php-fpm.log

Установите пользователя и группу процесса на nginx:

user = nginx
group = nginx

Настройте прослушивание через unix‑сокет:

listen = /var/run/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

В php.ini для безопасности установите:

cgi.fix_pathinfo=0

Скопируйте php.ini в conf.d:

cp /etc/php5/cli/php.ini /etc/php5/conf.d/

Интеграция PHP‑FPM и Nginx

Сделаем резервную копию nginx.conf и добавим обработку .php файлов:

cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf

Добавьте index.php в директиву index:

index index.php index.html index.htm;

Добавьте блок для обработки php:

    location ~ \.php$ {
        root /srv/www/htdocs;
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

Проверьте конфигурацию и запустите службы:

nginx -t
systemctl start php-fpm
systemctl restart nginx

Добавьте тестовый файл info.php:

cd /srv/www/htdocs/
echo "" > info.php

Откройте http://192.168.1.101/info.php — должна отобразиться страница phpinfo.

PHP работает


Шаг 5 — Настройка виртуального хоста в Nginx

Создадим виртуальный хост для www.example.com с корнем /srv/www/example. Замените example.com на свой домен.

cd /etc/nginx/
mkdir vhosts.d/
cd vhosts.d/
vim example.conf

Вставьте конфигурацию:

server {
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

server {
    listen 80;

    root /srv/www/example;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Создайте директорию сайта и тестовые страницы:

mkdir -p /srv/www/example/
cd /srv/www/example/
echo "

This is www.example.com site.

" > index.html echo "" > info.php

Откройте example.com — вы будете перенаправлены на www.example.com, затем проверьте /info.php.

PHP Info


Шаг 6 — Установка и защита phpMyAdmin

Установим phpMyAdmin и ограничим доступ к его каталогу с помощью HTTP‑аутентификации.

zypper in phpMyAdmin

Создайте htpasswd‑файл (apache2-utils предоставит htpasswd):

htpasswd -c /etc/nginx/htpasswd megumi
# Введите пароль для пользователя megumi

Добавьте в nginx.conf настройки для каталога /phpMyAdmin:

В секции server убедитесь, что указан root:

server_name localhost;
root /srv/www/htdocs;

Добавьте блок phpMyAdmin:

    location ~ ^/phpMyAdmin/.*\.php$ {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/htpasswd;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

Перезагрузите nginx:

nginx -t
systemctl restart nginx

Откройте http://192.168.1.101/phpMyAdmin/ — система запросит HTTP‑аутентификацию, затем логин в phpMyAdmin.

HTTP‑аутентификация для phpMyAdmin

phpMyAdmin в Nginx

phpMyAdmin установлен и защищён базовой HTTP‑авторизацией.


Практические советы по безопасности и производительности

  • Обновляйте пакеты и мониторьте CVE для PHP, Nginx и MariaDB.
  • Отключите ненужные расширения PHP и используйте минимально необходимый набор модулей.
  • Перенесите phpMyAdmin в нестандартный URL или ограничьте доступ по IP‑адресам дополнительно к htpasswd.
  • Включите gzip и кэширование статических файлов в Nginx.
  • Настройте медиа‑и статические ресурсы на отдельном домене или CDN.
  • Используйте TLS (Let’s Encrypt) и настраивайте HSTS, OZP и современные шифры.

Security hardening — краткий чек‑лист:

  • Ограничьте вход в MariaDB по сети;
  • Отключите удалённый root для MariaDB;
  • Регулярно выполняйте mysql_secure_installation;
  • Примените fail2ban для защиты SSH и панели администратора;
  • Настройте SELinux/AppArmor, если доступно.

Шаблоны и готовые сниппеты

Пример минимального server блока для vhosts.d/example.conf (копируем сюда для удобства):

server {
    listen 80;
    server_name www.example.com example.com;
    root /srv/www/example;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Пример команды для создания безопасного пароля для MariaDB (локально):

# Используйте генератор паролей в оболочке, например openssl
openssl rand -base64 18

Когда это решение не подходит

  • Для очень высоких нагрузок и сложных кластерных сценариев может понадобиться тонкая настройка Nginx, кэш‑слои (Redis/Memcached), балансировщики и многомашинная архитектура.
  • Если вам нужен встроенный веб‑сервер с минимальной конфигурацией для PHP‑скриптов (например, для тестирования), проще использовать встроенный php -S.
  • Для приложений на новых версиях PHP и современных фреймворков проверьте совместимость пакетов в репозиториях openSUSE Leap 42.1.

Альтернативные подходы

  • Apache + mod_php вместо Nginx + PHP‑FPM: проще для миграции старых проектов, но обычно более ресурсоёмок.
  • Контейнеризация (Docker): упрощает переносимость и изоляцию окружения.
  • Управляемые облачные базы и PaaS: снимают задачу администрирования ОС и сервера приложений.

Критерии приёмки

  • Nginx обслуживает статические файлы и корректно отрабатывает index.html;
  • PHP‑страница /info.php отображает информацию phpinfo();
  • MariaDB доступна локально, root защищён паролем;
  • phpMyAdmin доступен через защищённый HTTP‑логин и далее требует учётные данные MariaDB;
  • Внешние порты 80, 443 и 22 открыты в SuSEfirewall2.

План отката

  1. Восстановить конфигурации из резервных копий: nginx.conf.backup и другие файлы;
  2. Остановить и отключить службы, если тесты провалены: systemctl stop nginx php-fpm mysql;
  3. Если были изменения в базе данных, восстановить дамп из резервной копии;
  4. Проверить журнал ошибок и вернуть систему в предыдущее стабильное состояние.

Тестовые случаи и приёмка

  • Тест 1: Открыть http://SERVER_IP/ — должна показываться index.html.
  • Тест 2: Открыть http://SERVER_IP/info.php — должна показываться страница phpinfo().
  • Тест 3: Попытка доступа к /phpMyAdmin/ должна сначала запрашивать HTTP‑аутентификацию.
  • Тест 4: Подключение к MariaDB под root с новым паролем — вход успешен.
  • Критерии приёмки см. выше.

Роли и чек‑листы

Системный администратор:

  • Сделать резервные копии конфигураций;
  • Установить и настроить SuSEfirewall2;
  • Настроить автозапуск сервисов.

DevOps/разработчик:

  • Настроить vhost и деплой приложения;
  • Проверить работу phpinfo и зависимости PHP;
  • Настроить CI/CD для автоматических деплоев.

Служба безопасности:

  • Провести аудит прав доступа;
  • Настроить SSL/TLS и правила брандмауэра;
  • Проверить логи на предмет подозрительной активности.

Совместимость и миграция

  • Эта инструкция ориентирована на openSUSE Leap 42.1 и пакеты php5. Для современных версий openSUSE используйте пакеты php7/8 и соответствующие пути конфигурации (/etc/php7/fpm и т.п.).
  • При миграции с другой системы проверьте версии MariaDB/MySQL, экспортируйте дамп и импортируйте в целевой сервер.

Короткая методология развёртывания

  1. Обновить систему и установить базовые пакеты;
  2. Настроить firewall (SuSEfirewall2);
  3. Установить Nginx и проверить статические страницы;
  4. Установить MariaDB и задать пароль root;
  5. Установить PHP‑FPM, интегрировать с Nginx через unix‑сокет;
  6. Настроить виртуальные хосты и phpMyAdmin;
  7. Провести тестирование и внедрить меры по безопасности.

1‑строчный глоссарий

  • nginx: HTTP‑сервер; php-fpm: PHP FastCGI менеджер; MariaDB: реляционная СУБД; SuSEfirewall2: конфигуратор iptables.

Ссылки и источники для дальнейшего чтения


Итоги

Данная инструкция даёт пошаговый план развертывания LEMP‑стека на openSUSE Leap 42.1: установка и базовая настройка SuSEfirewall2, Nginx, MariaDB, PHP‑FPM и phpMyAdmin. После выполнения вы получите работающий сервер для PHP‑приложений, защищённый базовой HTTP‑аутентификацией для phpMyAdmin и готовый для дальнейшей доработки.

Summary:

  • Установлены Nginx, MariaDB, PHP‑FPM и phpMyAdmin;
  • Настроен firewall и виртуальные хосты;
  • Добавлены рекомендации по безопасности и план отката.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро