Карманный сервер MiniX, или обзор серверных технологий для Android

в 13:52, , рубрики: android, веб-сервер, извращения, Мобильный веб, ненормальное, Сетевые технологии, метки: , , ,

Карманный сервер MiniX, или обзор серверных технологий для Android
На этот раз из MiniX мы будем делать не Интернет-розетку, а самый настоящий веб-сервер. Правда, маленький, но с полноценным php, python, bash, MySQL.

HTTPD

httpd, из busybox.
Тот самый, что использовался для интернет-розетки. Умеет CGI, поэтому можно писать веб-приложения на любом языке, которые можно запустить нa Android. А запустить можно массу чего — Python, Perl, BeanShell/Rhino(JavaScript), Bsh, Lua.

Запускается из консоли или через ssh, вот так:

httpd -p80 -vv -f -h /sdcard/www -c /sdcard/www/http.cfg

-p80 — параметр порта
-vv — режим отладки, -f — не становиться демоном. полезно при отладке — показывает обращения к серверу и обращение к файлам.
-h /sdcard/www — корневая директория сервера
-c /sdcard/www/http.cfg — файл конфигурации.

Из конфигурации наиболее интересна вот эта строчка:
*.sh:/system/bin/sh — расширение файла(или имя), и чем этот файл исполняется. ограничений на папку(cgi-bin) нет, файлы могу исполняться в любых каталогах.

В busybox по умолчанию sh, но если вдруг вы пишите скрипты на bash(я верю, среди вас таких нет), то его можно найти тут.

Скрипт пишем вот таким образом(позволю себе привести пример из прошлого топика):

!/bin/sh
/system/bin/echo $QUERY_STRING >/dev/ttyUSB0 
echo "Content-type: text/html"
echo ""
echo "<html><header></header><body>"
echo "</body></html>"

Все что выводим на stdout — передается в браузер. Все параметры передающиеся get-ом, оказываются в переменной $QUERY_STRING, в виде «r=1&g=3». Парсер пишите сами. Не забывайте, что время выполнения скрипта = время загрузки веб-страницы.

Кстати, в busybox есть практически все, что нужно для написания скриптов на шелле:
Карманный сервер MiniX, или обзор серверных технологий для Android

Установка других интерпретаторов тоже довольно проста. Скачиваем, например Python, устанавливаем, запускаем.
Карманный сервер MiniX, или обзор серверных технологий для Android
Нажимаем Install, ждем загрузки и установки.
Карманный сервер MiniX, или обзор серверных технологий для Android

Однако, просто так запустить python не выйдет, он ориентирован на запуск GUI.
Для того, чтоб получить возможность выполнять консольные скрипты, надо будет сделать простую скрипт-запускалку:

py:

PW=`pwd`
export EXTERNAL_STORAGE=/mnt/sdcard
export LANG=en
PYTHONPATH=/mnt/sdcard/com.googlecode.pythonforandroid/extras/python
PYTHONPATH=${PYTHONPATH}:/data/data/com.googlecode.pythonforandroid/files/python/lib/python2.6/lib-dynload
export PYTHONPATH
export TEMP=/mnt/storage/com.googlecode.pythonforandroid/extras/python/tmp
export PYTHON_EGG_CACHE=$TEMP
export PYTHONHOME=/data/data/com.googlecode.pythonforandroid/files/python
export LD_LIBRARY_PATH=/data/data/com.googlecode.pythonforandroid/files/python/lib
cd $PW
/data/data/com.googlecode.pythonforandroid/files/python/bin/python "$@"

Потом mount -oremount,rw /system; cp ./py /system/bin/; chmod 755 /system/bin/py
Все, можно запустить и получить консоль питона:
Карманный сервер MiniX, или обзор серверных технологий для Android
Или установить в качестве CGI:
cat "*.py:/system/bin/py" > /sdcard/www/http.cfg

ALHPM (Android+lighttpd+PHP+MySQL)

Для андроид есть замечательная программа KSWEB Server, в составе которой есть PHP 5.4.4, MySQL 5.1.62 и Lighttpd 1.4.29(в версии 2.5)
Карманный сервер MiniX, или обзор серверных технологий для Android
Вот phpinfo() с запущенного сервера, если кому интересно.
Она платная, но думаю, найти 3$ не составит труда.
Собственно, мы получаем полноценный веб-сервер, на который, например, можно поставить ModX(да, я специально поставил ModX на MiniX :)
Карманный сервер MiniX, или обзор серверных технологий для Android
И который действительно будет работать:
Карманный сервер MiniX, или обзор серверных технологий для Android
Вот офсайт сервера.

kWS Android Web Server

Еще есть вот такой сервер, в бесплатной и платной версиях.
Карманный сервер MiniX, или обзор серверных технологий для Android
Умеет SSI(из которого можно вызывать CGI в том числе), Dynamic DNS(от no-ip.com и dyndns.com), SSL, шифрование. Не умеет PHP и MySQL.
Карманный сервер MiniX, или обзор серверных технологий для Android

IP Webcam

Замечательная бесплатная программа, которую можно взять тут.
Позволяет сделать из любого Android-устройства IP-вебкамеру. Настроек — куча.
Карманный сервер MiniX, или обзор серверных технологий для Android Карманный сервер MiniX, или обзор серверных технологий для Android
Выглядит так:
Карманный сервер MiniX, или обзор серверных технологий для Android

Особенно актуально как раз для миникса. Подключаем веб-камеру, устанавливаем программу, настраиваем запуск при загрузке. Красота.

Dynamic DNS

А как быть, если хочется получить еще и доступ из внешнего мира? Если у вашего провайдера есть внешний реальный IP(хоть и динамический), то множество сервисов, предоставляющих динамический ДНС спасут отца русской демократии.
Клиентов — на все вкусы. Универсальный, официальный dyndns, универсальный платный и еще кучка. У kWS клиент встроенный.

Автор: vvzvlad

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js