Установка LEMP на openSUSE Leap 42.1 — Nginx, MariaDB, PHP-FPM и phpMyAdmin
О чём эта инструкция
Этот пошаговый материал показывает, как собрать стек 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 22Notes: если 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'
Примечание: используйте сложные пароли и, при возможности, управляйте доступом по 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.

Шаг 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.

Шаг 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.


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.
План отката
- Восстановить конфигурации из резервных копий: nginx.conf.backup и другие файлы;
- Остановить и отключить службы, если тесты провалены: systemctl stop nginx php-fpm mysql;
- Если были изменения в базе данных, восстановить дамп из резервной копии;
- Проверить журнал ошибок и вернуть систему в предыдущее стабильное состояние.
Тестовые случаи и приёмка
- Тест 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, экспортируйте дамп и импортируйте в целевой сервер.
Короткая методология развёртывания
- Обновить систему и установить базовые пакеты;
- Настроить firewall (SuSEfirewall2);
- Установить Nginx и проверить статические страницы;
- Установить MariaDB и задать пароль root;
- Установить PHP‑FPM, интегрировать с Nginx через unix‑сокет;
- Настроить виртуальные хосты и phpMyAdmin;
- Провести тестирование и внедрить меры по безопасности.
1‑строчный глоссарий
- nginx: HTTP‑сервер; php-fpm: PHP FastCGI менеджер; MariaDB: реляционная СУБД; SuSEfirewall2: конфигуратор iptables.
Ссылки и источники для дальнейшего чтения
- Официальная документация Nginx: http://nginx.org/en/docs/
- Пример базовой HTTP‑аутентификации с Nginx: https://www.howtoforge.com/basic-http-authentication-with-nginx
Итоги
Данная инструкция даёт пошаговый план развертывания LEMP‑стека на openSUSE Leap 42.1: установка и базовая настройка SuSEfirewall2, Nginx, MariaDB, PHP‑FPM и phpMyAdmin. После выполнения вы получите работающий сервер для PHP‑приложений, защищённый базовой HTTP‑аутентификацией для phpMyAdmin и готовый для дальнейшей доработки.
Summary:
- Установлены Nginx, MariaDB, PHP‑FPM и phpMyAdmin;
- Настроен firewall и виртуальные хосты;
- Добавлены рекомендации по безопасности и план отката.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента