УСТАНОВКА APACHE НА ДОМАШНИЙ КОМПЬЮТЕР С WINDOWS
Часть 1

ЗАЧЕМ НУЖНО УСТАНАВЛИВАТЬ APACHE?

Спросите, зачем вам Apache и почему это его надо ставить именно под Windows? Ну, первый вопрос для вас, наверное, не стоит, коли вы читаете эту статью. Вопрос - почему под Windows?

Такая необходимость может появиться в жизни не один раз. Вы можете иметь сайт на сервере у своего провайдера, куда вы закачиваете страницы и скрипты по модему, борясь с многочисленными Internal Server Error'ами, выползающими неизвестно откуда. Конечно, удобнее выяснять причину очередной "Error 500" на домашней копии своего сайта, а не в интернете, занимая телефон и тратя уйму денег, но при этом у вас может не хватать храбрости (или дури в голове - это как посмотреть) поставить Linux.

Вам также может потребоваться организовать внутрифирменный вебсервер для хранения общей базы данных, календарей и записных книжек ваших коллег, но вы связаны тем, что ваш сервер работает под NT, и вы понимаете, что Internet Information Server (IIS) от Microsoft бедному серверу уже не потянуть. Причин может быть множество, при этом установка Apache под Windows может быть именно тем решением, которое вам необходимо.

Вебсервер под Windows - наилучший способ отладить сайт без необходимости подключаться к интернету, покидать привычное окружение и обучаться тонкостям Unix-платформ (всё равно вам их не освоить, да в нашем случае это не нужно - запустить бы вебсервер, и того хватит). Шевелиться всё будет не так быстро, как под Unix, но это и не требуется. А вот надёжность получившейся системы, если работать у вас всё будет под NT, будет уж никак не ниже.

Перед тем, как мы начнём, нужно будет сделать несколько оговорок, чтобы не вляпаться затем во множество проблем.

ПУТИ К ПРОГРАММАМ ПОД WINDOWS И UNIX

Одним из самых важных требований, которые бы хотелось выполнить, остаётся проблема совместимости ваших скриптов с другими серверами. Вы ещё успеете нарадоваться, борясь с разными символами конца строки в Windows, Unix и Macintosh. Проблема состоит в другом.

Типичный скрипт на Perl

#!/usr/bin/perl
print "Hello!";

для того, чтобы запустить под Windows, по идее, нужно переписать так:


#!c:/program files/perl/perl.exe
print "Hello!";

Если скриптов у вас всего три штуки, то с этим можно смириться. Но если их больше, проблему нужно будет решать радикально. При этом самым правильным выходом было бы имитировать пути типичного Unix-компьютера, чтобы проблем с путями не возникало бы в принципе.

Есть решение, которое позволяет использовать пути к основным программам без изменений. Если вы установите все компоненты вебсервера на один диск (например, C:\) в такие же папки, а точнее, Perl - в c:\usr\bin\perl.exe, а Sendmail - в c:\usr\sbin\sendmail.exe и так далее, то всё будет работать безо всяких изменений. Perl-скрипты, в которых в первой строке указано /usr/bin/perl, спокойно найдут его в c:\usr\bin\perl.exe, и так далее. Система просто проигнорирует то, что косые черты-разделители (слэши), направлены не в ту сторону и нет буквы, обозначающий диск.

Единственное ограничение - всё придётся устанавливать на один диск, на котором будет достаточно места. Это может быть и не диск С: - у меня, например, вебсервер работает на диске E: Неплохо бы было также использовать тот диск, на котором используется не FAT, а NTFS. Но если вы используете не Windows NT, выбора у вас нет. В общем, найдите диск, на котором будет доступно как минимум мегабайт пятьдесят и устанавливайте всё на него. Здесь же будет описываться установка на диск С:

УСТАНОВКА PERL

Версию Perl, портированную на Windows, разработала фирма ActiveState. На странице http://aspn.activestate.com/ASPN/Downloads/ActivePerl/ можно найти установочные пакеты для разных версий Windows.

Здесь описывается установка Perl 5.6.0.623 - учитывайте, что установка более новых версий может несколько отличаться от описываемой.

Пакет установки создан в формате Windows Installer - таком же, какой использует Microsoft Office 2000 и Internet Explorer 5. Поэтому вам надо будет скачать установочный файл с расширением *.msi (ссылка на этот файл назвается "Windows MSI" - она обычно первая в списке, а дальше идут ссылки на версии для разных вариантов Linux) и Windows Installer 1.1 для Windows 9x и NT, чтобы с этим файлом работать. Если вы уже устанавливали Office 2000 или Windows 2000, Installer у вас наверняка уже есть (в этом можно убедиться, поискав папку Installer в каталоге Windows). Хотя скачать его с сайта на всякий случай не мешает - вдруг имеющаяся у вас версия устарела?

Возможно, вам придётся установить пару-тройку обновлений и заплаток к операционной системе, например, обновление DCOM, если вы пользуетесь Windows 95 (их список перечислен на сайте) - в случае с NT или Windows 2000 ничего такого не требуется.

После установки Windows Installer щелкните по скачанному файлу *.msi. Появится такая картинка:

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

На следующем этапе нужно указать папку для установки. Укажите c:\usr\ (или какой там вы выбрали диск). Не c:\perl или c:\Program Files\Perl!!! В процессе установки в папке c:\usr\ будет создана подпапка bin, в которой расположится perl.exe - что даст нам необходимый путь - /usr/bin/perl - который указывается в заголовке каждого Perl-скрипта. Дальше менять ничего не нужно - просто жмите Next.

Когда будут копироваться файлы, отключите антивирус. Какой-нибудь AVP Monitor может замедлить копирование раза в три. Никакой опасности в этом нет - ведь дистрибутив уже был проверен при скачивании из Internet - так зачем его проверять ещё раз?

Установленный perl.exe можно использовать для проверки правильности скриптов. Например, набрав в окне DOS команду

C:\usr\bin\Perl.exe -c c:\web\myscript.cgi

вы либо получите сообщение "myscript.cgi - Syntax is OK" либо объяснение, в каком месте вы допустили ошибку. Если бы вы выгрузили скрипт на сайт в таком виде, вы бы получили сообщение об "Error 500" безо всяких дополнительных пояснений - а так вы знаете, где ошибка.

УСТАНОВКА МОДУЛЕЙ PERL

Для полного счастья нам не хватает установить модули, расширяющие функциональность Perl. Совершенно необходимы модули для работы с MySQL, могут потребоваться модули для работы с базами данных под Windows (типа Microsoft Access) и, возможно, почтой. Если потребуется, можно будет поставить и модули для работы с XML и другие излишества - но это уже по вашему вкусу.

Скачайте файлы

Распакуйте их оба в в какую-нибудь папку, например, c:\temp\modules\. Откройте окно DOS, перейдите к папке c:\usr\bin и затем впечатайте команду ppm.bat. Когда увидите приглашение вида:

c:\temp\modules> c:\usr\bin\ppm.bat

PPM interactive shell (2.1.1) - type 'help' for available commands.
PPM>

впечатайте команду install c:\temp\modules\DBI.ppd и подтвердите ваше желание установить модуль нажатием кнопки "Y". Подождите, пока пройдёт копирование и установка файлов. Когда всё закончится, впечатайте команду install c:\temp\modules\DBD-MySQL.ppd и повторите последовательность действий. Когда и эта команда завершится, закройте PPM, впечатав команду quit, а затем закройте окно DOS. Папку c:\temp\modules\ теперь можно стереть.

Если вы серьёзно занимаетесь Perl, вам могут быть интересны и другие модули с сайта ActiveState. Так, вам может понадобиться модуль для работы с Microsoft Access и другими базами данных, типа SPSS, поддерживающими стандарт ODBC - DBD-ODBC.zip. Если вы хотите с удобством отправлять присьма с аттачментами из скриптов, вам может понадобиться MIME-Lite.zip. В общем, разбирайтесь сами и устанавливайте то, что вам нужно - процесс установки модулей я вам уже описал.

УСТАНОВКА PHP ВЕРСИИ 4.0.3PL1

Установка PHP проста, как апельсин. Вы скачиваете дистрибутив с российского “зеркала” сайта php.net - http://ru.php.net/downloads.php - (с него качать быстрее, чем с http://www.php.net/downloads.php) и устанавливаете PHP к себе на компьютер, как любую обыкновенную программу.

Постоянно выходят новые версии, поэтому я не привожу здесь точную ссылку. Последнюю версию вы всегда сможете отыскать в разделе Latest version of PHP4: Win32 Binaries. Только не скачивайте Source Code - берите уже готовый к установке дистрибутив. На сайте обычно выкладывается две версии программы установки - одна обычная, запакованная в zip-архив, вторая - использующая программу-инсталлятор. Её я вам и рекомендую, тем более что и размер у неё вчетверо меньше, чем у zip'ованной. Хотя если вам очень нужны расширения (extensions) для PHP, качайте zip (но устанавливать его придётся ручками).


При установке согласитесь с условиями лицензии, и на втором шаге выберите "Advanced" тип установки.

Установщик предлагает по умолчанию папку c:\php - в неё и устанавливайте. Он предложит выбрать размещение папок "Uploads" и "Session data" - оставьте те, что вам предложили. Дальше вам нужно будет указать ваш SMTP-сервер и почтовый адрес. Имя сервера оставьте неизменным - "localhost" или же укажите SMTP-сервер своего провайдера - без разницы, а адрес "me@localhost.com" замените на ваш почтовый адрес.

Когда вам предложат выбрать название используемого вебсервера, нужно будет указать "None or Other server". Apache для работы с PHP4 мы настроим чуть попозже сами. Установщик также спросит, к каким расширениям файлов ему привязять вызов PHP4 - укажите все три, - "*.php", "*.php3" и "*.phtml".

После установки вам нужно будет скопировать из c:\php файл php4ts.dll в папку c:\windows\system (или c:\winnt\system32, если у вас NT). Если php4ts.dll там уже есть, оставьте имеющийся файл.

УСТАНОВКА SENDMAIL

Из всего описываемого здесь единственной небесплатной вещью является лишь Sendmail. Windows-версия этой программы примерно баксов за двадцать предлагается всем на http://www.indigostar.com/sendmail.htm, где можно взять тридцатидневную полнофункциональную shareware-версию. Здесь будет рассказываться именно о ней.

Если вас не будут мучать угрызения совести от использования пиратского софта, в конце этой главы вы сможете прочитать про то, как снять с Sendmail защиту.

Кстати, портированную с Unix на Windows NT версию Sendmail (Sendmail.8.6.9.NT) разработала и Microsoft, файл с ней можно взять с ftp://ftp.microsoft.com/developr/drg/unix-to-windows/ports/sendmail/. Но мне её запустить не удалось - если получится у вас, напишите мне и расскажите, что такое вы вокруг неё станцевали, что она у вас заработала. Мне будет очень интересно - честное слово! Также в сети есть бесплатный аналог Sendmail под названием Blat, но он нам не подходит - его синтаксис отличается от Sendmail. Многообещающая версия под названием wSendmail от автора суперзнаменитого War FTP Daemon есть на сайте http://www.eu.jgaa.com/downloadpage.htm, но у неё та же проблема - отличающийся от Unix'ового Sendmail'a синтаксис вызова. Впрочем, исходники на C++ прилагаются - желающие могут в свободное время поковыряться. А ещё одну платную версию Sendmail можно найти на сайте http://www.metainfo.com/.

Sendmail нужен вашим скриптам, чтобы не вылетать с сообщениями об ошибке, когда они не найдут его в /usr/sbin/sendmail, a вам он потребуется, чтобы видеть, способен ли ваш скрипт что-то отправлять, и будет ли он работоспособен после выгрузки на сайт в интернете. Вообще говоря, вам совсем не нужно, чтобы скрипт что-то отсылал по почте, когда вы его тестируете на домашнем компьютере - вы ведь не будете тестировать свой домашний сайт, сидя в онлайне, и Sendmail'у до SMTP-сервера всё равно не достучаться. Поэтому главной пользой от деятельности этой программы будет sendmail.log, который программа создаёт после запуска. Из него будет видно, что пытался отправить Sendmail - и пытался ли. Если нет, то у вас появятся вопросы к вашему скрипту.

Sendmail нужно будет установить в папку c:\usr\sbin\. Там после установки поселится файл sendmail.exe, что в результате даст нам необходимый путь /usr/sbin/sendmail.

Для настройки Sendmail служит пункт "Configure Sendmail" в меню "Пуск" Windows в папке, созданной установщиком. Вы можете установить нужные параметры с его помощью, или отредактировать c:\usr\sbin\sendmail.ini вручную, изменив его следующим образом:

[OPTIONS]
;
; Адрес почтового сервера. Укажите здесь "localhost"
; или "127.0.0.1" - адрес вашего компьютера
;
; Впрочем, можно указать и SMTP-сервер вашего провайдера
;
MAILSERVER=localhost
;
; Здесь нужно указать адрес отправителя по умолчанию.
;
FROM=ваш@мейл
;
; Порт почтового сервера. Пусть остаётся "25"
;
PORT=25
;
; Интервал между отправками сообщений в секундах.
; Измените со 180 на, например, 3
;
TIMEOUT=3
;
; Регистрационный ключ.
;
REGKEY=none
;
; Адрес по умолчанию для поля "reply-to".
;
REPLYTO=ваш@мейл

Это всё, что требуется для правильной установки Sendmail.

Дальше нужно читать только тем, кого очень беспокоит перспектива расстаться с кровными 20 баксами. Найдите на Crack.ru генератор ключей к Sendmail и сохраните его у себя на диске. К версии 1.15 подходят генераторы и от 1.14, и от предыдущих версий.

Регистрационный ключ в Sendmail привязан к имени вашего компьютера. Чтобы узнать его, вам нужно щёлкнуть правой кнопкой мышки по иконке “Сетевое окружение” ("Network neighborhood") на рабочем столе Windows и, выбрав в выпавшем меню пункт “Свойства” ("Properties"), дождаться появления такого окна:

Запомните имя, присвоенное вашему компьютеру - в моём случае (на иллюстрации) это - "COMPUTER" (правда, я соригинальничал?)

После этого запустите файл tno_s114.exe из архива. Введите имя для регистрации и имя вашего компьютера в соответствующие графы.

Сгенерированный ключ вам нужно будет подставить в sendmail.ini. Вместо

REGKEY=none

у вас получится что-то типа

REGKEY=Имя,Имя_компьютера,12345

Сохраните sendmail.ini и попробуйте запустить sendmail.exe. У вас должно получиться что-то типа

Sendmail for Windows V1.15 at Mon Nov 20 20:00:00 2000
Host name: Имя_компьютера
Licensed to Имя for Имя_компьютера

Надеюсь, что вы понимаете, что использование этого кряка является противозаконным и решение запускать его или нет, целиком и полностью зависит от вашей законопослушности. Если вы хотите вознаградить труды разработчиков, заплатите за Sendmail официально.

УСТАНОВКА MYSQL 3.23.28

MySQL для Windows самой последней версии можно взять с http://www.mysql.com/downloads из раздела “Standard binary (tarball) distributions” (он там болтается в конце списка). Но при этом отдавайте себе отчёт, что самая новая версия может отличаться от описываемой здесь версии 3.23.28?.

Установка этой штуки проста и незатейлива. Программа установки предложит вам выложить все файлы в c:\MySQL\ - так и сделайте. Если вы решите по-другому, придётся изменить довольно много настроек - а оно нам надо? Диск, на который устанавливается программа, тоже значения не имеет. Не будет ничего страшного, если вебсервер вы будете держать на диске Z:, а MySQL будет жить на C:.

После того, как установка закончится, мы начнём разбираться с системой разрешений и управления прав доступом к MySQL. Перво-наперво придумайте себе имя и пароль для доступа. И тот и другой должны состоять из одного слова, записанного латинскими буквами. В дальнейших инструкциях заменяйте слова логин и пароль на выбранные вами. С этой парочкой с MySQL можно будет сделать что угодно, в том числе заставить её откинуть коньки, так что не разбалтывайте их на каждом углу. Хотя что я вам рассказываю - вы сами и без меня знаете.

Затем создайте в меню Пуск Windows папку, назвав её, например, Web. Если вы делите компьютер со своими друзьями/семьёй/сослуживцами, имеет смысл создать эту папку в вашем личном профиле, в папке %UserProfile%\Главное меню\Программы\ - пусть она не мешает другим.

Нам потребуется создать в ней несколько ярлыков. На первых порах - четыре, но потом туда добавится ещё несколько штук. Первым будет ярлык "MySQL - Запуск службы". Присвойте ему команду:

C:\mysql\bin\mysqld-opt.exe -b c:\mysql --log=c:\mysql\bin\mysql.log --log-long-format --standalone

Второму ярлыку, который мы назовём "MySQL - Запуск без защиты", присвойте команду:

C:\mysql\bin\mysqld-opt.exe -b c:\mysql --skip-grant-tables --log=c:\mysql\bin\mysql.log --log-long-format --standalone

Третий ярлык мы назовём "MySQL - Остановка службы". Присвойте ему команду:

C:\MySQL\bin\MySQLadmin.exe -uлогин -pпароль shutdown

Обратите внимание, что перед логином и паролем нет пробела. Не перепутайте, иначе MySQL будет вас далеко посылать матерными словами “Access denied”, даже если пароль (как вы думаете) правилен. Регистр символов тоже имеет значение - “vasya” и “Vasya” различаются!

Затем создайте ярлык "MySQL - Управление". Присвойте ему команду command.com (или cmd.exe, если у вас Windows NT). Не делайте круглые глаза, скоро поймёте, зачем нам DOS. Откройте свойства этого ярлыка и измените его рабочий каталог на c:\MySQL\bin. Если вы в NT, установите размер экранного шрифта "5x12" во вкладке "Шрифт", размеры буфера экрана - 2000 символов в ширину и 500 строк в высоту, а самого окна - 140 на 40 (вкладка "Расположение"). Можно и больше, если размеры монитора и памяти позволяют. Это позволит умещаться на экране даже очень длинным строчкам. Поскольку MySQL может выводить на экран таблицы весьма нехилых габаритов, подстраховаться заранее нелишне.

Иконки всем ярлыкам выберите по вкусу - дайте простор своей фантазии. Лучше сделать их одинаковыми. Можно присвоить этим ярлыкам и какие-нибудь удобные сочетания клавиш.

Теперь пришло время разобраться с установкой прав и разрешений на доступ к MySQL. Запустите её без защиты - это значит, что система безопасности не будет задействована. Давайте расскажем нашей новой знакомой про то, благодаря кому она поселилась на вашем компьютере и кого она должна слушаться, а кому говорить те самые два матерные слова.

Запустите ярлык "MySQL - Управление". В открывшемся окне впечатайте команду MySQL.exe. Вы увидите приветствие вида

C:\MySQL\bin>MySQL.exe
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.23.28-gamma-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer

mysql>

Введите команду "USE mysql;". MySQL ответит вам подтверждением "Database changed".

Теперь введите команду "SELECT * FROM user;". Вы увидите порядочного размера таблицу, которую может изрядно перекосить, если вы не изменили по моему совету размеры окна. То что вы видите - таблица с перечислением пользователей, которые имеют доступ к системе с обозначением их прав. В этой таблице часто будет мелькать товарищ по фамилии "root" - наша же задача - очистить эту таблицу полностью, и внести туда ваше имя и пароль (те самые, что вы только что придумали). Для этого введите команду

DELETE FROM user;

Повторите команду "SELECT * FROM user;". Вы увидите, что таблица опустела - мы стёрли установки, сделанные по умолчанию.

Теперь занесём ваш логин и пароль в таблицу. Для этого вам придётся ввести такую кошмарную по длине команду:

INSERT INTO user VALUES ('localhost','логин',PASSWORD('пароль'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

Когда вы повторите команду "SELECT * FROM user;", вы увидите, что в таблицу была внесена новая строка с вашим именем в начале и мешаниной символов вместо вашего пароля. Это просходит от того, что пароль по умолчанию шифруется перед помещением в таблицу. Скомандуйте FLUSH PRIVILEGES; и QUIT и выйдите из MySQL Monitor.

Попробуйте снова скомандовать MySQL.exe и вы увидите, что вас больше за просто так не пускают. А вот команда MySQL.exe -uлогин -pпароль сработает. Вот мы и добились, что MySQL слушается вас и только вас.

За сведениями о том, как задавать разрешения на доступ только с определённых адресов и к только определённым таблицам, обращайтесь к руководству по MySQL, а мне позвольте на этом закончить. Все дальнейшие знания по MySQL извольте приобретать сами.

MySQL установлена на ваш компьютер и прекрасно работает. Остановите её, кликнув по соответствующей иконке - пусть пока отдохнёт.

Кстати, никогда не забывайте правильно выключать MySQL! Это может привести к таким же последствиям, как выключение компьютера Reset'ом - вы можете потерять важные данные, грохнув свои базы. Проблема, правда, в том, что работающая MySQL не открывает никаких окон и от того её не видно. Именно поэтому про неё легко забыть. Обнаружить её, правда, просто - проверьте, нет ли в списке выполняемых на компьютере процессов строки MySQLd-opt.exe.

Да, возможно что после, когда вы поставите Apache, вам захочется, чтобы MySQL запускалась бы одновременно с вебсервером. Это имеет смысл, если вы работаете с базами данных постоянно. Тогда вам имеет резон совместить вызов и остановку Apache с MySQL в bat-файле. А если MySQL для вас не "предмет первой необходимости", запускайте её вручную, только в случае надобности.

УСТАНОВКА APACHE 1.3.14

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

Качать его нужно с http://www.apache.org/. Каждый файл там сопровождается цифровой подписью PGP с аналогичным именем файла, но другим расширением. Не спутайте собственно файл и удостоверяющую его подпись. Текущая версия - 1.3.14, но к тому моменту, когда вы будете читать это, могут появиться и более свежие релизы. Хотя многие серверы работают и на версиях типа 1.3.6, и ничего - поэтому если у вас имеется более старая версия, можете особо не гнаться за самой свежей.

Если у вас установлены Windows 95, вам может понадобиться обновление Winsock2. Если у вас NT, требуется иметь как минимум третий сервис-пак (а лучше пятый или шестой).

Запустите установщик и ознакомьтесь с лицензией.

После этого вас попросят указать папку для установки. По умолчанию это c:\Program Files\Apache Group\Apache\. Выберите "Typical" вариант установки - на диск при этом будет установлен Apache вместе с документацией, а исходные тексты - нет (а на кой ляд они вам сдались?)

После установка скачайте Apache Manager с моего сайта, где он располагается по адресу http://userguide.webservis.ru/examples/apmgr.zip. Не побывавший в моих кривых руках англоязычный оригинал можно взять с http://brian.threadnet.com/. (В этом варианте под NT глючит иконка и есть ещё пара неприятностей - я просил Брайана их поправить, заодно добавив вызов MySQL вместе с Apache, но он всё никак не соберётся). Распакуйте содержимое в ту же папку, где расположился только что установленный apache.exe.

Создайте в папке "Автозагрузка" в меню "Пуск" ярлык "Apache Manager" и присвойте ему команду

c:\Program Files\Apache Group\Apache\apmgr.exe -t 1

Apache Manager позволит запускать и останавливать вебсервер одним кликом мышки по иконке на Панели задач (той, что рядом с часами в правом нижнем углу экрана).

Размеры у Manager'а смехотворные - тридцать килобайт, - так что скорости вашего компьютера он нисколько не повредит.

Если вы не захотите использовать Apache Manager, вы можете использовать для запуска, остановка и перезагрузки Apache отдельные команды, каждую из которых вы можете привязать к отдельному ярлыку (shortcut). Так, для запуска Apache используется

c:\Program Files\Apache Group\Apache\apache.exe -k start

для перезапуска -

c:\Program Files\Apache Group\Apache\apache.exe -k restart

а для остановки -

c:\Program Files\Apache Group\Apache\apache.exe -k shutdown

Если вы таки создадите эти ярлыки, киньте их в то же самое меню, где уже живёт MySQL.

После запуска таким способом Apache открывает отдельное окно, похожее на окно DOS, с текстом Apache/1.3.14 (Win32) running... Не закрывайте его всё время, пока вам нужен вебсервер, и останавливайте программу только командой закрытия apache.exe -k shutdown.

У вас постоянно будет желание прикрыть мешающееся под руками окошко, поэтому в свойствах ярлыка укажите такое расположение окна, чтобы оно ушло за пределы рабочего стола. Или живите проще - поставьте Apache Manager, и не напрягайтесь..

Теперь откройте в Блокноте (Notepad) файл c:\Program Files\Apache Group\Apache\conf\httpd.conf - это основной файл с настройками Apache. Сотрите всё его содержимое и замените его следующим текстом (проследите, чтобы строки, отмеченные красным, совпадали с параметрами вашей системы. Если вы использовали нестандартные директории, кое-что придётся поменять.)

### Раздел 1: Общие настройки
ServerType standalone
# Основная папка Apache
ServerRoot "c:/Program Files/Apache Group/Apache"
PidFile logs/httpd.pid
ScoreBoardFile logs/apache_status
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MaxRequestsPerChild 0
ThreadsPerChild 50
# Модуль, помечающий выданные файлы
# как устаревшие немедленно после выдачи -
# чтобы не кэшировались в браузере
LoadModule expires_module modules/ApacheModuleExpires.dll
ExpiresActive On
ExpiresByType text/html "access plus 5 seconds"
ExpiresByType text/plain "access plus 5 seconds"
ExpiresByType image/gif "access plus 5 seconds"
ExpiresByType image/jpeg "access plus 5 seconds"
ExpiresByType text/css "access plus 5 seconds"
ExpiresByType application/x-javascript "access plus 5 seconds"
ExpiresByType application/x-httpd-php "access plus 5 seconds"
ExpiresByType application/x-httpd-php-source "access plus 5 seconds"
# Это полезно, когда вы используете Apache для
# тестирования сайта. Иначе выкиньте этот блок на фиг.
# Проверка правильности URL'ов 'на лету'
LoadModule speling_module modules/ApacheModuleSpeling.dll
CheckSpelling On
# Получение информации о состоянии Apache через браузер
# Наберите http://вашсервер/server-status
# и/или http://вашсервер/server-info и радуйтесь
LoadModule status_module modules/ApacheModuleStatus.dll
ExtendedStatus On
LoadModule info_module modules/ApacheModuleInfo.dll
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from all
</Location>
<Location /server-info>
SetHandler server-info
Order allow,deny
Allow from all
</Location>

### Раздел 2: Конфигурация основного сервера
# Какой порт слушаем?
Port 80
# Email админа подставляется в сообщения об ошибках
ServerAdmin your@email.address.com
# Какой адрес опекаем?
ServerName localhost
# Папка, в которой хранятся страницы сайта
# http://127.0.0.1/ (он же localhost)
DocumentRoot "c:/Program Files/Apache Group/Apache/htdocs"
# Параметры папок 'по умолчанию'
<Directory />
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
</Directory>
# Параметры папки htdocs
<Directory "c:/Program Files/Apache Group/Apache/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
UserDir "c:/Program Files/Apache Group/Apache/users/"
# Имена файлов по умолчанию
DirectoryIndex index.shtml index.php index.html index.htm
# Обработка файлов .haccess
AccessFileName .htaccess
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
UseCanonicalName On
TypesConfig conf/mime.types
DefaultType text/plain
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
HostnameLookups Off
# Формат лог-файла
ErrorLog logs/error.log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access.log common
ServerSignature EMail
# Основная папка Цги-бин
ScriptAlias /cgi-bin/ "c:/Program Files/Apache Group/Apache/cgi-bin/"
<Directory "c:/Program Files/Apache Group/Apache/cgi-bin">
AllowOverride None
Options ExecCGI
</Directory>
# А где у нас живёт ПХП?
ScriptAlias /php/ "c:/php/"
<Directory "c:/php">
AllowOverride None
Options ExecCGI
</Directory>
# Файлы с какими расширениями считаются у нас PHP-скриптами?
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
Action application/x-httpd-php /php/php.exe
Action application/x-httpd-php-source /php/php.exe
# И, соответственно, CGI-скриптами?
AddHandler cgi-script .cgi .pl .bat .exe
# В каких файлах обрабатываются SSI-директивы?
AddType text/html .shtml
AddHandler server-parsed .shtml
AddHandler server-parsed .shtm
AddHandler server-parsed .sht
IndexOptions FancyIndexing
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
# Что мы говорим посетителю, ежели у нас Error XXX ?
ErrorDocument 400 "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><body><H1>Apache Error 400:</H1><blockquote><code>Извините, но ваш браузер выдал неполный или ошибочный запрос. Пожалуйста, проверьте правильность работы вашего программного обеспечения.</code></blockquote></body></html>
ErrorDocument 401 "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><body><H1>Apache Error 401:</H1><blockquote><code>Извините, но доступ к странице закрыт. Проверьте правильность ввода имени и пароля.</code></blockquote></body></html>
ErrorDocument 403 "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><body><H1>Apache Error 403:</H1><blockquote><code>Извините, но у вас нет прав для просмотра этой страницы.<br>В доступе отказано.</code></blockquote></body></html>
ErrorDocument 404 "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><body><H1>Apache Error 404:</H1><blockquote><code>Извините, но требуемая страница не найдена на сервере.</code></blockquote></body></html>
ErrorDocument 500 "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><body><H1>Apache Error 500:</H1><blockquote><code>Извините, но при выполнении скрипта сервером произошла ошибка.<br>Попробуйте обратиться к странице позднее.</code></blockquote></body></html>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

### Раздел 3: Виртуальные сервера
# На этом пока остановимся.

РЕДАКТИРОВАНИЕ ФАЙЛА HOSTS

Сначала немного теории, чтобы объяснить, что нам сейчас придётся делать. Я думаю, вам будет проще, если я не просто объясню, какие кнопки нажимать, а расскажу, зачем и для чего именно это делать. Постараюсь, как всегда, обойтись без зауми.

Каждый сервер в Internet имеет свой четырёхзначный номер типа ххх.ххх.ххх.ххх - так называемый IP-адрес. При каждом подключении к сети ваш провайдер выделяет вам один номер из имеющихся у него. За отдельные деньги можно получить постоянный номер.

Кроме того, чтобы избавить всех от кошмара запоминания двенадцатизначных номеров серверов, были придуманы простые для использования буквенные имена типа "www.название.com" - которые, опять же, покупаются за отдельные деньги. Буквенные имена привязываются к IP-адресам регистраторами. Когда ваш браузер печатает в статусной строке "Looking up for domain www.chto-nibud.com.." он ищет IP-адрес, который сопоставлен этому самому www.chto-nibud.com, связывается с ним и выдаёт вам вебстраницу.

IP-адрес состоит из четырёх цифр от 0 до 255, разделённых точками. Зачастую по номеру можно узнать, какой стране и провайдеру он принадлежит. Адреса, начинающиеся с 127.* и 255.*, зарезервированы для специальных целей. Так, пакет, направленный на начинающийся с 255.* адрес, теоретически должен быть разослан всем подключённым к сети машинам. Слава богу, большинство маршрутизаторов такие пакеты уничтожают, не пересылая - а то каждые пять секунд в Интернете находился бы идиот с шилом в одном месте, который ради интереса пихал бы что-нибудь на этот адрес ко всеобщей радости.

А вот адреса, начинающиеся с 127.* всегда указывают на локальный компьютер. Те, в ком есть страсть к экспериментаторству, могут попробовать прямо сейчас сделать ping по любому такому адресу:

C:\> ping 127.1.2.3

Обмен пакетами с 127.1.2.3 по 32 байт:

Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128
Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128
Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128
Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128

Для этого не нужно включать модем или подключаться к локальной сети - все адреса 127.*.*.* - к вашим услугам. То есть мы можем использовать любой из 2553 = 16,5 млн. доступных нам адресов, начинающихся на 127.*, не рискуя занять чей-то чужой номер и не прося ни у кого разрешения.

Наберите в своём браузере адрес http://127.0.0.1/ и вы … ничего не увидите. И это нормально, потому что вы пока не запустили вебсервер на своей машине. Только после его запуска вы увидите не сообщение "Сервер не найден - невозможно отобразить страницу", а страницы своего сайта.

Думаю, вы уже начинаете беситься, думая, какого чёрта меня потянуло делать это лирическое отступление. Ладно, мы уже почти добрались до конца. Как вы поняли, мы будем использовать адреса в диапазоне 127.*.*.* под тестируемые сайты. Если у вас их две штуки, один привяжете к 127.0.0.2, а другой - к 127.0.0.3, если десять - займёте ещё. Вопрос в том, что не очень удобно обращаться к ним по IP-адресам - было бы удобнее использовать буквенные обозначения. Отсюда проблема - как заставить ваш компьютер сопоставить 127.0.0.2 адресу www.mycoolwebsite.ru так, как он сопоставляет IP-адрес 207.46.230.219 имени microsoft.com?

Обычно, когда вы набираете в адресной строке microsoft.com или linux.org.ru, вашему браузеру нужно узнать IP-адрес требуемого сервера. Сначала он ищет его у себя в кэше а затем обращается к DNS-серверу вашего провайдера - а всё это время вы любуетесь на строчку "Поиск узла nnnn..." ("Looking up for domain nnnn..."). Но перед этим происходит ещё один этап - Windows обращается к файлу HOSTS, в котором могут перечисляться сопоставления IP'шников адресам. Этот файл унаследован ещё от старых систем тех времён, когда все компьютеры, входящие в Интернет, можно было перечислить в одном файле. В Windows NT этот файл называется C:\WINNT\system32\drivers\etc\hosts. В Windows 9x его обычно не существует, и для того, чтобы его создать, найдите файл C:\WINDOWS\hosts.sam и скопируйте его в файл C:\WINDOWS\hosts (безо всякого расширения!) Вот как этот файл обычно выглядит:

# Copyright (c) 1993-1995 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows NT.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

127.0.0.1 localhost

Если нужное имя будет найдено там, обращения к DNS не потребуется. Если вы будете заниматься тестированием своего сайта с помощью домашнего вебсервера, в этот момент никто не станет дозваниваться до провайдера, чтобы подключиться к DNS - всё успешно пройдёт и в офлайне.

Предположим, вы собираетесь тестировать на домашнем компьютере сайт http://userguide.webservis.ru/. Откройте файл HOSTS в Блокноте и добавьте в его конец строчку

127.0.0.2 www.вашсайт.вашпровайдер.ru

Одновременно тестируете ещё три сайта? Нет проблем, добавляйте строки

127.0.0.3 www.ещёсайт.вашвторойпровайдер.ru
127.0.0.4 www.ваштретийсайт.вашчетвёртыйпровайдер.ru
127.0.0.5 пятыйсайт.вашзабугорныйпровайдер.com

Теперь все запросы, выдаваемые вашим браузером, адресуются вашему же компьютеру. Закончили тестирование, закачали файлы на сайт и хотите посмотреть, как всё выглядит - удалите ненужную строчку из файла HOSTS и перезапустите браузер (Windows перезагружать не надо). Браузер перестанет обращаться к локальному компьютеру и полезет дозваниваться до вашего Интернет-провайдера. Кстати, удалять ненужную строчку из файла HOSTS насовсем не требуется - добавьте в её начало символ "#" и Windows её проигнорирует.

Да, кстати, всё это открывает ряд возможностей, в том числе и презабавных.

Предположим, вы прикрепите Apache к IP-адресу 127.0.0.2 Добавьте к файлу HOSTS ещё одну строчку:

127.0.0.2 www.microsoft.com

и перезапустите Internet Explorer. Отныне ваш браузер будет считать, что www.microsoft.com живёт по адресу 127.0.0.2 и за страницами на нём будет обращаться не в Редмонд, а на сервер на вашем же компьютере. Быстренько ваяйте страничку с фотографией Большого Билла, вымазанного тортом, закупайтесь пивом и приглашайте друзей - показать, как вы “хакнули” Microsoft.com. Дайте самым недоверчивым самим набрать адрес www.microsoft.com у вас в браузере - пусть сами удостоверятся.

Хотя стоп. Подождите бежать, мы ещё не научились заставлять Apache обслуживать эти самые адреса. Пока он умеет обслуживать только адрес 127.0.0.1, он же localhost - пора научиться, как заставить его работать и с другими.

Да, отдавайте себе отчёт, что все изменения, которые вы вносите в файл HOSTS, касаются только вашей системы. Если вы захотите показать сайт, подключённый, например, к 127.11.22.33, вашему другу, компьютер которого подключён к вашей сети, вам придётся найти в ней свободный “настоящий”, не начинающийся на 127.*, IP адрес, прикрепить сайт к нему и внести изменения в DNS-сервер вашей сети. Но это - тема другого, гораздо более глубокого разговора - если интересно, попросите объяснений у вашего сисадмина - за парой пива за ваш счёт он вам всё расскажет.

ПОДКЛЮЧЕНИЕ САЙТА К APACHE

Теперь мы займёмся подключением к Apache вашего сайта. Расскажу о том, как это делать на примере моего сайта - http://Userguide.webservis.ru/index.shtml.

Когда я регистрировал мой сайт UserGuide.webservis.ru, я получил на сервере в своё распоряжение папку /home/home-webservis/14659/public_html, папка cgi-bin располагалась у меня по адресу /home/home-webservis/14659/public_html/cgi-bin (вебсервер на сайте управляеся связкой Apache и FreeBSD). Поэтому я создал на диске c:\ папку home, в ней - папки /home-webservis/14659/public_html/cgi-bin. В public_html я скопировал все файлы своего сайта, включая скрипты, которые поместились в папку cgi-bin, и непременный файл index.html.

Хотя диск C: у меня не в формате FAT, а в формате NTFS, что позволяет задавать разрешения на доступ к файлам (типа Unix'овского CHMOD 755), никаких разрешений я не менял. Можно было, конечно, оставить “всю полноту полномочий” себе, любимому, а остальным - шиш с маслом, но какой в этом смысл?

Если у вас Windows 9x, то о таких вещах вам не нужно и задумываться - управление доступом к файлам там не реализовано в принципе (ну чего вы хотите от примитивных файловых систем FAT/FAT32?) Просто считайте, что на все файлы установлено разрешение 777, и всё.

После этого я заставил Apache подключить эту папку и использовать её, как корневой каталог моего вебсервера. Для этого я добавил в самый конец файла httpd.conf такой вот фрагмент:

# Домашняя копия сайта Userguide.Webservis.ru
# Копию сайта я привязал к адресу 127.0.0.2
<VirtualHost 127.0.0.2>
    # Имя сервера, с которым в файле HOSTS
    # связан IP-адрес
127.0.0.2
    ServerName userguide.webservis.ru
    # Здесь я указал адрес, выданный мне при регистрации
    ServerAdmin userguide@webservis.ru
    # Параметр DocumentRoot указывает на только что
    # созданную мной папку - отсюда Apache будет брать
    # страницы для выдачи их браузеру.
    # Учитывайте, что папку нужно создать ДО того,
    # как вы прицепите её к Apache. Ещё следите,
    # в какую строну направлены косые черты!.

    DocumentRoot "c:/home/home-webservis/14659/public_html"
    # А здесь мы указываем серверу,
    # что с этой папкой можно делать
    # Если хотите знать, что эти параметры
    # означают - читайте руководство к Apache
    <Directory "c:/home/home-webservis/15405/public_html">
        Options Includes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    # Параметр ScriptAlias указывает на папку с cgi-скриптами
    ScriptAlias /cgi-bin/ "c:/home/home-webservis/14659/public_html/cgi-bin/"
    # В этот файл будут записываться ошибки сервера.
    # Да, это тот самый лог сервера, который вам
    # ни под каким соусом не хотели давать
    # админы халявных хостингов!!!

    ErrorLog "c:/home/home-webservis/14659/error.log"
    # А в этот файл сервер пишет, какие файлы он выдаёт браузеру.
    # У него есть сволочная привычка быстро разрастаться до
    # чудовищных размеров, не забывайте его периодически чистить.

    CustomLog "c:/home/home-webservis/14659/custom.log" common
</VirtualHost>

Исправьте в этом фрагменте куски, выделенные красным, на свой вариант. После этого сохраните httpd.conf и закройте Блокнот.

Перейдите к папке c:\Program Files\Apache Group\Apache\ и запустите apache.exe c ключом "-t". Если всё было сделано правильно, вы получите подтверждение, что вы всё сделали правильно, и ошибок в файле httpd.conf нет.

c:\> c:\Program Files\Apache Group\Apache\apache.exe -t
c:\Program Files\Apache Group\Apache\conf\httpd.conf: Syntax OK

Если же что-то сделано неправильно, вы увидите сообщение наподобие этого:

[error] Failed to resolve server name for 127.0.0.5
(check DNS) - or specify an explicit ServerName

Это сообщение, кстати, говорит о том, что адресу 127.0.0.5 в файле HOSTS забыли сопоставить имя сервера - это очень частая ошибка!

Кстати, Apache может не запуститься, если какая-то зараза до его запуска уже успела заграбастать порт 80 вашего компьютера. Чтобы проверить это, из окна DOS скомандуйте netstat -ap tcp и посмотрите, что получится. Может, между делом найдёте вируса-троянца, живущего в вашей системе - случается и такое.

Посмотрите на результат выполнения команды netstat на моём компьютере. Видно, что работает MySQL, занимающая порт 3306, и что ещё какая-то программа заняла порт 80 и тем самым мешает запуститься Apache (на самом деле я для “чистоты эксперимента” просто запустил на компьютере вебсервер другого производителя):

Microsoft(R) Windows NT(TM)
(C) 1985-1996 Microsoft Corp.

C:\> netstat -ap tcp

Активные подключения

 Имя  Локальный адрес      Внешний адрес   Состояние
 TCP   localhost:135            0.0.0.0:0              LISTENING
 TCP   localhost:135            0.0.0.0:0              LISTENING
 TCP   localhost:1027          0.0.0.0:0              LISTENING
 TCP   localhost:1028          0.0.0.0:0              LISTENING
 TCP   localhost:3306          0.0.0.0:0              LISTENING  <- это работает MySQL
 TCP   localhost:1025          0.0.0.0:0              LISTENING
 TCP   localhost:1025          localhost:1028     ESTABLISHED
 TCP   localhost:80              0.0.0.0:0              LISTENING  <- А это что за зараза заняла порт 80?!!!
 TCP   localhost:1026          0.0.0.0:0              LISTENING
 TCP   localhost:1028          localhost:1025     ESTABLISHED
 TCP   localhost:1275          0.0.0.0:0              LISTENING
 TCP   localhost:137            0.0.0.0:0              LISTENING
 TCP   localhost:138            0.0.0.0:0              LISTENING
 TCP   localhost:nbsession  0.0.0.0:0              LISTENING

Затем создайте в вашей папке файл index.html такого содержания:

<html lang="ru">
<head><title>Проверка Apache</title></head>
<body>
<h1>Ура!!! Apache заработал!!!!</h1>
</body></html>

После этого закройте все работающие программы и перезагрузите компьютер. После того, как Windows запустится снова, щёлкните по иконке Apache Manager, которая появится на Панели Задач (Taskbar) рядом с часами и выберите пункт "Запустить Apache". После этого откройте браузер и наберите ссылку http://127.0.0.2/index.html. Ну что, заработало? Теперь можете радостно попрыгать, поорать "YEEEEESSSS! Я это сделал(а)!!!!!!" или выкинуть ещё что-нибудь в этом роде.

Маленькая оговорка: если у вас в браузере включено использование прокси-сервера, браузер первым делом начнёт рваться в Интернет, чтобы с этим самым прокси связяться. Дать по рукам ему так просто не получится - единственный способ сделать это - либо отключить использование proxy вообще, либо отключить его использование для адресов, начинающихся с "127." Правда, мой Internet Explorer 5.0 эту настройку напрочь игнорирует - остаётся каждый раз вырубать использование proxy ручками.

Ещё у вашего браузера будет постоянный соблазн перейти в автономный режим ("Offline mode")

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

Чтобы совсем вас доконать своей назойливой услужливостью, IE будет лезть подключаться к Интернету каждый раз, когда встретит на страницах тестируемого вами сайта баннер или счётчик. Это понятно, ведь Apache на вашем домашнем компьютере отвечает за http://127.x.x.x, за другие сервера он не отвечает. И когда в тексте вашей страницы браузер встретит указание вставить баннер или картинку с другого сайта, он выведет картинку

Поставьте галочку на "Отключить автонабор.." и вас перестанут теребить по пустякам. На месте баннеров и счётчиков, конечно, будут зиять дыры, но это даже к лучшему.

Да-а, очень “маленькая оговорка” у меня получилась.. Ну ладно, продолжаем. Сейчас мы попробуем, как работает остальное установленное нами добро - Perl, PHP, MySQL - только разберёмся с последней мелочью (я вас ещё не достал своими "лирическими отступлениями", а?).

Помните, что я говорил, что нам доступно примерно 16 миллионов адресов, начинающихся на 127.*? Мы только что заняли один, а что делать с остальными?

Самое вкусное состоит в том, что если у вас несколько сайтов, домашнюю копию каждого вы можете прицепить к своему адресу - один - к 127.0.0.3, второй - к 127.0.0.4 и так далее. И так до шестнадцати миллионов! Один Apache может обслуживать несколько сайтов, причём делается это до безобразия просто - вы добавляете в конец httpd.conf ещё один блок, с увеличенным на единичку номером, правите файл HOSTS, прописываете новые пути к папкам и перезапускаете Apache - и всё!

Учитывайте, что перед тем, как вписать сюда адрес папки, нужно создать её на диске. После того, как вы сохраните httpd.conf, не (пере)запускайте Apache до того, как проверите, правильно ли вы всё сделали, командой

c:\> c:\Program Files\Apache Group\Apache\apache.exe -t
c:\Program Files\Apache Group\Apache\conf\httpd.conf: Syntax OK

ТЕСТИРОВАНИЕ ВСЕГО ЭТОГО ДОБРА

Теперь нам осталось убедиться в работоспособности всего зверинца, что поселился на вашем компьютере. Начнём с проверки скриптов.

Создайте в папке c:\Program Files\Apache Group\Apache\cgi-bin\ файл testscript.cgi такого содержания:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Ура!! Perl-скрипты работают!!!</h1>\n";

И откройте в браузере ссылку http://127.0.0.1/cgi-bin/testscript.cgi. Если увидите это победное сообщение, скрипт работает, как надо и Perl, следовательно, нормально установлен.

Теперь проверим PHP4. Создайте в папке c:\Program Files\Apache Group\Apache\htdocs\ файл phptest.phtml такого содержания:

<?
echo "<h1>Ура!! PHP-скрипты работают!!!!!</h1>\n";
?>

Если скрипт заработает, и вы видите эту фразу, набрав в браузере http://127.0.0.1/phptest.phtml, всё сделано правильно.

Последним пунктом нашей программы будет проверка работоспособности MySQL.

Создайте в папке c:\Program Files\Apache Group\Apache\cgi-bin\ файл mysqltest.cgi такого содержания:

#!/usr/bin/perl

use DBI; # Загружаем модуль DBI, который позволяет
# Perl работать с базами данных
# Для его работы нужно скачать и установить два файла из:
# http://www.activestate.com/PPMPackages/zips/6xx-builds-only/
# DBI.zip и DBD-MySQL.zip.

$dbdriver = "mysql"; # Имя DBI-драйвера, в нашем случае требуется
# драйвер MySQL. DBI, в принципе, наплевать,
# с какой базой работать - хоть с Oracle,
# хоть с Microsoft Access. Сейчас оставьте как есть.
$hostname = "localhost"; # Где работает сервер MySQL?
$port = "3306"; # Порт сервера?
$username = "логин"; # Имя
$password = "пароль"; # и пароль пользователя MySQL
$basename = "test"; # Название базы, в которой будем работать
$tablename = "testhowitworks"; # Имя таблицы, с которой будем экспериментировать. Если таблица с таким именем есть, она будет затёрта!

# Дальше ничего менять не надо. Не делайте код хуже чем он уже есть ;-)

print "Content-type: text/html\n\n";
print "<html lang=ru>\n<head>\n<title>Тест взаимодействия Perl и MySQL</title>\n</head>\n<body>\n\n";
print "<h2>Тест взаимодействия Perl и MySQL</h2>\n<p>Этот простенький тест должен открыть модули DBI и DBD-MySQL в Perl,\nсоздать таблицу <i>$tablename</i> в базе <i>$basename</i> и занести в неё\nдесять нумерованных строчек. После этого эти строчки будут выведены на\nэкран, и скрипт &#147;приберёт за собой&#148;, удалив уже не нужную\nтаблицу <i>$tablename</i>.</p>\n\n";
print "<h2>Если ничего не работает..</h2>\n<p>Вы не запустили MySQL, указали неверное имя пользователя и пароль,\nили же неправильно настроили вебсервер. Распечатайте инструкции и шаг\nза шагом проконтролируйте свои действия.</p>\n\n";

print "<h2>Тест MySQL:</h2>\n";

# Дальше всё должно быть понятно даже тем, кто мало разбирается
# в MySQL, Perl и DBI. Код скрипта написан более в угоду понятности,
# нежели чем компактности и скорости. “Профи” скривят лицо, а вот
# новичкам будет понятнее.

$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");

# Если таблица $tablename в базе $basename уже есть, грохаем её.
# Если кто не спрятался, я не виноват.

$sqlstatement = "DROP TABLE IF EXISTS $tablename";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Невозможно выполнить SQL-запрос.";

# Создаём таблицу заново.

$sqlstatement = "CREATE TABLE $tablename (textfield TEXT NULL)";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Невозможно выполнить SQL-запрос.";

# Загоняем в неё десяток текстовых строчек

for ($counter=1; $counter < 11; $counter++) {
$sqlstatement = "INSERT INTO $tablename VALUES ('Это - строчка номер $counter')";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Невозможно выполнить SQL-запрос.";
};

# И выводим их обратно на экран.

$sqlstatement = "SELECT * FROM $tablename";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Невозможно выполнить SQL-запрос.";

print "<table cellpadding=3 cellspacing=1>\n<tr valign=top bgcolor=#9c9c63><td><b><font color=#ffffff>Таблица $tablename:</font></b>&nbsp;&nbsp;&nbsp;</td></tr>";
while (@row=$sth->fetchrow_array) {print "<tr valign=top bgcolor=#f5f5ed><td>@row</td></tr>\n";}
print "</table></body></html>";

# Убираемся за собой.

$sqlstatement = "DROP TABLE IF EXISTS $tablename";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Невозможно выполнить SQL-запрос.";

# Вот, собственно, и всё. Долгие и продолжительные аплодисменты зала.

Затем откройте в браузере ссылку на http://127.0.0.1/mysqltest.cgi. Этот Perl-скрипт должен обратиться к базе test с помощью установленных модулей DBI, создать в ней таблицу с именем testhowitworks и внести в неё десять нумерованных строчек, а затем их оттуда достать обратно. Не забудьте отключить MySQL после этих манипуляций.

УСТАНОВКА WAR FTP DAEMON

Все здравомыслящие люди могут с чистой совестью пропустить этот раздел. Он предназначен только для тех, кто подобен особой породе автолюбителей, украшающих свои авто спойлерами, наворотами на бамперы, суперфарами, наклейками во весь капот etc. Тем, кому хочется, чтобы “их поезда стали самыми поездатыми поездами в мире”, в отстроенной по моим рекомендациям системе не хватает одного - FTP-сервера.

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

В Инете я нашёл программку, способную удовлетворить запросам самого отвязного юниксоида. Она до запятой соблюдает требования RFC 959 и 1123, поддерживает свою виртуальную файловую систему в стиле Unix (и даже под Windows 95 можно выставлять атрибуты на файлы!), позволяет определять права для групп пользователей и отдельных аккаунтов, поддерживает докачку файлов, может работать как системная служба в NT, имеет кучу мелких возможностей, типа ratio-системы. При этом всё настраивается одной мышкой за пять минут.

Называется этот шедевр War FTP Daemon и взять его можно на любом из российских серверов с халявным софтом, типа SoftList.ru, или на сайте автора - jgaa.com (если в навигации по нему не запутаетесь). Тех, кого мучает совесть при каждом запуске пиратской копии Виндов на своей машине, утешу - из за нелегального использования этой программы краснеть не придётся - она на 100% бесплатна.

Конкретных инструкций по её настройке не даю - если вам нужно, вы быстро и беспроблемно разберётесь с ней сами.

ЗАНАВЕС!

На этом можно и закончить. Самые занудливые скажут, что для полного счастья им ещё не хватает почтового сервера, но это уже слишком. По-моему, упоминания FTP было уже многовато.

Из недоделанного хочется отметить отсутствие рассказа про установку Parser'а от Студии Арт.Лебедева (ну не должен был я, как лояльный сотрудник Группы monitoring.ru, о нём не написать - но ведь не написал, и мне стыдно). Штука действительно стоящая, и, после того как я сам с ней освоюсь в достаточной мере, я непременно допишу про него главу.

Ещё хотелось бы выразить благодарность всем тем, кто писал мне письма, указывая на ошибки и неточности, предлагал лучшие варианты или же просто заваливал тупыми и не очень вопросами. Поверьте, без ваших откликов я бы давно плюнул бы на это дело. Я всегда готов ответить на ваши вопросы, которые вы можете присылать мне на mailto:bougakov@mailru.com?Subject=Apache/Windows или mailto:webmaster@monitoring.ru?Subject=Apache/Windows. Пишите!

Часть 1
Автор Александр Бугаков | Добавлено 24.08.2001
Hosted by uCoz