Настройка lighttpd сервера на андроид
Обновлено: 18.05.2024
Предполагается, что до установки веб-сервера изучена важная предварительная информация по основам работы с виртуальным сервером, изложенная в отдельной статье.
Предварительные настройки
Установка минимума необходимых компонентов:
Указаны компоненты, которые отсутствуют в минимальной конфигурации Debian и могут частично присутствовать в другой конфигурации.
При желании можно руссифицировать интерфейс операционной системы и прикладных программ.
Команда:
В появившемся интерфейсе нужно выбрать русский язык - локаль: ru_Ru.UTF-8.
Затем ту же локаль выбрать по умолчанию.
После нового подключения к серверу через SSH-клиент русская локаль должна работать.
MariaDb
Установка необходимых пакетов:
В ходе установки в ответ на запрос потребуется указать хороший взломоустойчивый root-пароль базы данных.
Затем для безопасности рекомендуется выполнить:
В появившемся диалоге потребуется указать только что заданный вами root-пароль, ответить на вопросы (обычно это n,y,y,y,y)
Дальнейшие настройки веб-сервера будут происходить после установки обработчика языка PHP.
PHP 7 (PHP-FPM)
В связи с тем, что на момент подготовки данной статьи (начало 2016 года) в стандартном репозитарии Debian 8 отсутствует пакет PHP 7 версии, потребуется подключить сторонний репозитарий:
Добавьте в имеющийся файл следующие строки:
Для корректной работы с пакетами нужна установка ключа этого репозитария:
Обновление списка пакетов:
Установка пакета PHP 7:
Установка расширений PHP для работы CMS:
Приведенный набор расширений может оказаться избыточным, конкретный выбор зависит от CMS. Лишние расширения в теории - добавочный путь для уязвимостей.
Настройка параметров PHP в конфигурационном файле:
В этом файле для исправления настройки безопасности раскомментировать строку с текстом:
Там же во время теста были изменены значения двух параметров по умолчаний, которые мешают загрузке дампа базы данных м его распаковке в PhpMyAdmin, ограничивая в интерпретаторе php максимальный размер загружаемого файла и время исполнения скрипта:
Перезапуск сервиса php:
Создаем резервную копию конфигурации и редактируем ее:
Заменяем содержимое редактируемого файла на нижеследующее:
Подключаем модули Лайти:
Не меняя папку, в которой находимся, создаем ссылку для запуска новой конфигурации:
Перезапускаем службу сервера Лайти для применения новых параметров.
Проверяем корректную работу полученной связки, создав тестовый файл в папке сервера по умолчанию:
Если все корректно настроено, то у вас получится увидеть большую тестовую страницу PHP, открыв в браузере URL:
Не забудьте после теста удалить файл info.php.
Настройка нескольких хостов
Для определения пути расположения каждого сайта открываем файл конфигурации Лайти:
В этом файле после строк описания сервера (server.port = . ) добавляем строки для описания каждого сайта:
Для применения новых параметров - новый перезапуск Лайти:
Чистые ссылки
Ниже описана конфигурация, предназначенная для CMS Drupal 7. Она подходит, как есть, для большинства других CMS, но не для Drupal 8.
Устанавливаем LUA и magnet ( ниже указана текущая версия Lua, которая может в дальнейшем отличаться цифрой):
Подключаем мод magnet:
Редактируем файл конфигурации Лайти:
добавляем в начале файла в списке модулей строку:
а в конце файла добавляем строку, указывающую путь к файлу скрипта "drupal.lua" :
Создаем файл скрипта:
В том случае, если файлы CMS находятся не в корневой папке сайта, потребуется изменить в файле строку с текстом "local prefix". Например, для локальной папки с сайтом /drupal эта строка будет выглядеть так:
Снова перезапускаем Лайти, чтобы изменения настроек вступили в силу:
Почти наверняка потребуется отправка почты с сайта, например, для регистрации новых пользователей, оповещении об новостях, отчетов о доступных обновлениях и т.д. Если тестовая отправка не работает, как это было в моем случае, то потребуется настроить почтовый агент. В моем случае это Exim. Установка Exim:
Отвечаем на вопросы в появившемся интерфейсе настройки, например:
- Интернет сайт (прием и отправка напрямую).
- Имя сервера (стоит по умолчанию). 127.0.0.1
- Другие места (пусто)
- Домены релейные (пусто)
- Сокращать кол-во dns-запросов – нет
- Метод доставки – любое значение
- Делить на маленькие файлы – нет
- Адрес для сбора почты postmaster | root – указать
Полученные настройки будут сохранены в файле /etc/exim4/update-exim4.conf
Но перед тестированием работы почты нужно не забыть запустить:
Contents
Установка
Настройка
Совет: Проверить правильность настроек и выявить ошибки можно с помощью команды:Если такого пользователя нет в системе, добавляем его командой:
Проверим правильность установки
При этом файлы будут включаться в порядке их следования в каталоге, что может привести к непредсказуемым результатам. В качетсве решения можно перед названием файла ставить цифры, например, 10-auth.conf , 20-fastcgi.conf , 21-fastcgi-php.conf .
Совет: Для корректной обработки различных типов файлов нужно определить mime-типы: Совет: После изменения конфигурационных файлов не забудьте перезапустить сервер: Важно: По умолчанию lighttpd будет запускать процессы от пользователя и группы "http".Этот модуль позволяет выполнять различные CGI программы. Пример конфигурации CGI модуля приведён ниже:
Совет: Чтобы файлы с некоторым расширением исполнялись безо всякой спец. программы, просто не указывайте никакую CGI-программу:Файл без расширения, но имеет определённую правую часть URL:
FastCGI
Устанавливаем FastCGI командой:
Важно: По умолчанию lighttpd будет запускать процессы от пользователя и группы "http".Следующее содержимое нужно добавить в файл конфигурации
Устанавливаем php и php-cgi
Проверяем, что php-cgi работает:
Если вы увидели похожий вывод, значит всё установлено правильно.
Примечание: Если вы получаете ошибки, подобные этим "No input file found" при попытке получить доступ к вашему php файлу, убедитесь, что следующие директивы активированы в /etc/php/php.ini :И что файлы доступны для чтения всем:
Проверяем работу php:
Совет: Если вы хотите, чтобы в html файлах обрабатывался php-код, добавьте в fastcgi-php.conf :php-fpm
Устанавливаем php-fpm и запускаем демон:
Примечание: Настройки php-fpm находятся в файле /etc/php/php-fpm.conf . Подробнее о настройках php-fpm [устаревшая ссылка 2020-12-27] .SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа.
Важно: Если вы используете одновременно mod_ssi и mod_compress, то mod_ssi должен быть загружен до mod_compress.Создаем директорию для хранения сертификатов:
Генерируем самоподписанный сертификат (пример команды):
Примечание: Подробнее о создании сертификатов смотрите отдельную статью.Выставляем владельца и нужные права:
Вы также можете использовать named-based виртуальным хостинг, чтобы реализовать несколько SSL серверов:
Примечание: SNI поддерживается не всеми браузерами. Подробнее. IP-based виртуальный хостинг лишён этого недостатка.mod_redirect должен быть включён:
Сжатие исходящих данных
Сжатие исходящих данных уменьшает нагрузку на сеть и может улучшить общую пропускную способность веб-сервера.
На сегодня поддерживается только статичное содержимое.
Сервер автоматически договаривается какой метод сжатия использовать. Поддерживается gzip, deflate, bzip.
Ограничение на размер сжимаемых файлов: от 128 байт до 128 мегабайт.
Создаём нужную директорию и задаём владельца:
В данном примере будут удалены все файлы, которые старше 10 дней.
Совет: Вы также можете использовать условия (имя хоста или url), чтобы задать произвольный каталог для сжатых фавйлов.Сжатие динамического контента
Для сжатия динамического контента (PHP) в /etc/php/php.ini нужно включить следующую директиву:
Совет: Вы также можете задать уровен сжатия с помощью директивы zlib.output_compression_level.Управление кешем браузера пользователя
Можно также перечислить отдельные расширения файлов:
Альтернативу предыдущему листингу:
Виртуальные хосты
Использование условий
Первый способ заключается в изменении server.document-root в зависимости от содержимого заголовка "host".
mod_simple_vhost
Этот способ более прост и экономичен. В указанной директории хостинга имя каждого каталога соответствует аналогичному имени вируального хоста. Внутри каждого такого каталога находится dccroot вируального хоста.
Docroot для каждого вируального хоста строится из следующих трёх значений:
- server-root
- hostname
- document-root
Абсолютный путь к docroot'у строится из:
в случае если путь не существует
Совет: Вы можете использовать символьные ссылки чтобы соотнести несколько имён хостов одной директории.В качестве примера приведём следующий:
mod_evhost
Модуль evhost создаёт document-root, основываясь на шаблнах. Эти шаблоны представляют различные части запроса "host":
С помощью этого моудля можно также организовать виртуальные хосты для поддоменов:
Листинг директорий
Листинг включается для всех каталогов, в корне которых нет файлов перечисленных в директиве index-file.names.
Чтобы включить листинг для отдельного каталога укажите следующее:
Совет: Для исключения из листинга скрытых файлов используется директива dir-listing.hide-dotfiles = "enable". Список исключений, основанный на регулярных выражениях, задаётся директивой dir-listing.excludeОграничение доступа
Для использования ограничения доступа необходим включить mod_access:
Ограничиваем доступ к файлам, заканчивающимся на "
Запрет доступа к сайту для определённого IP:
Ограничение доступа к каталогу /libraries :
Запрет доступа к каталогу /stats всех кроме IP адресов 200.19.1.5 и 210.45.2.7:
Важно: При совместном использовании директив url.access-deny и server.error-handler-404 при запросе запрещённого контента запросы будут направляться согласно директиве server.error-handler-404 (Подробнее).Чтобы этого избежать необходимо добавить server.error-handler-404 = "forbidden" внутрь условия, содержащего url.access-deny. Пример:Аутентификация
Важно: Если mod_fastcgi и mod_auth используются вместе, то mod_auth должен быть загружен до mod_fastcgi.Методы
- Basic метод передаёт имя пользователя и пароль по сети в открытом виде(закодированными в base64), что способствует возникновению проблемы безопастности в случае если соединение между клиентом и сервером не шифруется.
- Digest метод передаёт только хешированную информацию, что значительно повышает конфидециальность аутентификационных данных в незащищённых сетях.
Backends
- plain
- htpasswd (crypt only)
- htdigest
- ldap
Для digest аутентификации:
plain
Файл содержит строки с именами пользователей и паролями в открытом виде. Имя пользователя и пароль разделяются двоеточием. Например:
htpasswd
Файл содержит строки с именами пользователей и зашифрованными с помощью crypt() паролями. Имя пользователя и пароль разделяются двоеточием.Например:
htdigest
Файл содержит строки с именами пользователей, realm'ом и зашифрованными с помощью md5() паролями. Имя пользователя, realm и пароль разделяются двоеточием. Например:
ldap backend обычно выполняет следующие действия для аутентификации пользователя
- анонимное соединение (при загрузке plugin'а)
- получение DN для фильтрации = username
- аутентификация на ldap сервере
- рассоединение
если четвёртый шаг проходит без ошибок, то пользователь считается авторизированным
Совет: Для создания файлов htpasswd и htdigest Вы можете воспользоваться утилитами, идущими в составе пакета apache или установить apache-tools AUR из AUR.Чтобы сгенерировать файл htpasswd введите команду:
Чтобы сгенерировать файл htdigest введите команду:
Пример конфигурации
Кодировка по умолчанию
Чтобы установить кодировку для статических файлов, нужно добавить charset=utf-8 в директиве mimetype.assign. Например:
Важно: Для файлов, указанных в директиве ssi.extension, добавление charset=utf-8 в mimetype.assign не работает. Единственный способ указать кодировку, это добавить в секцию <head> shtml файла строку:Кодировка для листинга каталогов устанавливается директивой:
Кодировка для php файлов устанавливается в файле /etc/php/php.ini :
Проксирование
Пример конфигурации при использовании виртуальных хостов:
Можно также перенапрвлять только скрипты с определённым расширением:
В качестве альтернативы можно использовать условие $HTTP["url"]:
Для распределения нагрузки можно использовать следующие настройки:
Доступны следующие типы балансинга:
- fair - запрос обрабатывается менее нагруженным сервером
- round-robin - запросы обрабатывают сервера по очереди
- hash - гарантировано один и тот же uri будет обрабатываться конкретным сервером
Производительность
Отключение Keep-Alive может помочь вашему серверу, если вы страдаете от большого количества дескрипторов файлов. Значения по умолчанию:
Если сервер обрабатывает несколько соединений сразу под высокой нагрузкой (предположим, 500 соединений одновременно в течение 24 часов), вы можете столкнуться с проблемой нехватки дескрипторов файлов
Это позволит высвободить соединения ранее, и освободит дескриптор файлов без вредные потери производительности.
Отключение Keep-Alive полностью является крайним случаем, если вы все еще хватает файловых дескрипторов:
Обработчик событий
Для Linux с ядром 2.6 и выше рекомендуется следующее значение:
Значение по умолчанию: poll (для Unix систем).
Обработчик сетевых соединений
- linux-sendfile рекомендуется для маленьких файлов.
- writev рекомендуется для очень больших файлов.
Максимальное количество соединений
Узнать ограничение дескрипторов файлов в вашей системе можно с помощью команды:
Если у вас сайт с большим трафиком, вы можете увеличить это ограничение:
Примеры настроек для различных CMS
phpMyAdmin
Устанавливаем необходимые пакеты:
Настройка поддержки php описана выше.
Раскоментируем следующие директивы в /etc/php/php.ini :
Также убедитесь, что директории phpmyadmin указаны в директиве open_basedir в /etc/php/php.ini
Если вы хотите, чтобы phpMyAdmin был доступен только по защищённому протоколу добавьте следюущие настройки:
Вы также можете ограничить доступ к phpMyAdmin для определённых IP адресов:
Mediawiki
Устанавливаем необходимые пакеты:
Настройка поддержки php описана выше. УБедитесь, что необходимые директории перечислены в директиве open_basedir в /etc/php/php.ini
Задаём пароль для учётной записи root MySQL:
Создаём базу данных для wiki:
Создаём пользователя для новой базы:
- $ - пароль root MySQL.
- $ - имя пользователя базы данных wiki.
- $ - пароль пользователя базы данныз wiki.
texvc
Устанавлиаем необходимые пакеты:
Затем в файле /usr/share/webapps/mediawiki/LocalSettings.php добавляем:
Если MediaWiki Установлена в папку wiki, то конфиг будет выглядеть следующим образом:
Drupal
УБедитесь, что необходимые директории перечислены в директиве open_basedir в /etc/php/php.ini
Вариант 1: server.error-handler-404
Вариант 2: mod_rewrite
Мы развернули в нашей тестовой лаборатории следующую схему:
- Роутер, настройка которого описана в данной статье, имеет IP-адрес 10.0.0.1.
- Веб-сервер, настройкой которого мы займемся, имеет IP-адрес 10.0.0.145
- Рабочие станции, получают сетевые настройки автоматически.
Прежде всего установим необходимые для администрирования пакеты mc и OpenSSH:
Теперь мы можем задвинуть сервер на полку в серверной и производить все операции с ним удаленно через SSH, например используя PuTTY.
Прежде всего установим сам веб-сервер:
После установки он сразу готов к работе, в чем можно убедиться набрав в браузере IP-адрес нашего сервера. Вы должны увидеть стандартную страницу-заглушку сервера:
Осталось только сообщить компьютерам нашей сети, что сайт site.local обслуживается нашим веб-сервером по адресу 10.0.0.145, это можно сделать прописав соответствующие строки в файле hosts на каждой рабочей станции, но лучше сделать это централизованно. Так как у нас в сети развернут кеширующий DNS (Dnsmasq) будет глупо не воспользоваться его возможностями. Для этого на роутере в конфигурационном файле /etc/dnsmasq.conf добавим следующие строки:
Если теперь мы наберем в браузере site.local, то также увидим страницу-заглушку веб-сервера.
Теперь на нашем сервере можно размещать свои веб-странички, но как это сделать? Обычно на хостингах для доступа к содержимому сайтов используют FTP, в нашем случае мы не видим смысла использовать дополнительный сервис, так как установленный OpenSSH сервер дает возможность передачи файлов по защищенному протоколу SFTP. Никаких дополнительных настроек для этого не потребуется, достаточно в любом поддерживающем SFTP клиенте (например FileZilla) указать имя хоста, логин и пароль (вашего пользователя на веб-сервере) и порт подключения 22 или sftp://site.local в имени хоста.
Создадим в блокноте проверочную HTML страницу и сохранив ее под именем index.html разместим в папке /var/www нашего сервера (не забудьте установить права 777 на /var/www):
Если все сделано правильно, то набрав адрес сайта вы должны увидеть вместо заглушки нашу страничку:
Современные веб-технологии предусматривают широкое использование т.н. "движков", для поддержки которых требуются PHP и MySQL, поэтому самое время добавить их к нашему серверу. Сначала установим PHP:
Затем в /etc/php5/cgi/php.ini найдем, раскомментируем и приведем к следующему виду строку:
Для проверки создадим в блокноте файл следующего содержания:
Следующим шагом установим сервер баз данных MySQL и модуль PHP для работы с ним:
По умолчанию MySQL сервер использует кодировку latin1, в то время как большинство современных движков работают в UTF-8. Поэтому откроем /etc/mysql/my.cnf и добавим в секции [client] и [mysqld] следующие строки:
Для удобного управления СУБД установим пакет phpMyAdmin:
В заключение установим на наш сервер популярный движок Joomla. Для этого скачаем с официального сайта необходимые пакеты, разместим файлы движка в /var/www (предварительно удалив все содержимое папки) и установив необходимые права на папки и файлы (см. инструкции к движку) начнем установку просто набрав в браузере адрес сайта.
Никаких сложностей на этом этапе возникнуть не должно. После установки в первую очередь устанавливаем языковой пакет и в нашем распоряжении полноценный сайт, можем переходить к его наполнению и оформлению:
Вот так, менее чем за полчаса времени, в вашем распоряжении может оказаться простой веб-сервер поддерживающий все современные технологии.
В Google Play Market есть множество подобных программ и можно выбрать то, что подойдет именно вам. Ниже скрин самого верха с плай маркета по запросу "Web serwer".
Часть из приложений платная, или триал на некоторое время - а потом покупать, есть и абсолютно бесплатные локальные веб сервера. Так-же и функционал у них разный, от простого html+php, до поддержки практически всего набора модулей и последних версий PHP+MySQL+phpmyadmin и прочих модулей.
KSWEB сервер PHP+MySQL
Этот веб сервер содержит PHP, СУБД MySQL и msmtp для поддержки функции mail в PHP. KSWEB это инструмент для веб-программирования на платформе андроид. Он позволяет вам организовать платформу для запуска и отладки сайтов на различных CMS и скриптов. Для использования приложения не нужен ROOT, но если он есть, то можно запустить сервер на стандартном порту 80.У приложения достаточно просто и интуитивно понятный интерфейс. Приложение правда платное, после установки вам дается 5дней на использование, после чего программа потребует ввести ключ, в общем ее надо будет купить. Стоимость KSWEB PRO - $3.99. Стоимость KSWEB Standard - $2.99.
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
Приложение тоже платное и имеет испытательный срок 10 дней, после чего NAMP предложит вам купить его. Весит приложение после установки 47,45 Мб. Цена приложения $ 1,99. Но во время испытательного срока приложение без ограничений, и самое главное есть поддержка mo_rewrite по умолчанию. У меня получилось без проблем запустить (Wordpress, Livestreet) на этом сервере и все работало. Ниже скриншот приложения.
Приложение также включает PhpMyAdmin, phpFileManager, adminer. А так-же экспорт MySQL резервное копирование на Dropbox / экспортные резервные копии сайтов на Dropbox / Резервное копирование баз данных MySQL.
В целом мне этот сервер понравился, но и тут я не хотел платить и отправился на поиски холявы. Хотя порадовал тот факт что заработал мод-реврайт и свободно запустились нужные мне движки сайтов.
ServDroid.web - простой веб сервер
Так-же я опробовал и это маленькое приложение. На самом деле я пробовал гораздо больше, просто много удалял сразу из-за рекламы или триальных периодов. Некоторые приложения были трудны в освоении или не нравились интерфейсом. Но этот маленький ServDroid.web мне понравился своей простотой. Приложение весит всего 0,96 Мб, а после установки 3,49 Мб.По сути я так понимаю это не совсем сервер, но он локально вполне корректно отображает html страницы и переходит по ссылкам на другие страницы локального сайта. Показывает он страницы в своем окне, но так-же можно при запущенном приложении открыть свой браузер и сайты откроются в нем, нужно только адресную строку ввсети "http://localhost:8080". Ниже скриншот приложения с открытой страницей тестового сайта для примера.
Сразу скажу что кроме просмотра html страниц это приложение ничего не может. У меня не заработали даже страницы с расширением (.php). Так-же не выполняется php на html страницах ни в самом приложении, ни в браузере. В общем эта программка подойдет тем, кто например занимется только html+css, или у кого сайт на чистом html.
Вот еще який представитель подоного рода приложений для платформы андроид. Весит приложение 19.96 Мб, а после установки 69.57 Мб.
Этот локальный сервер мне понравился больше всего из опробованых, и я им пользуюсь и сейчас. Но он как и множество подобных не понимает .htaccess и почему-то тоже не работает mod_rewrite, хотя он вроде присутствует. Но мне это не мешает так-как я не использую mod_rewrite в своих сайтах, да и БД (MySQL)не использую, и движки (CMS). У меня простенькие сайты на html+php и этот сервер отлично справляется с этим, так-же прекрасно через phpmyadmin создаются MySQL если нужно.
Немного технических характеристик "Палапа веб сервер"
На этом я заканчиваю этот небольшой обзор, надеюсь информация для вас была полезна.
Читайте также: