Termux — удобная среда для разработки на Android, но «полный LAMP‑стек» (Apache + MySQL + PHP) требует внимательного отношения к ресурсам: мобильные процессоры и лимиты памяти заметно влияют на скорость и стабильность сервисов.
В этой статье мы поднимем локальную среду разработки: установим Apache, MySQL и PHP, подготовим структуру проектов и сделаем базовую оптимизацию под мобильные устройства. Итог — возможность запускать локальные веб‑проекты, тестировать PHP и работать с БД без выхода в интернет.
Требования и подготовка Termux
- Android‑устройство с Termux (желательно актуальная версия приложения).
- Свободное место на диске (MySQL и дампы БД могут занимать заметный объём).
- Достаточно RAM для запуска MySQL; если устройство маломощное, ниже будут подсказки по оптимизации.
Начнем с обновления пакетов.
pkg update -y
pkg upgrade -y
Установка базовых зависимостей
Установим нужные компоненты для сборки и работы серверных пакетов.
pkg install -y wget curl nano openssl ca-certificates coreutils
pkg install -y apache2 php php-mysqlnd php-cgi php-json php-openssl php-mbstring php-xml
pkg install -y mariadb mariadb-client
Примечание: в Termux для MySQL часто доступен совместимый пакет MariaDB. Для большинства учебных и локальных задач это эквивалентная по назначению БД.
Настройка путей и конфигураций Apache
В Termux Apache обычно запускается с конфигурациями из системных директорий приложения. Для локального проекта удобно привести документ‑роут к понятной директории внутри вашего домашнего каталога.
Создадим папку проекта и тестовую страницу.
mkdir -p ~/www
mkdir -p ~/www/test
echo '<?php phpinfo(); ?>' > ~/www/test/index.php
Дальше создадим/отредактируем конфигурацию Apache. В зависимости от версии пакета файлы могут немного отличаться, но общий подход такой: задаём DocumentRoot и включаем нужные модули/обработчики PHP.
Откройте конфиг Apache в редакторе:
nano $PREFIX/etc/apache2/httpd.conf
Внутри найдите строку с DocumentRoot и замените её на путь к вашему проекту (или настройте на директорию ~/www). Пример логики:
DocumentRoot "$HOME/www"
Если в конфиге используются переменные окружения, проверьте, что Apache корректно воспринимает путь. Для надёжности можно указать абсолютный путь, например:
DocumentRoot "/data/data/com.termux/files/home/www"
Также убедитесь, что блок для каталога разрешает переопределения и индексы:
<Directory "$HOME/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Сохраните изменения.
Настройка PHP для Apache
В Termux PHP обычно настраивается через модуль или через обработчик. Самый простой подход — использовать конфигурации, которые идут вместе с пакетом PHP.
Проверьте, что подключены необходимые файлы конфигурации и/или обработчики. В зависимости от структуры проекта можно использовать php-cgi или модуль. Для начала попробуйте проверить доступность PHP через CLI:
php -v
Далее проверьте, что Apache может отдавать index.php из вашего DocumentRoot.
Мы сделаем тестовый запуск и посмотрим на результат в консоли.
Инициализация и запуск MySQL (MariaDB)
Теперь подготовим БД. Если MariaDB уже инициализирована, шаг можно пропустить.
Инициализация обычно делается через скрипт в пакетах MariaDB. Выполните:
mkdir -p $PREFIX/var/lib/mysql
mysql_install_db --user=$USER --datadir=$PREFIX/var/lib/mysql
Запуск сервера (как правило, через mysqld_safe или встроенный скрипт). Попробуйте:
mysqld_safe --datadir=$PREFIX/var/lib/mysql > /tmp/mysqld.log 2>&1 &
Проверьте, что сервер отвечает:
mariadb -u root -e "SELECT VERSION();"
Если вход не настроен, возможно, потребуется первичная настройка пароля и учетных записей.
Базовая настройка безопасности для локальной разработки
Для локальных сред важно хотя бы минимально закрепить доступ к БД. В учебных целях можно ограничиться локальными подключениями. Для этого проверьте bind‑адрес (если в конфиге доступно).
Откройте конфиг MariaDB (путь может отличаться в зависимости от сборки пакета):
nano $PREFIX/etc/mysql/my.cnf
Найдите раздел с [mysqld] и установите:
bind-address = 127.0.0.1
Это ограничит доступ к БД только с этого устройства (локально). Затем перезапустите MariaDB.
pkill -f mysqld_safe || true
mysqld_safe --datadir=$PREFIX/var/lib/mysql > /tmp/mysqld.log 2>&1 &
Проверьте снова подключение:
mariadb -u root -e "SELECT 1;"
Оптимизация под мобильные процессоры и ограниченную память
Мобильные устройства часто имеют ограничения по CPU и RAM. MySQL (MariaDB) и Apache можно «приземлить» до разумных параметров.
В первую очередь попробуйте ограничить объём буферов и выключить ненужные «тяжёлые» функции в конфиге MySQL. В my.cnf найдите [mysqld] и добавьте/скорректируйте параметры (значения подберите по возможностям устройства):
nano $PREFIX/etc/mysql/my.cnf
Пример оптимизаций для небольших/средних устройств:
[mysqld]
max_connections = 25
thread_cache_size = 8
key_buffer_size = 32M
query_cache_size = 0
tmp_table_size = 32M
max_heap_table_size = 32M
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
После изменения параметров перезапустите MariaDB.
pkill -f mysqld_safe || true
mysqld_safe --datadir=$PREFIX/var/lib/mysql > /tmp/mysqld.log 2>&1 &
Для Apache также полезно уменьшить число рабочих процессов/потоков, но конкретные параметры зависят от текущего шаблона конфигурации. Проверьте секцию с настройками StartServers/MaxRequestWorkers (если используется prefork/worker). Примерно:
nano $PREFIX/etc/apache2/httpd.conf
Ищите директивы, связанные с MPM, и при необходимости ограничьте максимальные значения (ориентир: меньше лучше для слабых устройств).
Запуск Apache и проверка работы PHP
Запустим Apache в Termux. В зависимости от сборки может понадобиться запуск через foreground или через скрипты.
apachectl -k start
Проверьте, что процесс жив:
pgrep -fl apache
Теперь откройте страницу:
- Если доступ осуществляется локально, используйте адрес
http://localhostс портом, который назначен Apache. - Порт можно посмотреть в конфиге Apache (директива
Listen).
Найдите порт в конфиге Apache:
grep -n "^Listen" $PREFIX/etc/apache2/httpd.conf | head
Далее проверьте страницу phpinfo(). Например:
curl -s http://127.0.0.1/> /dev/null
curl -s http://127.0.0.1/test/ | head
Если всё настроено корректно, PHP обработает index.php.
Подключение PHP к MySQL (пример)
Создадим пример скрипта, который создаст соединение с БД и выполнит запрос.
cat > ~/www/test/db.php <<'PHP'
<?php
$host = '127.0.0.1';
$user = 'root';
$pass = '';
$db = 'test';
$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_errno) {
die('Ошибка подключения: ' . $mysqli->connect_error);
}
$mysqli->query('CREATE TABLE IF NOT EXISTS sample (id INT PRIMARY KEY AUTO_INCREMENT, msg VARCHAR(255))');
$mysqli->query("INSERT INTO sample (msg) VALUES ('hello from Termux LAMP')");
$res = $mysqli->query('SELECT id, msg FROM sample ORDER BY id DESC LIMIT 5');
$out = '<h2>Последние записи</h2>';
while ($row = $res->fetch_assoc()) {
$out .= '<div>' . $row['id'] . ': ' . htmlspecialchars($row['msg']) . '</div>';
}
echo $out;
PHP
Убедитесь, что БД test существует. Если нет, создайте:
mariadb -u root -e "CREATE DATABASE IF NOT EXISTS test; FLUSH PRIVILEGES;"
Затем откройте в браузере:
http://127.0.0.1/test/db.php
Если у вас задан пароль для root, заполните $pass. Для более правильной практики создавайте отдельного пользователя под проект, а не используйте root.
Работа с локальной сетью (опционально)
Если вам нужно проверить доступ к сайту с других устройств в одной локальной сети, используйте создание локальной сети через VPN только для организации доступа в пределах вашей сети (без обхода блокировок).
Технически это означает, что Apache должен слушать соответствующий интерфейс/адрес, а firewall — разрешать соединения. В Termux проверьте, что в конфиге Apache указана правильная директива Listen (иногда это Listen 0.0.0.0:PORT), и аккуратно контролируйте доступность сервисов.
Типичные ошибки и быстрые проверки
- PHP скачет/не обрабатывается: проверьте наличие
index.phpв DocumentRoot и корректность обработчика PHP для Apache. Также смотрите логи Apache. - MariaDB не стартует: изучите
/tmp/mysqld.logи убедитесь, что каталог данных существует и доступен. - Медленно работает: уменьшите InnoDB‑буферы (см. оптимизацию), ограничьте количество соединений и проверьте, не забита ли память.
- Веб недоступен: проверьте порт Apache (
Listen) и выполнитеcurlна127.0.0.1.
Чек-лист: что должно получиться
- Apache отдаёт страницу и корректно исполняет PHP.
- MariaDB запущена и принимает подключения с
127.0.0.1. - PHP‑скрипт подключается к БД и выполняет запросы.
- Параметры MySQL не «съедают» весь ресурс телефона.
Заключение
Развёртывание LAMP‑стека в Termux — реальная и практичная задача для локальной разработки на мобильных устройствах. Ключ к успеху — корректная настройка DocumentRoot и обработчика PHP, стабильный запуск MariaDB, а также умеренные параметры конфигурации под ограниченные ресурсы смартфона или планшета.
Если вам нужна помощь с настройкой окружения, подбором параметров производительности или переносом проекта на мобильную среду, команда РыбинскЛАБ поможет организовать инфраструктуру под ваши задачи — от базового запуска до стабильного рабочего процесса разработки.