2000 г
Строим свой WWW сервер с ноля
Udjin Kondratov, http://tarantul2.infosys.ru
Все, что Вы здесь прочтете, основывается на субъективном взгляде на вопрос создания и настройки сервера, ни в коем случае не претендует на полноту и не может трактоваться как истина в последней инстанции. Спор о том, какая операционная система или какой сервер лучше, разрешит время.
В этой статье я в краткой форме расскажу о том, как я строил свой WWW сервер.
С чего начать.
Начинать нужно с задач. Задачи определят требования к ресурсам.
Операционная система.
NT4 Server. Спорить и доказывать какая из операционных систем лучше или хуже я не буду, т.к. я пробовал и RED HAT и Linux и .. остановился на NT4, так сложилось.
NT4 весьма требовательная операционная система. Для более или менее успешного запуска ей необходимы 486 DX и 12 Mb RAM. Для работы - P100 и 32 Mb RAM. Где взять NT4 ? Лучше всего купить.
WWW server.
Серверов много. В запале "Интернет-гонки" ведущие производители так и норовят переплюнуть друг друга. Так какой же сервер выбрать? Походим по интернет и посмотрим. Нам нужен сервер:
- Бесплатный.
- Поддерживающий интерфейсы CGI и ISAPI. (на самом
деле интерфейсов значительно больше ..)
- Отказоустойчивый.
- Быстрый.
По всем параметрам, кроме последнего, нам подходит IIS4. Хотя это не бесспорно.
Требования IIS4 к компьютеру:
Комплектующие |
Требуется |
Рекомендуется |
Processor |
66 MHz 486 |
90 MHz PentiumR |
RAM |
32 MB |
64 MB |
Free hard disk space |
50 MB (minimum install) |
200 MB |
Monitor |
VGA |
Super VGA |
CD-ROM drive (optional) |
3X |
6X |
Определимся с информационным наполнением сервера.
Если на сервере будут использоваться базы данных, то необходимо рассчитать их ориентировочный объем и соответственно место на диске и в памяти.
Для серьезных задач используют SQL базы данных, а для простеньких повседневных соответственно, что проще, например DB или Access. Исходим из того, что база с 5-6 таблицами и 50 000 записями в каждой занимает на винчестере 8-10 Mb. Обработка запросов к такой базе данных серьезная задача и для ускорения выполнения запросов необходимы соответственно программные и технические решения. Программные решения рассмотрим ниже а вот технические - это память и скоростные винчестеры. Сколько именно памяти? Вопрос из вопросов. Посмотрим документацию на ODBC:
Размер буфера в килобайтах рассчитывается по формуле ((Вся доступная память - 12 Mb)/4) + 512 Kb. В случае, если в системе имеется 32 Mb памяти: ((32Mb-12Mb)/4) + 512 Kb = 5632 Kb.
Дело в том, что доступ к базе данных осуществляется через Engine. Engine - это "мотор" обрабатывающий запросы извне, работающий с данными и возвращающий ответы . Моторов, как и баз много, и все разные, но память успешно потребляют все. Если вы будете использовать Engine от стороннего производителя, например Cold Fusion, то смотрите его документацию., а я по опыту скажу, что памяти для них нужно не меньше, а зачастую даже больше L .
Если баз данных на сервере не будет, то прикинем средний размер странички и сколько страничек всего будет : по опыту - большие сайты занимают на удивление мало места, так, например, сайт www.actiweserverpages.com занимает всего 20 Mb (без учета размера баз данных), но сайты имеют свойство разростаться... например -microsoft.com. Начиналось все с 2-х P-66 а сейчас 16 IIS 4.0/WindowsNT 4.0 Compaq Proliant 5000s , 20 Gb документов, 6 000 ASP - файлов и все это хозяйство разрастается :-)).
Ну что, посчитаемся.
Требования к компьютеру.
Компьютер |
Задачи |
90 MHz PentiumR, 78 Mb RAM, SVGA. 400 Mb HDD. |
NT4 + IIS без баз данных |
Собираем компьютер.
Процессор.
Ни в коем случае не разгонять. Кэш - чем больше тем лучше. Чей процессор? Тут я не в праве что-либо советовать, дело вкуса, у меня Intel. Какой именно? Самый-самый. Если есть деньги покупайте PPRO 200 с кэш-памятью 1 Mb. Сколько процессоров? Мда ... вы видно собрались строить что-то весьма крутое...
Материнская плата.
Любая, работающая, не разогнанная. В случае с Pentium - чипсет HX или VP3, в случае с P-II - лучше всего BX. Лучше "брэнд".
Винчестер.
Выбирайте самый быстрый и самый дорогой. Настоятельно рекомендую SCSI винчестеры.
Сколько? Лучше всего 2 винчестера. Дробить бутовый винчестер на 2 и создавать на каждом из них логический диск не имеет смысла, - скорости это не добавит. Если Вы еще не "гуру" в NT4 то приобретайте что-либо размером до 2-х Gb и не создавайте себе головной боли, если "гуру" - тогда покупайте то, что считаете нужным. Не забудьте про охлаждение винчестера. Контроллер для Вашей дисковой подсистемы выбирайте исходя из Ваших винчестеров. Для SCSI - выбирайте производителя здесь:
Aadaptec SCSI контроллеры. Очень много справочной информации про SCSI.
Tekram SCSI контроллеры и материнские платы со SCSI
Iwill SCSI контроллеры и материнские платы со SCSI
ASUSTeK SCSI контроллеры и материнские платы со SCSI
IOI SCSI контроллеры
Mylex SCSI контроллеры
Жесткие диски SCSI: Seagate, Western Digital, IBM, Quantum
Для IDE винчестеров есть хорошие решения от PromIce
Жесткие диски IDE:
Память.
Работающая. Какая именно? Сходите по ссылке и почитайте : Я предпочитаю Kingston.Тип памяти выбирайте исходя из возможностей Вашей материнской платы.
Сетевые средства.
Если мы собираемся подключиться по выделенному каналу к интернет то нам придется воспользоваться услугами провайдера. Наиболее вероятно что провайдер предложит Вам постоянное соединение V.34 , V.35 или G.703 , ISDN, RadioEthernet. В любом случае нам придется отталкиваться от требований и - или рекомендаций провайдера.
Вот и все по компьютеру. Монитор, клавиатуру и мышь - по вкусу, не забудьте про сетевой фильтр и блок бесперебойного питания. Мы во всеоружии и готовы ваять.
2 Ставим NT4.
Про то, как установить NT4, написаны масса книг и статей разными людьми и с разным уровнем, если Вам лень читать все это, то сходите сюда и почитайте FAQ. Написано толково и аккумулирует опыт Российских пользователей. Остановимся на том, что действительно необходимо для успешной работы сервера в режиме WWW.
Файловая система - NTFS.
Если хотите что бы Ваш сервер жил "долго и счастливо", то только эта файловая система (применительно к NT4) обеспечит Вам
- секретность;
- надежность;
- приемлемую скорость, превышающую скорость FAT
при больших объемах дисков.
Интересная статья об устойчивости NTFS и сравнение FAT и NTFS находится здесь.
Если же Вы установите FAT, помните .. как там .. "все флаги будут в гости к нам", точнее не к Вам, а в root каталог Вашего сервера :-) .
Сетевой протокол.
Естественно TCP-IP. И не надо больше никаких других протоколов. Упаси Вас бог от NetBEUI поверх TCP-IP. Нахождение Вашей машины в Интернет по IP - адресу будет обеспечивать DNS сервер провайдера, и пусть это будет его головной болью.
Если Вы предполагаете работать со своей машиной удаленно, имеет смысл присвоить вашей машине 2 реальных IP - адреса. Один - для всех, а вот второй - для своих собственных администраторских нужд, и соответственно включить фильтрацию пакетов на этот адрес. Не ставьте ни каких сетевых агентов. В некоторых изданиях рекомендуют ставить свой DNS сервер, ИМХО это верно, если Вы - провайдер, если это так, тогда зачем Вам все ЭТО?
Установка IIS2.0
При первой установке NT-4 предложит вам установить WWW а так же FTP, Gopher серверы и менеджер ODBC с драйвером SQL - сервера. Ставить или нет. Ставьте, т.к. в последствии не нужное можно безболезненно удалить, а вот установить IIS3 или IIS4 без предустановки IIS2 не удастся.. На какой винчестер и в какой каталог? По умолчанию все это "хозяйство" ставится на диск C, но если у Вас два диска, ИМХО, разумней ставить WWW сервер на отдельный физический диск. И работать будет быстрее, и в дальнейшем, для хакеров, еще одно препятствие.
Сервер установлен, запущен, "устаканился", начинаем оптимизировать его для работы с сетевыми задачами.
Тонкая настройка NT4.
Настройку сервера начните с BIOS Вашего компьютера.
Убедитесь, что версия Вашего BIOS актуальна, если нет - на сайт производителя, и скачайте свежий. Хуже не будет, а вот лучше - весьма вероятно. Установите все настройки, по умолчанию и приступайте. На что акцентировать внимание. Настройки циклов чтения-регенерации памяти, режимы шин. Отключайте всю не используемую переферию, не надейтесь на PnP, лучше "руками" прописать настройки по адресам и прерываниям. Осторожней с Shadow адресами, в случае с IDE винчестерами на "корявых" материнских платах можно потерять информацию. Если у Вас SCSI - отключите on-board IDE controller, если IDE - используйте все возможности вашего винчестера, но помните, что винчестеры на втором канале могут работать неустойчиво в режиме UDMA. Отключите дисковод. А всю "зеленку" в disable. В генеральных настройках разрешите машине стартовать при ВСЕХ ошибках. В последствии это позволит удаленно перезагружать компьютер при отсутствии клавиатуры и монитора. Поставьте supervisor password на доступ к настройкам BIOS (от лукавого). Ну как, NT загружается? Странно :-)) . Владельцам SCSI винчестеров советы давать не будем, т.к. настройка SCSI HDD на максимальную производительность - отдельная толстая книжка.
Настройка операционной системы.
Убедитесь в том, что Вы используете самые свежие версии драйверов устройств. Если не уверены в этом, - в Интренет и скачивайте. К большинству драйверов (особенно старых) есть файл - инструкция, где оговорено что исправить в registry, если чего случилось, не поленитесь и прочитайте. Если драйверы устройств (сетевая карта, HDD) позволяют чего-либо кэшировать, то кэшируйте!
Отдельные параметры сервера можно настроить при помощи визуальных инструментов.
Идем в контрольную панель и в разделе система - быстродействие вносим необходимые изменения:
- Создаем файлы подкачки на каждом физическом диске. Размер каждого минимально равен размеру вашей оперативной памяти, а вот максимально: гляньте вот здесь. Microsoft рекомендует RAM + 11 Mb.
- Быстродействие приложений делаем максимальным, для этого "ползунок" быстродействия переместим в крайнее правое положение.
- В свойствах локальной сети выбираем в сервисах Server и двойным щелчком открываем его свойства. Выбираем опцию Maximaze Throughput for Network Applications и жмем на ОК.
- Что прописать в файле boot.ini - дело вкуса, у меня его вообще нет (удален за ненадобностью, хотя есть случаи, когда в нем ставят тайм-аут 20 минут ..).
Сервисы:
- Заходим в сервисы и отключаем License Logging сервис. Дабы ему было неповадно загружаться ставим Disable.
- Не устанавливайте лишних сервисов и устройств!
- Если машина не в конфигурации PDC и основная задача - это WWW - сервер, то отключите Browser сети, а сервер при установке конфигурируйте как Stand Alone.
По мелочевке:
- Отключите ВСЕ обои и установите скрин савер - black screen.
- Вычистите каталог STARTUP. Ни каких всплывающих панелей и кнопочек! Храни Вас бог от ICQ и AOL. Вы ведь серьезно взялись за сервер, не так ли?
На этом возможности визуальных инструментов исчерпаны и далее будем работать с registry. В каталоге /system32 находится наш главный инструментарий regedit32.exe. При работе с регестри будьте предельно внимательны, изменив какой-либо ключик можно получить просто ошеломляющий результат, и в прямом, и в переносном смыслах.
НО, мы еще не установили заплатки.
Microsoft оформляет программные заплатки и обновления к продуктам в виде сервис-паков. На сегодня самый свежий - SP3. SP4 находится в процессе тестирования, и похоже, SP4 - это NT5 :-) . К сервис пакам прилагаются еще и post-fixes.
Где взять сервис пак? Ну естественно на ftp://ftp.microsoft.com/. Перемещаемся на FTP - сервер Микрософта и выкачиваем в соответствии с приводимой ниже таблицей.
Внимательно прочитайте артикли к каждому из фиксов. Отдельные заплаты Вам просто не нужны, а в некоторых случаях они могут привести к "падению" системы. Фиксы к IIS4 Вам понадобятся только после установки IIS4. Если Вы не планируете устанавливать IIS4, а решили остановиться на IIS3.0 то не нужно выкачивать их.
3 Установка и настройка IIS.
После установки SP3 сервер IIS2 из поставки NT4 "проапгрейдится" до сервера IIS3.
Определяемся - будем работать на этой версии или двинемся дальше. Если Вы решили остановиться на IIS3.0 то :
- Идем на Microsoft и скачиваем ASP1b Это где-то тут. http://www.microsoft.com/iis
ASP - это библиотека, кипа документации и много-много воображения :-) . Скрипт - "енжина", движка, мотор обрабатывающий на стороне сервера последовательность команд и возвращающий клиенту HTML - код в ответ на действия клиента в контексте задачи. ASP позволит оживить сайт, и сделать его содержимое динамическим.
Ниже - табличка эволюции ASP.
ASP |
ASP |
Asp.dll |
Asp.dll
|
Asp.dll |
version | build | version | date | size |
1.0 | 1.12.09 | 1.12.06 | 12/6/96 |
1.0a | 1.13.31 | 1.13.09 | 1/31/97 | 371,744 |
1.0b | 1.15.14 | 1.15.14 | 3/14/97 | 378,992 |
Если Вы по каким либо причинам не смогли найти пакет ASP, то просто скачайте с FTP - сайта Microsoft свежую библиотеку и "пропишите" ее в системе. Для этого - скопируйте ASP.dll в winnt\system32\inetsrv\ и с командной строки из этого каталога выполните 'regsvr32 ASP.dll '. Если пакет найден, то просто запустите .exe и наслаждайтесь процессом, в итоге у Вас будет и скрипт - енжина и документация.
- Ставим необходимые "фиксы". Как минимум: Get Admin Fix, Teardrop2 Fix, Snc Fix, SimpTCP Fix, SRV Fix, и все фиксы применительно к IIS3.0 и ASP (см таблицу).
В случае, если вы будете что либо изменять в конфигурации компьютера и при этом использовать дистрибутив NT4 не забудьте переустановить SP3 и Fixes.
Если вы решили установить IIS4, то скачивайте Option Pack 4.0 При установке компонент опшен-пака не ставьте того, что Вам не знакомо. Мне понадобился по началу IIS4 со всей документацией, ADO, RDS, FTP. Index Server я не ставил, т.к. есть решения и по круче, например от Яндекса или от Медиа Лингвы. Опять таки, после установки IIS4, ставим соответствующие Fixes.
Перезагрузка прошла успешно, NT "пропатчена" и "профиксена", начинаем оптимизировать.
Направление оптимизации системы и WWW сервера зависит от того, какие задачи будут выполняться. В частности, будем ли мы использовать базы данных, а если будем, то какие именно? Каким будет сайт, его размер. Скорость и тип линии, по которой мы соединяемся с провайдером и еще много и много чего, в том числе: количество и тип процессоров , их загруженность, размер RAM и скорость винчестера.
В таблице систематизированы типовые решения для IIS4.
Генеральные установки |
Действия |
Решения |
Удаляем не используемые "маппинги". |
Microsoft Management Console -> Web sites (virtual servers) -> Right-click -> properties -> Home Directory -> Application Settings section -> Configuration button. Удаляем все маппинги кроме тех, которые будем использовать, как правило, остается только .asp Если Вы не нашли ни одного знакомого Вам расширения, все равно оставьте .asp |
Высвобождаем ресурсы IIS. |
Для сильно загруженных серверов: установите Performance bar в положение More than 100,000. |
Microsoft Management Console -> Web sites (virtual servers) ->Right-click -> properties ->Performance Переместите ползунок в право в положение More than 100,000. |
Перераспеделение ресурса процессора и системы с "простаивающих" процессов на IIS. Примечание: Используйте эту установку только для нагруженных сайтов. |
Лог файлы |
Если не используете лог - файлы, то отключите их. |
Microsoft Management Console -> Web sites (virtual servers) ->Right-click -> properties->снимите галочку Enable Logging. |
Высвобождает системные реурсы. |
Параметры протокола TCP - IP |
Настройка TCP параметров в registry. |
Использовать Regedt32. HKLM\CurrentControlSet\ Services\TCPIP Parameters. Добавить value MaxUserPort в случае его отсутствия и установить значение 0xfffe. Добавить value TcpWindowSize в случае его отсутствия и установить значение 0x4470. |
Увеличение количества открытых портов и больший размер фрейма TCP позволят повысить производительность протокола. |
Параметры для мультипроцессорных систем |
Проверьте количество IIS threads.(потоки) Для проверки глубины очереди и количества потоков используйте Монитор. |
Если Ваша система имеет N процессоров и количество процессов в очереди находится в пределах от N до 3N то все в порядке. Если не уверены - оставьте значения по умолчанию. Для статических рабочих нагрузок. Вы можете установить MaxPoolThreads в 1 и PoolThreadLimit равным числу процессоров в вашей системе. |
Количество потоков должно быть таким, чтобы поступающие запросы не оказались заблокированными Однако, каждый поток использует системные ресурсы и может потенциально вызывать ненужные контекстные переключения. Цель состоит в том, чтобы сбалансировать количество потоков и запросов к IIS. |
Оптимизация для Статических нагрузок |
Установка TTL (время жизни объекта в кэше) По умолчанию: 30 секунд |
Используйте Regedt32, HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Services\InetInfo\ Parameters. Добавьте value ObjectCacheTTL Установите то значение, которое пожелаете. Определяется опытным путем, если не знаете что ставить, оставьте как есть. |
Если ресурсов много а сайт маленький - установите 0xffffffff. Этим Вы отключите очистку кеша. |
Установка OpenFileInCache - количество хэндлов в кэшэ.По умолчанию: 1000 на каждые 32MB физической памяти |
Используйте Regedt32, HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Services\ InetInfo\ Parameters. Добавьте value OpenFileInCache если оно отсутствует. Установите величину исходя из количества памяти. |
Большие статичные сайты могут резко поднять производительность увеличивая количество хэндлов в кэше. В этом случае обращение к файлам будет производиться не на винчестера а непосредственно к файлам в памяти компьютера. |
Оптимизация ASP |
Установите Processor ThreadMax на минимум. (по умолчанию - 30) |
Используйте Regedt32, HKEY_LOCAL_MACHINE\ SYSTEM \CurrentControlSet\ Services \W3SVC \ASP\Parameters. Добавьте ProcessorThreadMax Необходимо контролировать по монитору производительность IIS. Если при уменьшении величины ProcessorThreadMax производительность понизится - восстановите исходные параметры. |
Перераспределение процессов в мультипроцессорных системах сбалансирует нагрузку. Хорошо написанные скрипты ASP используют многопоточность. |
Установите в AspScriptEngine CacheMax значение Processor ThreadMax, соответственно количеству процессоров в системе (умножить исходное значение) По умолчанию: 30 |
Скрипты для изменения настроек в IIS4 хранятся в metabase. Путь: /System32/ inetsrv/ adminisamples. Файл adsutil.vbs |
Данные настройки позволять енжине наиболее эффективно кэшировать скрипт - файлы. |
Включите буферизацию для приложений ASP. |
Microsoft Management Console -> Web sites (virtual servers) ->Right-click -> properties -> Performance -> Home/Virtual Directory property -> Configuration button ->App Options property -> Enable Buffering option. |
Установка этой опции буферизует вывод ASP на браузер. Это позволяет серверу передавать полный ответ в контексте задачи а не порцию обработанных данных. |
Минимизируйте значение Session Timeout |
Microsoft Management Console -> Web sites (virtual servers) ->Right-click -> properties |
Экспериментальным путем выберите значение. У меня - 180 |
Примечание.
Все значения - "DWORD".
Высокий ObjectCacheTTL работает лучше всего для узлов с маленьким числом "популярных" файлов. Если. Если число часто требуемых файлов большое, высокий ObjectCacheTTL не поможет. IIS будет стараться оставить в кеше большее количество файлов и, в итоге, кэш будет заполнен,что замедлит открывание файлов. Установка высокого TTL полезна только в том случае, когда файлы многократно используются в пределах TTL периода. Используйте параметр OpenFilesInCache, чтобы ограничить число открытых файлов .
Если Вы будете использовать лог - файл:
- размещайте его на самом скоростном устройстве
- ИМХО правильней сбрасывать логи в базу данных - в последствии легче анализировать (поля базы данных описаны в дакументации на IIS и даже есть текстовый файл с телом SQL - запроса для создания необходимой таблицы).
Базы данных.
Настройка базы данных на максимальную производительность хорошо описана здесь , а также здесь и здесь. Прежде чем приступить к оптимизации скорости доступа к базе нормализуйте саму базу данных. Устанавливайте базы на отдельные винчестеры и не размещайте базы данных в пределах root каталогов. Для обращения к базе используется ODBC, и нет необходимости выставлять на всеобщее обозрение файл с базой, размещая его в расшаренном каталоге (утащат :-))). Используйте высокопроизводительные базы данных. На пример чат Samara Pub использует Oracle, www.actiweserverpages.com - SQL. Для простых задач и не шибко больших объемов - достаточно Access.
4 Удаленное управление и администрирование WWW сервера.
Сервер установлен, теперь стоит позаботиться об удаленном управлении Вашим сервером.
Нам необходимо удаленно:
- Администрировать NT4;
- Администрировать WWW server.;
- Управлять удаленно базами данных;
- Осуществлять "закачку" информации на сайт и в базы;
- Управлять файлами и каталогами;
- Создавать и изменять записи в рег - файле;
- Запускать DOS и WIN32 приложения.
В итоге, у провайдера можно будет появиться ОДИН раз - установить компьютер, причем без монитора и клавиатуры, пускай себе "жужжит" :-)
Первые два пункта легко осуществимы.У IIS 4.0 в комплекте поставки имеется HTML версия Администратора.Она позволяет удаленно администрировать WWW сайт.
Для администрирования NT4 нам понадобится другой администратор - Web Administrator 2.0 for Windows NT Server
С его помощью можно:
- Удаленно перезагружать компьютер
- Управлять бюджетами пользователей
- Назначать премиссии для файлов и каталогов
- Управлять процессами на сервере и менять их приоритеты
- Просмотреть лог-файлы
- Получать статистику о работе системы.
Штука серьезная и в хозяйстве нужная. Внимательно прочитайте документацию, особое внимание уделите секретности и правам доступа к административным сайтам.
Закачка информации на WWW - сайт.
ИМХО - лучше FAR ничего не найти. Из альтернатив - фирменные средства от Microsoft. Web Publishing Wizard и Front Page 98.
FP98 можно ругать, можно им не пользоваться вовсе, но для оперативного управления и размещения информации на сайте пакет удобен, особенно, если Вы - начинающий. В состав FP-98 включен пакет FP Administrator Form. C его помощью можно создавать и администрировать сайты и страницы, созданные непосредственно в FP98.
FP98 я описывать не буду, читайте хелп.
Еще один хороший инструмент - Fusion. Причем, производители бесплатно рассылают CD-ROM с программой, "на посмотреть".
На использования FAR для закачки данных на сайт остановлюсь подробней.
Использовать его следует совместно с IIS Администратором.
Для закачки необходимо:
- Создать новый каталог FTP или новый FTP сайт. (В Администраторе IIS)
- Отобразить на него Ваш wwwroot каталог, или каталог в который будем закачивать файлы, разрешить запись в этот каталог, (снять галочку с опции FTP "anonimous only"). После сохранения этот каталог будет доступен для записи.
Не оставляйте по окончании работы FTP сайты открытыми, удалите их, и не забудьте восстановить анонимный доступ на Ваш основной FTP сайт.
Для удаленного управления базами данных, и удаленного запуска программ так же будем использовать ASP. Вот тут Вы можете скачать специальный пак в котором реализованы эти функции управления.
Вот пожалуй и все. Чаще меняйте пароли. Удачи
Вам!
Copyright (c) 1998 FreeShoots