- PVSM.RU - https://www.pvsm.ru -
[1]
На этот раз из MiniX [2] мы будем делать не Интернет-розетку [3], а самый настоящий веб-сервер. Правда, маленький, но с полноценным php, python, bash, MySQL.
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 есть практически все, что нужно для написания скриптов на шелле:
[9]
Установка других интерпретаторов тоже довольно проста. Скачиваем, например Python [10], устанавливаем, запускаем.
[11]
Нажимаем Install, ждем загрузки и установки.
[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
Все, можно запустить и получить консоль питона:
[13]
Или установить в качестве CGI:
cat "*.py:/system/bin/py" > /sdcard/www/http.cfg
Для андроид есть замечательная программа KSWEB Server, в составе которой есть PHP 5.4.4, MySQL 5.1.62 и Lighttpd 1.4.29(в версии 2.5)
[14]
Вот phpinfo() [15] с запущенного сервера, если кому интересно.
Она платная, но думаю, найти 3$ не составит труда.
Собственно, мы получаем полноценный веб-сервер, на который, например, можно поставить ModX(да, я специально поставил ModX на MiniX :)
[16]
И который действительно будет работать:
[17]
Вот офсайт [18] сервера.
Еще есть вот такой сервер, в бесплатной [19] и платной [20] версиях.
[21]
Умеет SSI(из которого можно вызывать CGI в том числе), Dynamic DNS(от no-ip.com и dyndns.com), SSL, шифрование. Не умеет PHP и MySQL.
[22]
Замечательная бесплатная программа, которую можно взять тут [23].
Позволяет сделать из любого Android-устройства IP-вебкамеру. Настроек — куча.
[24]
[25]
Выглядит так:
[26]
Особенно актуально как раз для миникса. Подключаем веб-камеру, устанавливаем программу, настраиваем запуск при загрузке. Красота.
А как быть, если хочется получить еще и доступ из внешнего мира? Если у вашего провайдера есть внешний реальный 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
Нажмите здесь для печати.