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

  • Tutorial

На этот раз из 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 есть практически все, что нужно для написания скриптов на шелле:


Установка других интерпретаторов тоже довольно проста. Скачиваем, например Python, устанавливаем, запускаем.

Нажимаем Install, ждем загрузки и установки.


Однако, просто так запустить 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
Все, можно запустить и получить консоль питона:

Или установить в качестве 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)

Вот phpinfo() с запущенного сервера, если кому интересно.
Она платная, но думаю, найти 3$ не составит труда.
Собственно, мы получаем полноценный веб-сервер, на который, например, можно поставить ModX(да, я специально поставил ModX на MiniX :)

И который действительно будет работать:

Вот офсайт сервера.

kWS Android Web Server


Еще есть вот такой сервер, в бесплатной и платной версиях.

Умеет SSI(из которого можно вызывать CGI в том числе), Dynamic DNS(от no-ip.com и dyndns.com), SSL, шифрование. Не умеет PHP и MySQL.


IP Webcam


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

Выглядит так:


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

Dynamic DNS


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

А подписаться, чтоб не пропустить новые обзоры можно на странице компании и в моем профиле(кнопка «подписаться»)

Средняя зарплата в IT

120 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 6 277 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 40

    –4
    Я, наверное, не в теме, но зачем это все, если можно за $10 в месяц взять VPS и гонять его с любой точки планеты?

    Ну то есть, мне просто не понятно, неужели микроскопический компьютер для разработки сайтов может быть кому-то интересен?

    Единственное реальное применение, на мой взгляд — «for fun».

      0
      Да, за установку «MODX на MiniX» сразу плюс поставил =)
        +2
        можно. а вы сможете подключить веб-камеру к впс-у? а внешние датчики? а свой жесткий? а можете запустить его там, где нет интернета, чтоб получить доступ к личной вики, используемой как блокнот?
        это просто разные вещи. это не замена выделенного сервера, это просто микро-сервер, используемый для других задач.
          –5
          Встречный вопрос — а зачем?

          На шкафу стоит обычный сервер, работаю на ноуте, на телефоне — Android. Ни одной причины для покупки этого миникомпика не могу придумать.

          По моему, это как с «3D» — просто модная тема, которая скоро всем надоест.
            +2
            а почему вы зациклились на миниксе? мне он, конечно, нравится, но все тоже самое можно сделать на любом андроидном телефоне или планшете. новый купил, а старый на шкаф — веб-камерой работать. и свет включать по команде.
              +1
              Э-э-э, вы полагаете, у нас уже все люди оборудованы сервером на шкафу, ноутом и телефоном с андроидом? Вы сильно ошибаетесь :).
            –1
            офигеваю с народа. чего то вас заминусовали, видимо сообщение не соответствует официальной политике топика.
              +3
              У меня, например, сразу же появилась мысль поставить на андроид систему мониторинга серверной. На веб-сервере будет стоять какой-нить кактус или нагиос, заббикс или всё-равно-что подобное, есть веб-камера, чтобы посмотреть глазами, есть встроенный UPS на сутки(!), есть GSM-канал для резервирования способа отправки уведомлений… Крохотный размер. В общем, за 100-150 баксов просто не найти ничего лучше.

              Давно мечтал о такой дешёвой и практичной штуке.
              Мечты сбываются.
              +2
              А дебиан или убунту туда не встает?
                +1
                встает убунта. но мне был интересен андроид. теперь вот буду писать про установку линукса на него.
                  +2
                  Будет интересно посмотреть сравние ab с допустим обычным VPS на 512Мб
                    0
                    мне кажется проиграет. не дешевле обычный комп поставить, если вопрос о выделенном сервере?
                      +1
                      Нет, я прекрасно понимаю что проиграет. Вопрос в том — насколько?
                      Потому что есть хостинговые фермы на Mac Mini. И вопрос в том как это можно применить
                        0
                        можно мини-кластер собрать, это точно. заказать 200 платок только с lan и процессором и…

                        честно говоря, я в первый раз вижу ab, и не особо представляю как его применить. и я даже не знаю, есть ли в репах php и мускуль для arm.
                          +1
                          Если в Москве — может в гости заедете? :)
                          С меня пиво :)
                            0
                            далековато будет. я во владивостоке.
                              0
                              Тогда если не лень как поднимете mysql — стукните в скайп maxim.syabro — расскажу как прогнать нагрузкой. ab можно на своей машине поставить — я думаю тут вряд-ли в сеть упрется
                                0
                                ok, буду иметь ввиду.
                +3
                Ндя… Этот извечный вопрос «а зачем все это вы делаете»…
                Человечество все же живо пока есть люди, которым «надо».
                  +2
                  А возможно этот сервер с debian на автономном питании (аккумуляторы) запустить на сутки например? Какое там потребление, кто может пробовал, разбирался уже с этим вопросом?
                    0
                    да легко. потребление — как у планшета, даже меньше, потому что экрана нет. от автомобильного аккумулятора неделю работать будет
                    0
                    да прикольно, можно много чего сделать с этой штучкой.
                    Но есть одно замечание:
                    В busybox по умолчанию sh, но если вдруг вы пишите скрипты на bash(я верю, среди вас таких нет), то его можно найти
                    

                    Там вообще ash вроде используется, но есть еще куча плагинов разных. Ash достаточно ограничен, но зато надежный и проверенный :-)
                      0
                      Вроде на башорге была цитата о атаке на «карманные сервера» и прожигание ими карманов брюк.

                      P.s.Не смог найти.
                        0
                        На баше-то можно.
                        Но так-то — защита по температуре поди ж должна быть )))
                          +1
                          Вы не про это?

                          xxx: новый вид хака — задосить все Iphone серваки в радиусе действия блютуса. удачным считается хак, когда хозяин вскакивает с криком ;)

                          bash.im/quote/396445
                          0
                          Jetty/Tomcat не пробовали запускать на Android(да и вообще возможно ли это в условиях некоторой урезнности той Java, что на Android)?
                            0
                            Не возможно. Можно конечно как-то отдельно жабу туда усугубить, и запускать ее из под линукса. Но там тоже грабли есть.
                            –3
                              0
                              Это только у меня изображения не грузятся или у всех?
                              Лучше унесите с Пикасы на Habrastorage — понадежней будет.
                                0
                                у меня грузится.
                                0
                                Веб-сервер на Андроиде — это прекрасно! Туда же торренто-качалку и что-нибудь ещё до кучи, и вот уже проясняется ритм новой жизни для аппаратов, возможностей которых перестало хватать в повседневном использовании.
                                  0
                                  ну и нафиг торренто-качалка, которая работает 20 минут?
                                    +1
                                    ко намекает, что зарядку можно и не отключать
                                      0
                                      тогда в чем плюсы карманного сервера, если он все равно дома валяется? только в размерах?
                                        +1
                                        не шумит, не занимает место. можно подключить к телевизору.
                                          0
                                          Да и вообще не так сильно греется. Можно закинуть куда-нибудь в ящик и забыть.
                                            0
                                            И электричества есть минимум, в сравнении с компом.
                                              +1
                                              * ест
                                                0
                                                * ест
                                      0
                                      а хоть один из перечисленных серверов можно поставить в автозагрузку, чтобы при включении устройства запускался HTTP сервер?

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое