Termux — удобная среда разработки для мобильных устройств, позволяющая поднимать локальные сервисы и тестировать веб‑приложения прямо на смартфоне или планшете. В этой статье рассмотрим настройку LAMP/LEMP‑стека в Termux: веб‑сервер (Apache или Nginx), СУБД (MariaDB как практичный вариант) и PHP. Наша цель — создать «локальную» среду для разработки и тестирования без привязки к удалённым хостингам.
Важно: настройка предназначена для работы в вашей локальной сети/на вашем устройстве и не используется для обхода ограничений доступа или иных противоправных целей.
Что именно будем собирать
Возможны два подхода:
- LAMP: Apache + MariaDB + PHP
- LEMP: Nginx + MariaDB + PHP
На практике проще всего выбрать один вариант и довести до стабильной работы. Ниже приведены оба сценария.
Подготовка Termux
Обновим пакеты и подготовим базовые компоненты.
pkg update -y
pkg upgrade -y
pkg install -y proot-distro wget curl nano tar
Далее установим зависимости для веб‑стека: веб‑сервер, PHP и СУБД. В Termux набор пакетов может отличаться в зависимости от версии репозиториев, поэтому команды ниже — ориентир. Обычно названия пакетов совпадают или близки.
Установка MariaDB (СУБД)
Ставим MariaDB и утилиты. Затем инициализируем базу данных и запускаем сервер.
pkg install -y mariadb
Инициализация и запуск выполняются через команды MySQL/MariaDB. Чаще всего удобно задать каталог данных и выполнить инициализацию перед первым запуском.
mkdir -p $HOME/.local/var/lib/mysql
mkdir -p $HOME/.local/var/run
mysqld_safe --datadir=$HOME/.local/var/lib/mysql --socket=$HOME/.local/var/run/mysqld.sock &
Дождитесь, пока сервис поднимется. Далее выполним базовую настройку (создание root‑пароля и проверка подключения).
mysql -u root --socket=$HOME/.local/var/run/mysqld.sock
Если у вас впервые запускается сервер и пароль не настроен, выполните установку. Уточнения по синтаксису зависят от состояния инициализации. Базовый сценарий обычно включает:
-- В интерактивной mysql-панели:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ВашНовыйПароль';
FLUSH PRIVILEGES;
EXIT;
На этом этапе важно сохранить пароль в менеджере заметок/паролей, так как он понадобится для подключения приложения.
Установка PHP
Устанавливаем PHP и часто требуемые расширения. Для веб‑разработки обычно нужны mysqli или pdo_mysql, а также стандартные расширения для типичных фреймворков.
pkg install -y php php-fpm php-mysqli php-pdo php-pdo_mysql
В зависимости от конфигурации пакетов могут быть доступны другие имена расширений. Если вы используете конкретный фреймворк, уточните требуемые расширения и добавьте их.
Вариант 1: LAMP (Apache + MariaDB + PHP)
Установка Apache
pkg install -y apache2
Далее подготовим документ‑руты и включим PHP через конфигурации Apache. Конкретные пути могут отличаться, но чаще всего в Termux используется локальная структура в $HOME и стандартные каталоги из пакетов.
Попробуем создать структуру под проект.
mkdir -p $HOME/www/example/public
Создадим тестовую страницу.
cat > $HOME/www/example/public/index.php << 'PHP'
<?php
phpinfo();
PHP
Теперь нужно указать Apache на этот каталог как на webroot. Для этого отредактируйте конфигурацию Apache. Найдите подходящий файл в конфиге Apache (например, в подкаталогах и конфигах включения) и установите DocumentRoot и Directory.
Пример общего подхода (вы можете адаптировать под вашу конфигурацию):
nano $HOME/.config/apache2/httpd.conf
Если конфигурация находится в другом месте, используйте поиск по файлам.
find $PREFIX -maxdepth 4 -type f -name 'httpd.conf' 2>/dev/null
Ориентируясь на найденные файлы, задайте:
DocumentRoot "$HOME/www/example/public"
<Directory "$HOME/www/example/public">
AllowOverride All
Require all granted
</Directory>
Затем убедитесь, что обработка PHP включена. Чаще всего это зависит от модуля PHP или конфигурации под mod_php или proxy_fcgi. В Termux иногда удобнее подключать PHP через PHP-FPM. Если в вашем пакете PHP встроен как mod_php, тогда достаточно включить соответствующий модуль.
После правок запустите Apache.
apache2ctl -k start
Если команда отличается, используйте сервисные скрипты пакета или повторно проверяйте логи.
Тестирование Apache + PHP
Откройте локальный адрес. В Termux сервер обычно слушает на localhost или на определённом интерфейсе. Узнайте порт, указанный в конфигурации (часто это 80 или кастомный). Например, проверьте что порт занят:
pkg install -y lsof
lsof -i -P | grep apache
Далее проверьте страницу в браузере по адресу вида http://localhost:PORT или http://127.0.0.1:PORT. Если доступа нет, уточните bind‑адрес в конфиге Apache.
Вариант 2: LEMP (Nginx + MariaDB + PHP)
Установка Nginx
pkg install -y nginx
Подготовим проект и тестовую страницу.
mkdir -p $HOME/www/example/public
cat > $HOME/www/example/public/index.php << 'PHP'
<?php
phpinfo();
PHP
Конфигурация Nginx под PHP
В LEMP чаще всего PHP обслуживается через PHP-FPM. Убедитесь, что PHP-FPM установлен и запускается.
php-fpm -v
Запустим PHP-FPM (при необходимости указав конфигурацию). Далее в конфиге Nginx настраиваем fastcgi.
Обычно конфигурация Nginx для server blocks находится в файле вроде nginx.conf и/или в sites-enabled. Используйте поиск:
find $PREFIX/etc -type f -maxdepth 4 | grep -E 'nginx.conf|sites|conf.d' 2>/dev/null
Отредактируйте конфиг сервера. Примерная логика: root на $HOME/www/example/public, index index.php, location / отдает статику, location ~ .php$ проксирует на fastcgi (PHP-FPM).
nano $PREFIX/etc/nginx/nginx.conf
Внутри server block задайте примерно следующее (параметры сокета/адреса PHP-FPM могут отличаться):
root $HOME/www/example/public;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
Если PHP-FPM слушает сокет, а не TCP‑порт, тогда замените fastcgi_pass на сокет. Узнать это можно по конфигурации PHP-FPM.
find $PREFIX/etc -type f | grep -i 'php-fpm' 2>/dev/null
Запустите PHP-FPM и Nginx:
php-fpm &
nginx -g 'daemon off;'
Для удобства лучше сначала запустить PHP-FPM, убедиться что он слушает нужный порт/сокет, затем поднять Nginx.
Тестирование LEMP
Откройте http://localhost с портом Nginx (часто 80, но в Termux может быть другой). Проверьте логи при ошибках.
tail -n 100 $PREFIX/var/log/nginx/error.log 2>/dev/null
tail -n 100 $PREFIX/var/log/nginx/access.log 2>/dev/null
Также полезно проверить переменные окружения и права на каталог проекта.
Создание и подготовка базы данных для проекта
После того как MariaDB работает, создайте базу и пользователя под конкретное приложение. Пример (в терминале mysql):
mysql -u root --socket=$HOME/.local/var/run/mysqld.sock
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'СильныйПароль';
GRANT ALL PRIVILEGES ON appdb. TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
В конфигурации вашего приложения укажите параметры подключения: host 127.0.0.1 (или localhost), порт MariaDB (если стандартный — обычно 3306), имя базы appdb, пользователь appuser, пароль.
Привязка веб‑проекта и удобный доступ
Рекомендуется держать проекты в фиксированной папке, например $HOME/www. Пример структуры:
$HOME/www/
example/
public/
src/
vendor/
api/
public/
В зависимости от фреймворка (Laravel, Symfony, Yii, собственная сборка) подстроите документ‑руты (часто это public/).
Если вам нужен доступ с другого устройства в вашей локальной сети, можно организовать «локальную сеть» с использованием VPN‑режима или локального прокси. Но используйте это только для удобного доступа в пределах вашей сети и в рамках разрешённой эксплуатации.
Базовая диагностика проблем
Ниже — типовые точки отказа и быстрые действия:
- Apache/Nginx не стартует: проверьте занятый порт и ошибки в конфиге.
- PHP не выполняется: проверьте, что обработчик PHP подключён (mod_php или fastcgi), и что
index.phpреально существует в DocumentRoot. - Ошибка соединения с БД: проверьте сокет/порт MariaDB, имя пользователя, пароль, и что пользователь имеет права на нужную БД.
- 403/404: проверьте права на каталог и правила
Directory(Apache) илиroot/try_files(Nginx).
Для просмотра логов используйте:
tail -n 100 $PREFIX/var/log/nginx/error.log 2>/dev/null
tail -n 200 $PREFIX/var/log/apache2/error_log 2>/dev/null
# MariaDB
tail -n 200 $HOME/.local/var/lib/mysql/.err 2>/dev/null
Рекомендации по безопасности и удобству
- Храните пароли БД отдельно и не коммитьте их в репозитории.
- Для разработки используйте локальный доступ; не публикуйте стек в «публичный интернет» с устройства.
- Следите за версиями PHP и расширений под ваш проект.
- При работе с несколькими проектами — используйте разные виртуальные хосты/порты, чтобы не путаться.
Заключение
Мы разобрали, как собрать LAMP и LEMP‑стек в Termux: установить MariaDB и PHP, затем поднять веб‑сервер (Apache или Nginx), настроить обработку PHP и подготовить базу данных под приложение. Такая локальная среда помогает быстро тестировать страницы и функционал, а также ускоряет разработку без лишней инфраструктуры.
Если хотите, чтобы настройка была стабильной под ваш сценарий (конкретный фреймворк, порты, fastcgi‑настройка, виртуальные хосты, интеграция с окружением), обратитесь в РыбинскЛАБ — мы поможем настроить Termux‑стек под ваши задачи.