Данная статья предназначена начинающим (вероятно) web-мастерам (будь то дизайнеры, программисты на Perl, или SQL), желающим творить на домашнем компьютере без подключения к Интернету. И для максимального приближения условий к боевым им необходимо установить и настроить соответствующий набор программ и серверов.
Для кодеров/дизайнеров вполне достаточно только сервера (а без него невозможно работать с SSI, и использовать абсолютные адреса).
Для программистов: сервера и интерпретатора языка Perl (зачем вам CGI? Естественно для динамического генерирования содержимого сайта. В ручную создавать сотни и тысячи страниц конечно можно (с точки зрения индексации поисковиками это даже лучше), но что если вы хотите сортировать материалы, или выдавать их на одной странице по разному, в зависимости от потребностей пользователя?).
Для программистов, работающих с MySql соответственно еще и MySql установить не плохо (А это нужно уже тем, кого не устраивают текстовые или стандартные perl базы данных. Тем, кто хочет быстро и надежно работать с большим (в основном количественно) объемом данных, быстро осуществлять поиск и сортировку данных (по сравнению со стандартными базами Perl разница в скорости составляет несколько порядков). Всем вам я и советую изучить SQL. Если опасаетесь, что будет сложно, то сообщаю - говорить на уровне "SELECT то-то FROM оттуда-то WHERE как-то GROUP BY этак" вы сможете в первый же день.).
Выбор OS
Конечно же в идеале у вас должна быть в точности та же операционка, что и у хостера (та же версия, тот же софт).
Так как это обычно затруднительно, то я советую выделить на жестком диске пару гигабайт под Linux раздел и в разработке (или по крайней мере при тестировании) использовать именно его. Честно говоря я не понимаю людей, которые умудряются жить с одной операционкой, у меня их кстати 6 - Linux Mandrake (свеженький - его я советую тем windows-пользователям, кто только сейчас решил перейти на Linux платформу - тут вам и графическая установка, и графический интерфейс (как правило работающий сразу и без глюков), и вообще Linux на мой взгляд дружелюбнее UNIX-ов), Free-BSD 4.3 (вот ее для начинающих я не посоветую - в один прекрасный день эта [censored] затерла мне таблицу разделов на основном диске (а вот тот диск, что ей на растерзание отдал и не тронула), но в общем операционка весьма своеобразная и приятная), и четыре OS Windows (одна для работы, одна для игр, одна для тестов, и одна резервная).
Все они прекрасно уживаются у меня на 2-х винтах.
Вообще же LINUX систему я советую каждому разработчику, особенно ежели он пишет на языке PERL.
Установка TCP/IP
Данный раздел предназначен для возможного (хоть и маловероятного) случая, когда на вашем компьютере нет даже сетевой карты (да и сети соответственно). А что? У меня не так уж и давно была именно такая ситуация - сайт на пару сотен народу в сутки, рассылка на несколько тысяч человек, и без сетевухи, интернета и т.д. (инет был вне дома в двух местах бесплатно).
Ежели у вас ОС LINUX, то протокол уже видимо установлен, единственно, что вам возможно требуется, это разве что настроить кольцевой интерфейс командой ifconfig lo 127.0.0.1 , дабы связать машину с самой собой.
Если все еще есть проблемы с сетью, то RTFM NET-3-HOWTO до просветления.
Пользователей же ОС Windows читать FM увы не пошлешь, посему расскажу подробнее.
Если вы счастливый (конечно же в кавычках, но не в данном контексте) обладатель Окон семейства девяностых, то протокол устанавливается просто: Панель управления->Сеть->Протокол->Установить->TCP->OK. Все.
Для пользователей же NT будет чуть сложнее (не забываем, что сетевой карты вроде как нет - с ней и в NT проблем не будет).
Сейчас я сообщу наиболее простой (но не наиболее оптимальный, или правильный) на мой взгляд (знаете лучше - пишите) способ:
Панель управления->Службы - запоминаем все службы, что в столбце запуск имеют "Автомат".
Панель управления->Сеть->Отказываемся установить ее, если предложат->Службы->Добавить->Служба RAS->Добавляем устройство X25->Например первое в списке->Смотрим на вкладке протоколы появился ли TCP/IP и установлена ли на него привязка. Если нет - удаляем уср-во X25 и устанавливаем другое.
Панель управления->Службы - вспоминаем все службы, что в столбце запуск имели "Автомат". Те, что только что появились изменяем на "Вручную", или вовсе "Запретить".
Протокол установлен.
Установка Apache
Загружаем дистрибутив например с www.apache.org или apache.lexa.ru. Запускаем apache_1_3_12_win32.exe (или какой там у вас), если устанавливаем в NT, то после установки инсталлируем его как сервис ( команда Apache.exe -i ).
Открываем файл conf/httpd.conf (основной файл конфигурации Апача, если я дальше буду говорить "пропишем то-то в конфиге", то я имею в виду именно этот файл).
Знакомы с Ангельским - читаем, понимаем, исправляем по себе. Иначе же прописываем путь к корневому каталогу документации (DocumentRoot "Диск:\путь"), устанавливаем для него права. Для начала оставьте:
<Directory />
Options Indexes FollowSymLinks
MultiViews ExecCGI Includes
AllowOverride None
Order allow,deny
Allow from all
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
</Directory>
Совершенно аналогично можете настроить параметры любого (из доступных серверу) каталога, например:
<Directory I:/WEBSite/>
а тут так-же
</Directory>
Дописываем (если еще нет) строки:
Для поддержки SSI в файлах с расширением shtml:
AddType text/html .shtml
AddHandler server-parsed .shtml
Для поддержки скриптов:
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
Теперь оттестируем. А так как лучше всего учится на реальных примерах, то вот:
Исходные данные - есть копия сайтика www.citforum.ru (около сотни мегабайт), лежит по адресу I:\www.citforum.ru.
Хочется, чтобы сайт запускался с локального винта при вводе в броузер строки www.citforum.ru.
Правим файл /etc/hosts (это в Юнихах, в НТ же он лежит у меня в E:\WINNT\system32\drivers\etc\HOSTS), изменяем строку
127.0.0.1 localhost
на
127.0.0.1 localhost www.citforum.ru
Это мы зарегистрировали еще одно имя для локальной машины, теперь надо чтобы сервер это понял.
Дописываем в конец конфига строки:
<VirtualHost www.citforum.ru>
DocumentRoot I:/www.citforum.ru/
</VirtualHost>
Проверяем наличие строки
NameVirtualHost 127.0.0.1
Перезапускаем Апач (возможно после перезагрузки). Открываем броузер, набираем www.citforum.ru, и...
Невозможно отобразить страницу http://www.linkexchange.ru/cgi-bin/erle.cgi?12739?2511238
Увы - закачан был только сайт, а не реклама, а [censored] броузер MSIE поспешил обрадовать меня сообщением, что ему не удается загрузить баннер (связи с интернетом нет), без которого мы (по мнению фирмы MicroSoft) счастья в этой жизни не увидим.
Открываем FAR->S&R Plugin->Поиск c регулярными выражениями строки "" и замена ее на "" по всем файлам CitForum`а. Набираем www.citforum.ru опять и вот наконец то все в порядке...
Установка интерпретатора языка Perl
В UNIX системах Perl установлен изначально теперь практически всегда.
Для Windows же пользователей я советую загрузить последнюю версию ActiveState Perl с сайта www.activestate.com. Оттуда же (а не со SPAN) загружайте и дополнительные модули (например, если вы собираетесь работать с MySQL, то я рекомендую загрузить и установить (командой ppm имя_пакета) модуль DBI::MySql)
Распаковываем ActivePerl.zip (если вы загрузили в ZIP-архиве а не в MSI) куда желаете, запускаем install.bat (соглашаемся на все для начала).
Тестируем:
Набираем файл test.pl
#!perl.exe
print "HELLO WORD";
Запускаем его командой perl test.pl, получаем строку HELLO WORD. Радуемся.
Теперь надо заставить Апач обрабатывать CGI сценарии на этом (великолепном) языке.
Набираем файл test.cgi
#!perl.exe
print "Content-type: text/html\n\n";
print "HELLO WORD";
Кладем его в доступный серверу каталог (для которого в опциях есть атрибут ExecCGI), набираем в броузере его адрес (например mybestsite.com/test.cgi), и наблюдаем строку HELLO WORD.
Обращаю внимание на первую строку файла (#!perl.exe). Она срабатывает, если в переменной окружения PATCH прописан путь к программе perl.exe, тогда можно в общем писать даже #!perl.
Если путь не прописан, то придется писать что-то вроде #!E:\Program Files\ActivePerl\bin\perl.exe.
Все это не особо интересно, пока вы не отправляете скрипты вашему хостеру. А у того вероятно UNIX. А в UNIX путь к интерпретатору обычно что-то типа /usr/local/bin/perl.
Что ж, каждый раз перед отправкой изменять? Конечно, и этому горю можно помочь.
Дописываем в конфиг Апачу строку
ScriptInterpreterSource registry
Она приказывает серверу искать путь к интерпретатору не в первой строке файла, по ассоциации на расширение файла в реестре.
Осталось только эту ассоциацию произвести:
Проще всего было бы напрямую поправить реестр, ну да ладно - Проводник->Вид->Параметры->Типы Файлов->Добавить->Расширение cgi, метод по умолчанию open программа где:\там она у вас\perl.exe->Оки.
Теперь первой строкой скрипта можете писать то, на чем настаивает хостер (в моем случае это #!/usr/bin/perl).
Заодно протестируем и SSI:
Создаем файл test.shtml в каталоге, где есть уже test.cgi в нем пишем <!--#include virtual="test.cgi"--> и смотрим через сервер и броузер.
Таким незамысловатым образом вы сможете вставлять в свои страницы результаты работы скриптов.
Если же указанный в параметре virtual скрипт не будет найден (или не отработается без ошибок) вам будет выдано грозное:
[an error occurred while processing this directive]
потенциальное наличие чего на своем сайте мало кому может понравится. Это не сложно исправить добавив в начале страницы строку
<!--#config errmsg ="<p align-'center'>Нуу блин опять! - если не в лом <a href='mailto:мое@мыло.тут'>напишите мне</a> о том где вы это увидели"--> или же можно просто <!--#config errmsg =""-->.
Установка MySql
Загружаем дистрибутив базы с сервера www.mysql.com.
К сожалению, windows версия mysql распространяется как SHAREWARE. Разработчики объясняют это тем, что и сама OS Windows не бесплатна (типа привыкайте платить за софт начиная с установки системы), не бесплатны и средства разработки, да и вообще писать под нее гораздо сложнее ( и соответственно дороже ), чем под *NIXы.
НО. Единственная разница между платной и бесплатной (кстати для студентов или для личного использования бесплатны все версии) версией состоит в ее несколько более медленной работе, что в домашних условиях заметить практически невозможно.
Устанавливаем его в C:\MySql, иначе придется создать файл c:\my.cnf со строкой
[mysqld]
basedir=E:/installation-path/
Для регистрации MySql сервера аки сервис наберите bin\mysqld-shareware --install
Все.
Для теста запустим bin/mysql.exe
Наберем show databases; для просмотра доступных баз. Должны быть хотя бы MySql и test