We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Развёртывание полного LAMP‑стека в Termux: установка Apache, MySQL и PHP с оптимизацией под мобильные процессоры

Пошаговое руководство по развёртыванию LAMP‑стека в Termux: Apache, MySQL и PHP, настройка под мобильные ресурсы, производительность, безопасность и запуск локальных проектов.

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/&gt; /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, а также умеренные параметры конфигурации под ограниченные ресурсы смартфона или планшета.

Если вам нужна помощь с настройкой окружения, подбором параметров производительности или переносом проекта на мобильную среду, команда РыбинскЛАБ поможет организовать инфраструктуру под ваши задачи — от базового запуска до стабильного рабочего процесса разработки.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект