Представим такую ситуацию: у тебя есть старенький смартфон на Android. Свою основную функцию он уже давно потерял — разбит экран, или сдох модуль мобильной связи, или же смартфон банально устарел. Особого смысла продавать его за три копейки нет, а вот повесить на «вечную зарядку» и поднять сервер вполне можно. Причем для этого даже не придется запускать на смартфоне Linux или что-то компилировать. Все необходимое есть в Google Play.

INFO

Описанные шаги производились на смартфоне возрастом пять лет с Android 4.4. Если твой смартфон еще старше — будь готов к тому, что гайд для него не подойдет (например, из-за отсутствия поддержки LineageOS или использованных в статье утилит). Да, жизнь жестока.

Подготовка

Для начала выполним несколько подготовительных шагов.

Чистим смартфон

Первое, что нам необходимо сделать, — это очистить аппарат от мусора. Удаляем все файлы с карты памяти (внутренней и съемной), а затем делаем сброс до заводских настроек (Настройки → Восстановление и сброс → Сброс настроек). Это нужно, чтобы избавиться от установленных приложений, которые тоже могут висеть в памяти и жрать оперативку.

Также настоятельно рекомендую установить на смартфон LineageOS, а поверх нее пакет gapps-pico. Так ты получишь смартфон с доступом к маркету, но без огромного количества блоата, который так любят предустанавливать производители и Google.

После регистрации в Google сразу отключи все виды синхронизации, перейдя в «Настройки → Аккаунты → Google». На сервере от этой синхронизации никакого прока, она будет только мешать. Функции пробуждения при получении уведомления и always on display, а также светодиодный индикатор тоже не нужны. Перейди в «Настройки → Приложения» и отключи весь софт, который возможно отключить. Email, браузер, службы Exchange — все это нам не нужно.

В результате у тебя окажется система, которая по минимуму использует оперативку и не держит в памяти ненужные приложения и службы, — голый и урезанный со всех сторон смартфон. Нелишним будет получить права root. Большинство описанных в статье серверов их не требуют, но они понадобятся, если ты захочешь иметь нормальную командную строку с набором утилит Linux и полный контроль над сервером.

SSH и BusyBox

Android построен на ядре Linux, что для нас большой плюс: Linux прекрасно оптимизирован для серверов. Однако вся остальная часть системы сильно отличается от типичных дистрибутивов Linux. Здесь нет многих стандартных для Linux команд, к Android нельзя подключиться по SSH, системы контроля сетевых служб тоже как бы нет (есть местный init, но это вещь в себе).

Чтобы это исправить, установим BusyBox и SSH-сервер. Первый представляет собой минималистичный комплект стандартных утилит командной строки Linux, второй понятно что. Для установки BusyBox воспользуемся приложением BusyBox On Rails. Все предельно просто: запускаем приложение, кликаем несколько кнопок, соглашаемся предоставить права root — готово.

На роль SSH-сервера отлично подойдет SimpleSSHD. Внутри это SSH-сервер Dropbear для встраиваемых устройств, снабженный графическим интерфейсом. Устанавливаем, запускаем, переходим в настройки, отмечаем галочкой опцию Start on Boot, возвращаемся назад и нажимаем кнопку Start.

SimpleSSHD выведет на экран IP-адрес, порт по умолчанию 2222. Подключиться к нему из Linux можно так:

$ ssh IP-адрес -p 2222

При подключении на экране смартфона появится одноразовый пароль, который следует указать в приглашении клиента. Это очень безопасный, но не очень удобный способ аутентификации, поэтому рекомендую использовать аутентификацию по ключам. Просто переименуй свой открытый ключ (id_rsa.pub) в authorized_keys и положи в каталог ssh на карте памяти.

Сразу после подключения к серверу выполни команду su, чтобы SimpleSSHD запросил права root на смартфоне. Подтверди права и не забудь поставить галочку «Больше не спрашивать» (в LineageOS) или сними галочку «Спросить снова» (SuperSU). Это нужно, чтобы в будущем ты мог в любой момент получить root без всяких запросов со стороны Android.

Bash, nano, tmux, mc

BusyBox содержит только базовый набор утилит командной строки, многие из которых к тому же имеют сильно урезанную функциональность. В BusyBox нет ни bash, ни вменяемых консольных редакторов (Vi в расчет не берем, это не Vim), ни mc и tmux, без которых многие админы не представляют себе жизни.

Если тебе все это нужно, придется установить утилиты самостоятельно. Правильный способ это сделать — скачать компилятор Linaro, исходники утилит и собрать их самому. Быстрый способ — выдрать из уже имеющегося приложения, например из Terminal IDE.

Скачиваем Terminal IDE, переименовываем пакет APK в ZIP, распаковываем, находим файл assets/system-2.0.tar.gz.mp3, переименовываем, убирая расширение mp3, и вновь распаковываем. Внутри будет множество каталогов и файлов, из которых нас интересуют только system/bin и system/etc/terminfo. Первый содержит нужные нам утилиты; просто скопируй те, что тебе пригодятся, в отдельный каталог. Второй необходим для их корректного функционирования.

Выбранные утилиты и каталог terminfo скинь на карту памяти смартфона. Затем подключись к нему по SSH и введи следующие команды, чтобы получить возможность модификации системного каталога:

$ su # mount -o remount,rw /system

Далее скопируй все нужные утилиты в /system/xbin/ и установи на них бит исполнения (на примере bash):

# cp bash /system/xbin/ # chmod 755 /system/xbin/bash

Затем создай файл /sdcard/ssh/.bashrc, помести в него следующие строки:

export TERMINFO=/sdcard/terminfo export TMPDIR=/data/local/tmp export PS1="u@h:w $ "

Открой настройки SimpleSSHD на смартфоне и в опции Login Shell укажи /system/xbin/bash, останови и вновь запусти сервер. При следующем входе по SSH откроется bash и будут доступны скопированные тобой утилиты.

Чтобы добиться корректной работы Vim и mc, скопируй на карту памяти также каталоги etc/mc и etc/vim, а в файл /sdcard/ssh/.bashrc добавь строки

export MC_DATADIR=/sdcard/mc export VIMRUNTIME=/sdcard/vim

WARNING

Если сразу после логина вместо имени пользователя и хоста ты видишь -bash-4.2$, запусти bash повторно. Такая ошибка возникает из-за проблем с автоматическим определением домашнего каталога.

Отключаем энергосбережение

Как и любая другая мобильная ОС, Android всеми силами старается сберечь энергию. Поэтому сразу после отключения экрана он как можно скорее переводит смартфон в режим suspend, при котором прекращается/снижается подача питания не только на экран, но и на сам процессор (аналог suspend to ram в компах).

Нам такое поведение будет только мешать, поэтому его следует отключить. Для этого активируем так называемый wakelock, который заставит систему не переходить в режим suspend:

$ su # echo mylock > /sys/power/wake_lock

Wakelock будет оставаться активным, пока жива система, но после перезагрузки его придется активировать снова. В прошивках, основанных на LineageOS/CyanogenMod, это можно автоматизировать. Создай файл со следующим содержимым:

#!/system/bin/sh echo mylock > /sys/power/wake_lock

И скопируй его в каталог /system/etc/init.d.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru» Здравствуйте, сегодня разберемся как сделать локальный сервер для Андроида, установим на него wordpress и рассмотрим также полезные приложения для вебмастера на Андроид платформе.
Скачать исходники для статьи можно ниже
Когда у вас нет доступа к компьютеру, ноутбуку – например: на работе, во время поездки – но есть смартфон, планшет с операционной системой Андроид – то можно установить на него локальный сервер, а после и wordpress. Локальный сервер можно установить с помощью следующего Андроид приложения: AndroPHPПосле установки данного приложения у вас появиться папочка “www”. Открываем встроенное приложение – “Диспетчер файлов” и заходим в папочку “www” – она пуста. Заходим в приложение AndroPHP: Переводим рычажок в положение ON (как на картинке выше). Далее здесь же нам даны 2 ссылки, в примере (у вас могут быть другие): http://176.227.24.230 – это сам сайт. http://176.227.24.230/phpmyadmin – для создания Базы Данных сайта. Далее приступим к установке wordpress на локальный сервер для Андроид:1. Скачиваем wordpress с официального сайта – “ru.wordpress.org” – скачиваем zip архив с движком wordpress:2. Далее нам нужно разархивировать zip архив – для этого устанавливаем андроид приложение – RAR или 7Zipper (скачать их можно с Play Маркет или с Яндекс.Store – более подробно в конце статьи). После разархивации у вас получиться папочка – “wordpress-4.0-ru_RU”, открываем ее в ней еще одна папочка “wordpress” – все содержимое данной папочки копируем и переносим в папочку “www” – вот как она должна выглядеть в итоге: “http://176.227.24.230” – у вас должна высветиться страничка с подготовкой к установке wordpress. 3. Создаем Базу Данных wordpress и имя пользователя: Для этого переходим по второй ссылке, в данном примере –  “http://176.227.24.230/phpmyadmin” Здесь Username вводим root, а password – оставляем пустым. Далее Жмем вкладку сверху “Databases” и создаем новую Базу Данных, незабываем выбрать кодировку utf8_general_ci:   После создаем пользователя Базы данных – верхняя вкладка “More” и ее подвкладка “Privileges” – здесь нажимаем ссылку “Add user”: Для примера, можно создать пользователя: Username – admin Host – localhost     4. Далее возвращаемся на адрес, в нашем примере: “http://176.227.24.230”  – и устанавливаем wordpress, вводя созданную нами Базу Данных и пользователя базой данных. Полезные программы для вебмастера на платформе Андроид:1. WebMasterLite (Редактор Вебмастера Lite)Удобный HTML редактор. 2. Архиваторы: RAR или 7ZipperДля работы с архивами zip и rar – разархивация/архивация. Приложение RAR: Приложение: 7Zipper: Можно скачать как с Play Маркет, так и с Яндекс.Store. 3. Total CommanderУдобный файловый менеджер и FTP клиент.

  • 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 "" echo "" 

Все что выводим на 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 клиент встроенный. А подписаться, чтоб не пропустить новые обзоры можно на странице компании и в моем профиле(кнопка «подписаться»)

Нужно маломощное устройство для запуска вашего сайта? Хотите освободить место, занимаемое вашим веб-сервером? Хотели бы вы поделиться информацией с людьми, друзьями или публикой, но у вас нет средств для запуска полномасштабного веб-сервера?

Или вы можете разместить свою веб-страницу, используя смартфон или планшет на Android. Вот как можно создать простой веб-сервер Android.

Android: недорогой веб-сервер у вас в кармане

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

Например, вы можете использовать стандартный настольный ПК или ноутбук. Но так как это занимает много места, вы можете сократить еще больше.

Это немедленно снимает ваши расходы на хостинг. Если количество просмотров страниц низкое, вы должны обнаружить, что ваш сайт работает без блокировки устройства (хотя вы не должны ожидать многозадачности во время работы сайта!).

Шаг 1: Установите Tiny Web Server для Android

Для Android доступны различные серверные приложения. Однако многие из них устарели и предназначены для более старых версий Android (таких как PAW Server).

Мы используем Tiny Web Server для этого урока. При этом мы загрузим основной файл index.html и перейдем к нему с ПК в той же сети, чтобы проиллюстрировать использование Android в качестве веб-сервера.

Подобные приложения основаны на тех же принципах. В основном, те же концепции и процессы необходимы для предоставления веб-страницы браузеру для просмотра.

Скачать:Tiny Web Server для Android (бесплатно)

Шаг 2: Настройте Tiny Web Server

Этот инструмент очень упрощенный способ подачи контента с вашего телефона. Тем не менее, он позволяет вам получить доступ к файлам удаленно. Например, вы можете просматривать память телефона из веб-браузера вашего компьютера, если оба находятся в одной сети.

Из-за этой простоты в Tiny Web Server нет возможности настройки. Это означает, что вы не можете принудительно установить его по умолчанию в файл index.html.

После установки Tiny Web Server запустите приложение. На главном экране у вас есть опция Изменить путь к серверу, что полезно, если вы хотите указать каталог для хранения ваших веб-файлов.

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

Шаг 3: Добавьте Index.html на Tiny Web Server

Чтобы использовать Tiny Web Server для обслуживания веб-страниц, вам нужно создать файл index.html и загрузить его в нужную папку. Вы можете сделать это на своем рабочем столе, используя текстовый редактор, например Notepad ++, или на Android, используя HTML или текстовый редактор.

Скопируйте файл в нужный каталог (через USB или с помощью файлового менеджера Android) на устройстве Android. На Android переместите файл в /storage/emulated/0.

Если вы копируете файл через USB на телефон, перейдите к хранилищу телефона в диспетчере файлов. Местоположением по умолчанию должен быть эмулируемый подкаталог. Скопируйте файл HTML в этот каталог, затем безопасно отключите устройство.

После того, как файл скопирован на Android, откройте Tiny Web Server и нажмите «Запустить сервер». Перейдите в своем браузере к URL-адресу по умолчанию, добавив /index.html в конец.

Поздравляем, вы превратили свое Android-устройство в простой веб-сервер! Конечно, показанный пример является чрезвычайно простым и не имеет стиля. К счастью, легко добавить CSS с помощью обычной инструкции в файле HTML. Мы рассмотрели некоторые основы CSS если вы новичок. Лучше всего, вы все еще можете использовать свой телефон или планшет в обычном режиме во время хостинга сайта.

Как люди посещают страницы вашего веб-сервера Android?

Не имеет значения, размещаете ли вы свой сайт на смартфоне, планшете или даже на Android-телевизоре.

Какое бы устройство Android вы не выбрали, при использовании вместе с клиентом динамического обновления DNS (из них No-IP.com имеет приложение для Android), вы сможете обслуживать веб-страницы на компьютерах вне домашней или корпоративной сети. Эти приложения связывают динамический IP-адрес вашего устройства с выделенным URL-адресом через устанавливаемое клиентское приложение.

Какое бы устройство Android вы не выбрали, при использовании вместе с клиентом динамического обновления DNS (из них No-IP.com имеет приложение для Android), вы сможете обслуживать веб-страницы на компьютерах вне домашней или корпоративной сети. Эти приложения связывают динамический IP-адрес вашего устройства с выделенным URL-адресом через устанавливаемое клиентское приложение.

Построение веб-сервера Android

Мы рассмотрели основные этапы создания веб-сервера на платформе Android. На случай, если вы их пропустили, давайте напомним себе.

  • Убедитесь, что ваше Android-устройство подключено к сети
  • Установите Tiny Web Server
  • Создать HTML-файл (ы)
  • Загрузите файл (ы) на ваше устройство Android
  • Запустите Tiny Web Server

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

В Android создание веб-сервера — это всего лишь один из вариантов. Взгляните на некоторые более полезные способы использования старого смартфона.

Как превратить устройство Android в веб-сервер

Расскажу, как построить на любом устройстве с Android простейший веб-сервер.

Шаг 1: Установите Tiny Web Server для Android.

Для Android доступны различные серверные программные приложения. Однако многие из них устарели и предназначены для более старых версий ОС (например, PAW Server).

Мы используем Tiny Web Server. С помощью этого приложения мы загрузим базовый файл index.html и перейдем к нему с компьютера в той же сети, чтобы проиллюстрировать использование Android в качестве веб-сервера.

Скачать: Tiny Web Server для Android (бесплатно)

Шаг 2: Настройка Tiny Web Server

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

Из-за этой простоты нет возможности настройки Tiny Web Server. Это означает, что вы не можете заставить его использовать файл index.html по умолчанию. Тем не менее, это незначительное неудобство.

После установки Tiny Web Server запустите приложение. На главном экране у вас есть опция Изменить путь к серверу, которая полезна, если вы хотите указать каталог для хранения ваших веб-файлов.

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

Шаг 3: Добавить Index.html на Tiny Web Server

Чтобы использовать Tiny Web Server для обслуживания веб-страниц, вам необходимо создать файл index.html и загрузить его в нужную папку. Это делается на компьютере с помощью текстового редактора типа Notepad+++.

Скопируйте файл в предпочитаемый каталог (через USB-порт или файловый менеджер Android) на устройство в /storage/emulated/0.

Скопировав файл на Android, откройте Tiny Web Server и нажмите Запустить сервер. Перейдите в браузере на URL-адрес по умолчанию, добавив /index.html в конец страницы.

Поздравляю, вы превратили ваше Android устройство в простой веб-сервер!

Спасибо, что читаете! Подписывайтесь на мой канал в Telegram и Яндекс.Дзен. Только там последние обновления блога и новости мира информационных технологий. Также, читайте меня в социальных сетях: Facebook, Twitter, VKOK.

Респект за пост! Спасибо за работу!

Хотите больше постов? Узнавать новости технологий? Читать обзоры на гаджеты? Для всего этого, а также для продвижения сайта, покупки нового дизайна и оплаты хостинга, мне необходима помощь от вас, преданные и благодарные читатели. Подробнее о донатах читайте на специальной странице.

На данный момент есть возможность стать патроном, чтобы ежемесячно поддерживать блог донатом, или воспользоваться Яндекс.Деньгами, WebMoney, QIWI и PayPal:

Спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.

ОСТАВЬТЕ ОТВЕТ

Please enter your name here
Please enter your comment!