Php server with android

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


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

HTTPD

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

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

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

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

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

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

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

Кстати, в busybox есть практически все, что нужно для написания скриптов на шелле:

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

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

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

Потом 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 клиент встроенный.

Читайте также:  Cyberpunk 2077 тема для андроид

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

Источник

Простой клиент-сервер на Android (интернет-мессенджер)

Важно. Все написанное ниже не представляет собой какой либо ценности для профессионалов, но может служит полезным примером для начинающих Android разработчиков! В коде старался все действия комментировать и логировать.

Поехали. Многие мобильные приложения (и не только) используют архитектуру клиент-сервер. Общая схема, думаю, понятна.

Уделим внимание каждому элементу и отметим:

  • сервер — представляет собой некую программу, работающую на удаленном компьютере, и реализующую функционал «общения» с приложениями-клиентами (слушает запросы, распознает переданные параметры и значения, корректно отвечает на них);
  • клиент — в нашем случае, программа на мобильном устройстве, которая умеет формировать понятный серверу запрос и читать полученный ответ;
  • интерфейс взаимодействия — некий формат и способ передачи/получения запросов/ответов обеими сторонами.

Неважно, как реализован любой из этих элементов, все они в любом случае присутствуют. Давайте реализуем примитивный сервер и Android клиент, работающий с ним. Как пример, будем использовать любой популярный мобильный интернет-мессенджер (Viber, ICQ), а приложение условно назовем «интернет-чат».

Схема взаимодействия следующая:

Клиент, установленный на устройстве А, посылает сообщение для клиента, установленного на устройстве Б. И наоборот. Сервер играет роль связующего звена между устройством А и Б… С, Д… и т.д. Также он играет роль «накопителя» сообщений, для их восстановления, на случай удаления на одном из клиентских устройств.

Для хранения сообщений используем SQL БД как на сервере, так и на устройствах-клиентах (в принципе, вся работа клиентов интернет-мессенджеров и сводится к постоянной синхронизации локальной и удаленной БД с сообщениями). Дополнительно, наш интернет-чат будет уметь стартовать вместе с запуском устройства и работать в фоне. Взаимодействие будет происходить путем HTTP запросов и JSON ответов.

Более логично, если синхронизация происходит через порт/сокет, это с одной стороны упрощает задачу (не нужно циклично слать HTTP запросы на проверку новых сообщений, достаточно проверять состояние прослушиваемого сокета), но с другой стороны, это усложняет создание серверной части приложения.

Делаем сервер

Для реализации «сервера», нам нужно зарегистрироваться на любом хостинге, который дает возможность работы с SQL и PHP.

Создаем пустую SQL БД, в ней создаем таблицу.

  1. author — автор сообщения;
  2. client — получатель сообщения;
  3. data — время и дата получения сообщения на сервере;
  4. text — сообщение.

В двух следующих файлах необходимо изменить переменные, содержащие данные для доступа к БД, на свои, полученные Вами при регистрации Вашего«сервера».

Структура запросов к api:

  • обязательный атрибут action — может быть равен select (сервер ответит списком записей из своей БД), insert (сервер добавить новую запись в свою БД), delete (сервер очистит свою БД)
  • если action=insert, нам нужно будет передать дополнительные параметры: author (кто написал сообщение), client (кому адресовано сообщение), text (сообщение)
  • action=select может содержать дополнительный параметр data, в этом случае ответ сервера содержит не все сообщения из БД, а только те, у которых время создания позднее переданного

Примеры:

  • chat.php?action=delete – удалит все записи на сервере
  • chat.php?action=insert&author=Jon&client=Smith&text=Hello — добавит на сервере новую запись: автор Jon, получатель Smith, содержание Hello
  • chat.php?action=select&data=151351333 — вернет все записи, полученные после переданного времени в long формате

Клиентская часть

Теперь структура Android приложения:

В фоне работает FoneService.java, который, в отдельном потоке, каждые 15 секунд делает запрос на сервер. Если ответ сервера содержит новые сообщения, FoneService.java записывает их в локальную БД и отправляет сообщение ChatActivity.java о необходимости обновить ListView, с сообщениями. ChatActivity.java (если она в этот момент открыта) получает сообщение и обновляет содержимое ListView из локальной БД.

Читайте также:  All dual core android phones

Отправка нового сообщения из ChatActivity.java происходит сразу на сервер, минуя FoneService.java. При этом наше сообщение НЕ записывается в локальную БД! Там оно появится только после получения его назад в виде ответа сервера. Такую реализацию я использовал в связи с важным нюансом работы любого интернет-чата — обязательной группировкой сообщений по времени. Если не использовать группировку по времени, будет нарушена последовательность сообщений. Учитывая, что клиентские приложения просто физически не могут быть синхронизированы с точностью до миллисекунд, а возможно будут работать даже в разных часовых поясах, логичнее всего будет использовать время сервера. Так мы и делаем.

Создавая новое сообщение, мы передаем запросом на сервер: имя автора сообщения, имя получателя сообщения, текст сообщения. Получая эту запись назад, в виде ответа сервера, мы получаем то, что отправляли + четвертый параметр: время получения сообщения сервером.

Источник

Локальный сервер для андроид

В Google Play Market есть множество подобных программ и можно выбрать то, что подойдет именно вам. Ниже скрин самого верха с плай маркета по запросу «Web serwer».

Часть из приложений платная, или триал на некоторое время — а потом покупать, есть и абсолютно бесплатные локальные веб сервера. Так-же и функционал у них разный, от простого html+php, до поддержки практически всего набора модулей и последних версий PHP+MySQL+phpmyadmin и прочих модулей.

KSWEB сервер PHP+MySQL

У приложения достаточно просто и интуитивно понятный интерфейс. Приложение правда платное, после установки вам дается 5дней на использование, после чего программа потребует ввести ключ, в общем ее надо будет купить. Стоимость KSWEB PRO — $3.99. Стоимость KSWEB Standard — $2.99.

Некоторые возможности KSWEB: nginx v1.7.3 (SSL) / lighttpd server v1.4.35 (SSL) / PHP v5.5.14 (SSL) / MySQL v5.6.19 / msmtp v1.4.32 / Web Interface v1.1 / KSWEBFTP v1.0

MySQL хост: localhost (or 127.0.0.1) / MySQL порт: 3306 / MySQL логин «root» с пустым паролем

Данный сервер содержит полностью готовые к работе конфигурационные файлы всех компонентов. Однако, если Вы хотите их изменить, то зайдя в настройки программы и кликнув «Внешние INI», все файлы настроек будут размещены на sdcard по адресу /mnt/sdcard/ksweb/conf/

Весит данное приложение не так много, 15,55 Мб, но после установки занимает 73,9 Мб.

В пробной версии некоторые функции недоступны, и сразу скажу что этот сервер не поддерживает модуль mod_rewrite, и .htaccess, по этому движки (CMS) требующие наличие модуля mod_rewrite полноценно запустить не получится. Хотя думаю что в платной версии можно включить сервер ingix и на нем все заработает. А так все отлично работает, БД создаются и движки корректно встают. Ниже скрин приложения.

Но мне данный сервер не понравился тем что его нельзя полноценно пощупать бесплатно и надо купить, а я не хочу покупать то, что мне вообще может не подойти. Но этот сервер очень популярный, значит достойный. .

NAMP nginx android web server

NAMP это nginx — веб-сервер, в отличие от большинства подобных приложений основанных на lighttpd. NAMP на платформе Android (с поддержкой виртуальных хостов) включает в себя: Nginx v1.5.0 / PHP v5.4.13 / MySQL v5.1.62 / Msmtp 1.4.30 / NAMPFTP v1.0

Приложение тоже платное и имеет испытательный срок 10 дней, после чего NAMP предложит вам купить его. Весит приложение после установки 47,45 Мб. Цена приложения $ 1,99. Но во время испытательного срока приложение без ограничений, и самое главное есть поддержка mo_rewrite по умолчанию. У меня получилось без проблем запустить (WordPress, Livestreet) на этом сервере и все работало. Ниже скриншот приложения.

Читайте также:  Калибровка поворота экрана android

Приложение также включает PhpMyAdmin, phpFileManager, adminer. А так-же экспорт MySQL резервное копирование на Dropbox / экспортные резервные копии сайтов на Dropbox / Резервное копирование баз данных MySQL.

В целом мне этот сервер понравился, но и тут я не хотел платить и отправился на поиски холявы. Хотя порадовал тот факт что заработал мод-реврайт и свободно запустились нужные мне движки сайтов.

ServDroid.web — простой веб сервер

По сути я так понимаю это не совсем сервер, но он локально вполне корректно отображает html страницы и переходит по ссылкам на другие страницы локального сайта. Показывает он страницы в своем окне, но так-же можно при запущенном приложении открыть свой браузер и сайты откроются в нем, нужно только адресную строку ввсети «http://localhost:8080». Ниже скриншот приложения с открытой страницей тестового сайта для примера.

Сразу скажу что кроме просмотра html страниц это приложение ничего не может. У меня не заработали даже страницы с расширением (.php). Так-же не выполняется php на html страницах ни в самом приложении, ни в браузере. В общем эта программка подойдет тем, кто например занимется только html+css, или у кого сайт на чистом html.

Palapa Web serwer — локальный сервер для андроид

Вот еще який представитель подоного рода приложений для платформы андроид. Весит приложение 19.96 Мб, а после установки 69.57 Мб.

Palapa Web serwer — это полноценный lighttpd сервер с PHP и MySQL, так-же в комплекте идет phpmyadmin, который корректно работает и БД создаются без проблем. Приложение в использовании достаточно простое, но в тоже время имеет множество настроек, а так-же можно править конфигурационные файлы сервера, что мне пригодилось.

По умолчанию php не выполняется на страницах с расширением .html, но в конфиге можно добавить это выполнение прописав в конфиге lighttpd.conf в строчке
fastcgi.map-extensions = ( «.php3» => «.php», «.php4» => «.php», «.php5» => «.php» )
запись «.html» => «.php»
и станет в строчке
fastcgi.map-extensions = ( «.php3» => «.php», «.php4» => «.php», «.php5» => «.php», «.html» => «.php» ). Скриншот правки конфига lighttpd.conf

Этот локальный сервер мне понравился больше всего из опробованых, и я им пользуюсь и сейчас. Но он как и множество подобных не понимает .htaccess и почему-то тоже не работает mod_rewrite, хотя он вроде присутствует. Но мне это не мешает так-как я не использую mod_rewrite в своих сайтах, да и БД (MySQL)не использую, и движки (CMS). У меня простенькие сайты на html+php и этот сервер отлично справляется с этим, так-же прекрасно через phpmyadmin создаются MySQL если нужно.

Немного технических характеристик «Палапа веб сервер»

Поддержка устройств, использующих ARM и Intel (x86) процессоры. В составе приложения : Lighttpd 1.4.35 / PHP 5.5.1 / MySQL 5.1.69 / MSMTP 1.4.32 / Web Admin 2.1.0
Путь до папки www куда нужно положить файлы своего сайтов: sdcard/pws/www. По умолчанию URL Адрес: http://127.0.0.1:8080. Чтобы зайти в Web Admin — http://127.0.0.1:9999 ( Имя/пароль: admin/admin ). MySQL Информация: локальный (127.0.0.1), порт: 3306 , имя пользователя: root, пароль: adminadmin.

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

Источник

Оцените статью