Сервер под Windows

Изложенное здесь относится к созданию домашнего Web-сервера под Windows на базе домашнего компьютера. Т.е. сервер используется двояко – и как обычный компьютер и когда он включен как сервер. В настоящее время данный сайт работает на полноценном выделенном сервере под Linux Debian. Настройку выделеного сервера опишу потом.

На чем работал старый сервер

Заранее извиняюсь за чайниковский стиль изложения. Домашний выделенный доступ в Интернет появился у меня относительно недавно – в 2005 году. Провайдер – Стрим. Скорость обратного канала 512кбит/сек. Идея сделать домашний сервер возникла где-то в мае 2006 года. Ставить выделенный компьютер при практически нулевой посещаемости созданной ранее на chat.ru аналогичной странице, глупо, да и постоянный шум и расход электроэнергии. Здесь планирую выложить архивы по обучению в МГАПИ, а также некоторые личные (в основном собранные из того же Интернета) архивы.

В качестве сервера решил выбрать естественно бесплатную программу, но с возможностями CGI, разграничением доступа, ведением логов и т.п. Также, учитывая что сервер работает не на выделенном компьютере, важное значение имеют потребляемые сервером ресурсы. Перепробовал множество вариантов и всегда находились какие-то неудобства:

  • Apache
    Самый популярный в мире (60%) и мощный сервер. Бесплатный. Распространяется по GNU лицензии. Единственный существенный для меня недостаток – требует много памяти. У меня он занимает 20мб, что для чисто домашнего использования с почти нулевой посещаемостью я считаю много. Также для домашнего использования имеет уж слишком высокую функциональность и требует соотвественно много времени на своё изучение (хотя это и полезно).
  • Microsoft IIS
    Второй по популярности. Входит в стандартную поставку Windows XP. Устанавливается через “Установка и удаление программ -> Установка компонентов Windows”. Администрируется через консоль управления Windows. Для меня он оказался слишком запутанным – за 2 дня так и не удалось разобраться как сделать его доступным не только во внутренней сети, но и во внешней тоже. Занимает в памяти меньше – 9мб. Много рекламы, огромное количество книг и курсов по изучению, можно даже получить сертификат от Microsoft и совсем мало общедоступной реальной информации по администрированию и возможностям сервера.
  • Sambar Server
    Вполне функциональный сервер. Имеет несколько неудобное Web администрирование, но зато есть русская документация на сайте. Занимает в памяти около 3мб. Тем не менее оказалось сложно разобраться с настройкой CGI. Также не понравилось что долго стартует и долго завершает работу (по мелочам придираюсь).
  • Tinyweb
    Совсем крошечный сервер. Размер 58 кб. Распространяется вместе с исходными текстами. Низкая функциональность (а что еще захотел от такого).
  • Tornado server
    Shareware. Бесплатно работает 40 дней, далее с ограничениями. Просят 79$. Не стал ставить.
  • WebServ
    Простейший Web сервер. Написан на Delphi. Распространяется вместе с исходными текстами. Очень низкая функциональность. Может быть интересен только в качестве изучения работы Web-технологий и основы для написания собственного сервера.
  • Small Server
    С него началось мое знакомство с Web-технологиями. Основное достоинство – при достаточной функциональности и очень высокой насыщенности не требует специальной установки и удаления, начинает работать сразу без какой-либо настройки. Маленький (дистрибутив 120кб, в памяти занимает 2мб) и сильно насыщенный сервер. Содержит в себе http, smtp, pop, Proxy, FTP, DNS серверы. Очень быстро, практически мгновенно загружается и выгружается. Важным достоинством Small Server является то, что он поддерживает SSL/TSL и может работать по протоколу https (редкость для серверов такого класса). При передаче файлов по http поддерживается докачка, но есть и недостатки: не работает с именами файлов в кириллице, а также, не смотря на уверения автора о высокой скорости работы, предел скорости передачи файлов – около 200кб/сек (для сравнения Apache – около 2мб/сек). Сначала долго не мог разобраться с настройками PHP (скрипт не получает значения переменных), потом оказалось очень просто – надо указать в качестве интерпретатора не php.exe, а php-cgi.exe (интерфейс с php реализован через CGI). Сначала показался почти идеальным для меня. Но, тем не менее и здесь нашлась ложка дёгтя. Переименованные в *.cgi, *.exe файлы не воспринимает как скрипты. Пришлось сделать затычку и её назначить в качестве “интерпретатора” файлов с расширением *.cgi. Есть неудобства с логами. Формат сложен для анализа, лог только один для всех серверов и обновляеся не в реальном масштабе времени, а редко. Зато происходящие события можно наблюдать прямо в окне сервера. В FTP сервере нет настроек пассивного режима (только – включен/выключен). Сервер очень удобен для освоения Web-технологий, написания и отладки скриптов – это его основное назначение. Но использовать его в качестве публичного Web-сервера не удобно(но он для этого и не предназначен).
  • Abyss Web Server X1
    Имеет понятное и удобное Web администрирование, также можно и напрямую править файл конфигурации. Логи сохраняются в удобном для анализа виде. Правда и здесь нашелся небольшой недостаток. Данный сервер не поддерживает SSL/TSL и соответственно на нем сложно разместить приватную информацию. Тем не менее, этот недостаток можно обойти, если использовать навесное SSL/TSL шифрование, а чтобы пользователь не мог зайти напрямую, в соотвествующем скрипте проверять протокол. Других недостатков пока не обнаружил. Если только что-нибудь с безопасностью или вдруг захочет стать платным? В памяти занимает места меньше мегабайта. В данный момент работает в качестве домашнего сервера.

Возможные дополнения

  • В процессе поиска нашел интересный сайт PicoWeb Home,
    где предлагается аппаратный Web сервер на микроконтроллере. Прикольная штука, но практически бесполезная ввиду крайне низкой функциональности и необходимости самостоятельного изготовления.
  • В настоящее время появились микроконтроллеры, на которых можно построить более функциональный Web-сервер. Кроме того, есть готовые платы. Скажем Chip-Dip предлагает отладочную плату LPC-E2124 – плата с Ethernet контроллером для разработки различных сетевых решений на базе микроконтроллера фирмы Philips LPC2124 ARM7TDMI-S. В составе платы уже есть все необходимые аппаратные компоненты Web-сервера. Программное обеспечение можно найти у Adam Dunkel`sThe uIP TCP/IP Stack for Embedded Microcontrollers. Есть идея – поставить у себя дома такой сервер в режиме непрерывной работы. Основное достоинство – очень низкое потребление энергии (менее 5вт), возможность использования в качестве какого-либо контроллера (управление освещением, электропитанием, система контроля доступа и т.п.) с Web-интефейсом. Недостатки – понятны: маленький размер памяти (память программ – 60кб и память данных – 2кб), частично можно скомпенсировать установкой дополнительной внешней Flash-памяти; невысокое быстродействие (максимум 60мгц), но если не использовать активно серверные скрипты, не вести на нем баз данных, то данный недостаток не особо существеннен.

Настройка программного файрволла

У меня стоит Agnitum Outpost Firewall. При наличии модема с функциями файрволла ставить еще программый не обязательно, но дополнительная защита не повредит (Стоит в основном для IE и Outlook – без него возможности для просачивания вирусов существенно возрастают. Что стоит одно ActiveX). Настройка его интуитивно понятна, а данный раздел написан просто для того чтобы обратить внимание и на этот пункт.

Настройка модема

Модем у меня ZTE 831. О нем и пойдет речь. Имеет удобное Web-администрирование. Если модем используется как мост (Bridge), в каком виде он настроен изначально по умолчанию, то никакой настройки маршрутизации не требуется и пункты 1,2 можно пропустить. Но работа в режиме моста не учень удобна (можно пользоваться Интернетом только на одном компьютере), поэтому лучше настроить модем на работу в режиме маршрутизатора
(Router).

Перед началом настройки модема на работу в режиме маршрутизатора надо отключится от Интернет, в свойствах сети (Панель управления ->Сетевые подключения -> Подключение по локальной сети -> Протокол TCP/IP) указать вручную IP-адрес, шлюз и адреса DNS серверов (предпочитаемый: 212.188.4.10, альтернативный: 195.34.32.116). Зайти на страницу модема и выполнить следующие действия:

  1. Настроить модем на работу в режиме NAT (если уже в режиме NAT, то данный
    пункт пропустить):
  • Quick Start -> Quick Setup ->
  • VPI:1 VCI:50 ->
  • Protocol: PP over Ethernet (PPPoE) Encapsulation Type:LLC/SNAP ->
  • Obtain an IP address automatically: поставить галочку Enable NAT ->
  • PPP User Name: вводишь имя, PPP Password: вводишь пароль
  • Session established by: Dial on Demand
  • По умолчанию все запросы на соединение из Интернета не обрабатываются. Надо прописать номера портов и внутренние адреса хостов, на которые модем будет пересылать запросы:

 

  • Advanced -> NAT -> Virtual Server -> Add
  • Service Name: пишешь любое имя правила или выбираешь стандартное на работу не влияет.
  • Protocol: TCP
  • External port (диапазон портов, по которым будет приходить запрос извне): start: 81 end: 81 (порт 80 фильтруется МТУ, поэтому его нельзя использовать)
  • Internal port (диапазон портов, на которые модем перешлет запрос): start: 81 end: 81 (у меня сервер настроен на 81 порт, можно оставить стандартный 80, тогда будет start: 80 end: 80)
  • Internal server IP address: внутренний адрес машины, на которой стоит Web-сервер. У меня адрес модема 192.168.1.1, адрес машины с Web сервером 192.168.1.2, соотвественно пишу здесь 192.168.1.2. Если у тебя другой адрес, то пишешь его.
  • Аналогичным образом у меня прописаны TCP порт 4662 и UDP порт 4672 для eMule.
  • Т.к. у Стрим даёт только динамический адрес, то приходится пользоваться услугами Dynamic Dns. Модем поддерживает работу с сервером Dynamic Network Services, Inc. Для меня это очень удобно – нет необходимости устанавливать на компьютер каких-либо специальных клиентов DynDNS. Настраиваем работу с DynDNS:

 

  • Advanced -> NAT -> Dynamic DNS
  • Dynamic DNS: Enabled
  • Internet Connection: pppoe_1_50
  • User Name: имя пользователя, полученное на Dynamic Network Services, Inc
  • Password: пароль
  • Domain Name: доменное имя.
  • Status: если модему удалось соединиться с DynDNS и передать информацию о твоем внешнем IP-адресе, то пишет Update successful !

 

Настройка Web-сервера, PHP, MySQL


Устаревшее, потом выложу как ставил и настраивал сервер на Debian. Пока очень кратко и про Apache. Раньше я использовал Apache. В дальнейшем планирую снова вернуться к нему, как только проведу апгрейд компьютера (256 Мб оперативки для всего все-таки маловато).

  • Настройка сервера Apache под Windows.

    Здесь могу пока сказать немного. Сначала Apache оказался слишком ресуроемким, потом слишком сложным для полноценного освоения. Поэтому пока я использую более простой и интуитивно понятный Abyss Web Server.

    Один Apache сервер может поддерживать несколько виртуальных серверов. Главные настройки находятся в conf\httpd.conf. В каталогах с содержимым сайтов могут находится файлы с локальными для сайта настройками. В случае грубой ошибки в конфигурации сервер не запускается. Комментарии задаются символом #. Имеется Unix-особенность: все пути указываются с чертой снизу вверх /. Настройки еще называются директивами. Директивы задаются в виде: директива значение. Также могут использоваться конструкции вида:

       
     <директива значение>
      директива1
      директива2
      ...
     

    Это означает, что директивы внутри конструкции действуют только для указанной вначале директивы. Обычно используется для указания прав доступа.

  • Настройка интерпретатора php.

    Настройки хранятся в файле php.ini. Поведение php интерпретатора в значительной степени зависит от его версии. Весь файл настроек приводить не смысла, т.к. меняется очень немного. Исходно файл php.ini отсутствует. Надо переименовать файл php.ini-dist в php.ini. Комментарии задаются символом ; Основные настройки:

     
     ;указание, что надо различать внутренние переменные скрипта и переменные, полученные от клиента
     ;если не различать, то это опасно, т.к. клиент может изменить значение любой переменной в  скрипте
     register_globals = On
    
     ;путь к каталогу с расширениями. У меня выглядит так.
     extension_dir = "c:\server\php5\ext\"
    
     ;загрузить расширение для работы с MySQL. Версия библиотеки может не соответствовать версии MySQL,
     ;тогда надо взять соответствующую библиотеку из поставки MySQL.
     extension=php_msql.dll

    Для получения информации о текущих настройках можно использовать в php скрипте функцию phpinfo().>

  • Настройка MySQL.

    Установить MySQL по умолчанию. ini файлы править не надо. Для создания базы данных зайти в каталог MySQL и выполнить команду mysqladmin -u root create mybase. Создастся каталог с именем базы. Для выполнения MySQL скриптов запустить ярлык MySQL Command Line Client.
    Сначала выбрать используемую базу командой use mybase. Для запуска MySQL скрипта набрать имя_скрипта.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *