- PVSM.RU - https://www.pvsm.ru -

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

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

HTTPD

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

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

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(я верю, среди вас таких нет), то его можно найти тут [8].

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

!/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 [9]

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

Однако, просто так запустить 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 [13]
Или установить в качестве 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 [14]
Вот phpinfo() [15] с запущенного сервера, если кому интересно.
Она платная, но думаю, найти 3$ не составит труда.
Собственно, мы получаем полноценный веб-сервер, на который, например, можно поставить ModX(да, я специально поставил ModX на MiniX :)
Карманный сервер MiniX, или обзор серверных технологий для Android [16]
И который действительно будет работать:
Карманный сервер MiniX, или обзор серверных технологий для Android [17]
Вот офсайт [18] сервера.

kWS Android Web Server

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

IP Webcam

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

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

Dynamic DNS

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

Автор: vvzvlad


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/android/13067

Ссылки в тексте:

[1] Image: https://picasaweb.google.com/lh/photo/gU1VILZSF-k-WvqV-yMg96SVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[2] MiniX: http://mysku.ru/blog/others/8723.html

[3] Интернет-розетку: http://habrahabr.ru/post/149289/

[4] busybox: https://play.google.com/store/apps/details?id=stericson.busybox&hl=ru

[5] массу: http://code.google.com/p/android-scripting/

[6] консоли: https://play.google.com/store/apps/details?id=jackpal.androidterm

[7] ssh: https://play.google.com/store/apps/details?id=com.teslacoilsw.quicksshd

[8] тут: http://4pda.ru/forum/index.php?showtopic=233150

[9] Image: https://picasaweb.google.com/lh/photo/s9sCyDNOzEQ-QoKMRjYqsKSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[10] Python: http://code.google.com/p/android-scripting/downloads/detail?name=PythonForAndroid_r4.apk&can=2&q=

[11] Image: https://picasaweb.google.com/lh/photo/wrkrzeON41WM6E5VAY_A76SVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[12] Image: https://picasaweb.google.com/lh/photo/xe1at76DRjyFuPBLPK8ACaSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[13] Image: https://picasaweb.google.com/lh/photo/RZbVbNzkwb4FSxDXE_00NaSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[14] Image: https://picasaweb.google.com/lh/photo/OIZQZBDZtNslUU6qRYK3TaSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[15] phpinfo(): http://vvzvlad-reviews.s3.amazonaws.com/WebServerICS/phpinfo.htm

[16] Image: https://picasaweb.google.com/lh/photo/tblhW73mrG4xdnZNt1G5GqSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[17] Image: https://picasaweb.google.com/lh/photo/OJRqYan3Jr7PSuPXLiHKXaSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[18] офсайт: http://www.kswebserver.ru

[19] бесплатной: https://play.google.com/store/apps/details?id=org.xeustechnologies.android.kws

[20] платной: https://play.google.com/store/apps/details?id=org.xeustechnologies.android.kwspro

[21] Image: https://picasaweb.google.com/lh/photo/b3OQ0qLsoijKFF3sj9vtOqSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[22] Image: https://picasaweb.google.com/lh/photo/8h7-Q8mae_j_nddXqVMIF6SVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[23] тут: https://play.google.com/store/apps/details?id=com.pas.webcam

[24] Image: https://picasaweb.google.com/lh/photo/IblmSQO0uuNiaaO-II7BaqSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[25] Image: https://picasaweb.google.com/lh/photo/Wy-oKtQsQxv3vUpY7hPqJ6SVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[26] Image: https://picasaweb.google.com/lh/photo/i9piNsMdjhet7XGdqe9hNKSVARZjNKNEt3ROuFGU3eQ?feat=embedwebsite

[27] Универсальный: https://play.google.com/store/apps/details?id=org.l6n.dyndns&feature=search_result

[28] официальный dyndns: https://play.google.com/store/apps/details?id=com.dyndns&feature=search_result

[29] универсальный платный: https://play.google.com/store/apps/details?id=com.icecoldapps.dynamicdnsupdatepro