Хотілося б подякувати колектив студії RealDesign, який перевірив «на своїй шкурі» всі описувані дії. Якщо у Вас виникнуть питання в процесі виконання інструкцій у статті (а також якщо не допоможуть відповіді на запитання, вміщені в кінці), буду радий допомогти. Мій адресу електронної пошти [email protected]. Будь ласка, опишіть свою проблему детальніше! А саме, прошу вказати в листі версію Вашої операційної системи, чи підключений комп’ютер до локальної мережі, а також версії Apache і всіх інших програм, описаних у цій статті. Коментарі безкоштовні, але дуже короткі. Комп’ютерна революція не чекає нікого, в тому числі і мене…

Дистрибутиви та посилання

«А чи не послати нам гінця?..»
Кінорежисер

Ось список посилань на сайти, на яких завжди можна знайти найсвіжіші версії програмних продуктів, на які посилається стаття. Отже:

  • Офіційний сайт Apache: http://www.apache.org
  • Офіційний сайт PHP: http://ru.php.net
  • Офіційний сайт Active Perl: www.activestate.com
  • Офіційний сайт MySQL: http://www.mysql.com
  • І ще кілька посилань:

  • Всеросійський клуб вебмайстрів: http://www.webclub.ru
  • Клуб розробників PHP: http://www.phpclub.net
  • Ну і, звичайно, Лабораторія dk: http://www.dklab.ru
  • Введення — навіщо потрібен домашній віртуальний сервер?

    «Ну до чого все це, краще б горілки випили»
    З листів Бєлінського Гоголю

    Якщо Ви читаєте цей документ, а також якщо у Вас встановлений Windows 95/98 (а наша особиста думка така, що ця операційна система найбільш збалансована з точки зору інтерфейсу і зручності роботи), значить, Ви вже зіткнулися з проблемою віртуального домашнього сервера, а точніше, з проблемою його відсутності! Ця невелика стаття допоможе Вам завантажити і встановити один з кращих серверів Apache, а також ті програми, з-за відсутності яких народ в сказі змітає всі інші сервера (наприклад, Sambar Server) зі свого багатостраждального жорсткого диска і встановлює Apache для Windows 95/98. Маються на увазі, звичайно, Perl, PHP і MySQL, також працюють під Windows. Прочитавши цю статтю і скачавши дистрибутиви, Ви будете озброєні усіма інструментами, які так необхідні для професійної роботи в Web!

    Звертаємо Вашу увагу: існує думка, що MySQL (а тим більше для Windows 95/98) можна отримати безкоштовно, а можна тільки купити. Так ось, можете зітхнути з полегшенням: MySQL для Windows 95/98 існує, і її установка не буде коштувати Вам ні копійки!

    Якщо Ви — професійний Web-програміст, то після уважного ознайомлення з цієї (на жаль, стала деякий час тому досить пухкої) статтею Ви зможете на порядок спростити собі життя — точніше, її частину, що стосується написання і налагодження скриптів. І це завдяки тому, що все описане тут майже на 100% сумісний з тим, яке швидше за все встановлено у Вашого хостера (а більше половини сучасних хостерів працюють з Unix). Саме для цих, і ніяких інших цілей і була написана ця стаття — допомогти розробнику скриптів. Однак, якщо Ви збираєтеся серйозно зайнятися хостингом на платформі Win32, то краще буде використовувати не Apache і PHP, а Microsoft IIS і ASP, і про це написано безліч інших статей.

    Поговоримо тепер з тими користувачами Windows 95/98, які завітали сюди з простої цікавості. Часто виникає ситуація, коли необхідно перевірити повний вигляд html-сторінки. Однак найчастіше це неможливо при роботі вдома — технології SSI, CGI і, звичайно, PHP, наприклад, точно вимагають сервера. Як же бути? Не варто впадати в апатію — потрібно просто встановити на Ваш домашній комп’ютер (нехай навіть і не підключений до Інтернет) спеціальну програму — Web-сервер. Взагалі-то існує безліч серверів — погані і хороші, повільні і швидкі… Ми ж вибрали сервер, підходить під останні дві категорії, — Apache. Найголовніше те, що це чи не єдиний сервер, який дозволяє працювати в Windows 95/98 з технологіями PHP і Perl CGI-скриптами одночасно так само просто і невимушено, ніби у Вас стоїть Unix.

    Від слів до справи — установка Apache

    «У мене для Вас дві новини: погана і хороша. Погана: м’яса
    мало, будемо їсти бизоний послід. І гарна: його-то у нас багато!..»
    З виступу вождя апачів

    Отже, Ви зважилися встановити на свій комп’ютер Apache для Windows 95/98. У такому випадку Вам слід запастися терпінням і для початку завантажити дистрибутив сервера з офіційного сайту Apache: http://httpd.apache.org/dist/httpd/binaries/win32/. Раджу Вам вибрати саму останню версію сервера для платформи Windows. Тепер нам належить налаштування Apache для Вашої системи.

    Важливо!
    Ми попросимо Вас у точності виконувати перераховані нижче кроки, не пропускаючи і не відкладаючи ні одного. В цьому випадку все запрацює — це перевірено. Далі наводяться інструкції з досить скупими поясненнями, чому потрібно зробити те або інша дія, в розрахунку на те, що Ви будете дотримуватися їх буквально. В іншому випадку вам, швидше за все, доведеться додатково провести кілька неприємних годин або днів) за вивченням документації Apache, зокрема, тієї її частини, яка стосується конфігурування.

    Перший етап — установка

    • Запустіть тільки що завантажений файл дистрибутива Apache. У діалоговому вікні натисніть кнопку Next, а потім — кнопку Yes, щоб погодитися з умовами ліцензії.
    • Натисніть кнопку Next у вікнах до тих пір, поки не з’явиться запит про вибір директорії для встановлення Apache. Рекомендую Вам залишити ту директорію, яка пропонується за замовчуванням (нехай це, наприклад, C:Program FilesApache GroupApache). Запам’ятайте її на майбутнє.
    • У вікні встановіть прапорець Typical і натисніть кнопку Next.
    • Програма інсталяції Apache запропонує створити папку в меню Пуск в папці Програми. Дозвольте їй це зробити, натиснувши кнопку Next. Почнеться процес копіювання програмного забезпечення.
    • Після закінчення копіювання натисніть кнопку Finish. Процес установки сервера завершений, попереду — його параметри.

    Етап другий: налаштування файлу конфігурації Apache

    На цьому етапі Вам потрібно визначитися з директорією, в якій будуть зберігатися ваші сайти. Apache за замовчуванням використовує для цього C:Program FilesApache GroupApachehtdocs, де відразу після установки можна знайти документацію по серверу. Думаю, для серйозних цілей вона не дуже підходить — надто довге ім’я, тому ми рекомендуємо зробити для всіх сайтів окремий диск (наприклад, з ім’ям Z:) за допомогою утиліти subst, що входить в Windows. Давайте зупинимося на цьому рішенні. Отже, виконайте наступне:

    • Виберіть директорію, в якій будуть зберігатися ваші сайти (їх може бути декілька). Нехай, наприклад, це буде C:INTERNET. Наша директорія буде містити кореневий каталог нового диску Z:
    • На початку файл autoexec.bat (але після команди @echo off, якщо вона у Вас там є) напишіть такий рядок:
      subst Z: C:INTERNET
    • Перезавантажте комп’ютер, щоб новий диск створився. Тепер все, що записано в директорії C:INTERNET, буде відображатися на диску Z:, як ніби це — звичайний жорсткий диск.

      Важливо!
      Є відомості, що в Windows 95/98 є помилка. В результаті неї при використанні subst шляху іноді «самі по собі» перетворюються на абсолютні (тобто, наприклад, у нашому випадку Z: перетворюється в C:INTERNET), причому в процесі роботи якої-небудь програми і абсолютно несподівано для неї. Однак, якщо Ви налаштуєте все так, як описується в цій статті, проблем виникнути не повинно.

      Ви можете також створити диск Z: з допомогою якої-небудь програми для віртуальних розділів (наприклад, за допомогою вбудованої в Windows 95/98 програми DriveSpace). Це рішення, мабуть, навіть краще, ніж використання subst, як з точки зору економії пам’яті, так і з точки зору швидкодії. Адже що таке Web-сайт, як не набір дуже невеликих файлів? А DriveSpace якраз і оптимізує роботу з такими файлами. За описом того, як використовувати DriveSpace, дивіться вбудовану в Windows документацію.

    • Створіть на диску Z: директорію home, а в ній — каталог localhost. У ньому буде зберігатися вміст головного серверу Apache — того, який доступний за адресою http://localhost. Перейдіть в останній створений каталог. Створіть у ньому директорії cgi і www. У першій будуть зберігатися CGI-скрипти, а в другій — ваші документи і програми на PHP. Зауважу, що подібну операцію Вам потрібно буде проробляти кожен раз при створенні нового віртуального хоста (про них ми поговоримо трохи пізніше).
    • Відкрийте в Блокноті файл конфігурації httpd.conf, який розташований в піддиректорії conf директорії Apache (у нашому прикладі це C:Program FilesApache GroupApache). Втім, Ви можете і не шукати цей файл вручну, а скористатися ярликом Edit configuration в меню Пуск — Програми — Apache Web Server Management. Httpd.conf — єдиний файл, який Вам потрібно налаштувати. Вам належить знайти і змінити в ньому деякі рядки, а саме ті, про яких згадується далі. Щоб уникнути непорозумінь не чіпайте все інше. Слід зауважити, що у файлі кожен параметр супроводжується кількома рядками коментарів, розібратися в яких з першого разу досить важко (втім, Ви можете звернутися до статті Російський переклад файлу httpd.conf, в якій наведено повний переклад цих коментарів на російську мову). Тому не звертайте на них особливої уваги.

    Для початку ми налаштуємо параметри для головного серверу Apache — localhost, а також параметри за замовчуванням, які будуть успадковані всіма іншими віртуальними хостами, якщо ми захочемо їх створити.

    • Встановіть поле ServerName наступним чином:
      ServerName localhost

      Тільки не забудьте розкоментувати поле ServerName, тобто прибрати символ «#» перед цим параметром (за замовчуванням він закомментирован)! Взагалі, все, що йде після символу і до кінця рядка, Apache ігнорує.

    • У полі DocumentRoot вкажіть ту директорію, в якій будуть зберігатися ваші html-файли. Ми раніше домовилися, що це буде Z:homelocalhostwww):
      DocumentRoot «z:/home/localhost/www»
    • Знайдіть блок, що починається рядком і закінчується (взагалі, такі блоки позначають установки для заданій директорії і всіх її піддиректорій). Цей блок може містити безліч коментарів — не звертайте на них уваги. Його потрібно змінити на такий блок:
      Options Indexes Includes
      AllowOverride All
      Allow from all

      Таким чином, в цьому блоці будуть зберігатися установки для всіх директорій за замовчуванням (т. к. це — коренева директорія). А саме, для всіх директорій за замовчуванням встановлюється можливість автоматичної генерації індексу — списку вмісту директорії при перегляді в браузері, а також підтримка SSI і дозвіл використовувати файли .htaccess для індивідуальних налаштувань каталогів.

    • Знайдіть аналогічний блок, який починається і закінчується . Там буде багато коментарів, не звертайте на них увагу. Цей блок Вам потрібно видалити, так як всі налаштування для директорії зі сторінками повинні успадковуватися від налаштувань за замовчуванням, які ми тільки що встановили.
    • Встановіть DirectoryIndex так:
      DirectoryIndex index.htm index.html

      Це — так звані файли індексу, які автоматично видаються сервером при зверненні до директорії, якщо не зазначено ім’я html-документа. В принципі, можна додати сюди і інші імена, наприклад, index.php і т. д. Однак додаткові налаштування все ж краще робити в файлах .htaccess для кожного сайту окремо.

    • Знайдіть і виправте такий параметр:
      ScriptAlias /cgi-bin/ «z:/home/localhost/cgi/»

      Додайте в нього ще таку строчку:

      ScriptAlias /cgi/ «z:/home/localhost/cgi/»

      Так, саме так, з двома слэшами. Це буде та директорія, в якій повинні зберігатися ваші CGI-скрипти. Подібний параметр говорить Apache про те, що, якщо буде вказано шлях виду http://localhost/cgi-bin, то насправді слід звернутися до директорії z:/home/localhost/cgi. Ми використовуємо два синоніми для CGI-директорії тому, що /cgi-bin/ буде доступна не тільки головному хосту localhost, але і всім іншим віртуальним хостам. У той же час, у кожного з них буде додатково своя CGI-директорія /cgi/.

    • Тепер слід знайти блок параметрів, що починається з і закінчується . Це — установки для CGI-директорії. Так як ми не збираємося вказувати ніяких додаткових параметрів замість тих, які вже встановлені за замовчуванням, цей блок потрібно видалити.
    • Знайдіть і налаштуйте (не забудьте розкоментувати!) наступний параметр:
      AddHandler cgi-script .bat .exe .cgi

      Це говорить Apache про те, що файли з розширеннями exe, bat і cgi потрібно розглядати як CGI-скрипти.

    • І останнє — встановіть наступні параметри:
      AddType text/html .shtml
      AddHandler server-parsed .shtml .html .htm

      Цим Ви змушуєте Apache обробляти файли з зазначеними розширеннями процесором SSI.

    • Тепер не забудьте зберегти зміни і закрийте блокнот.

    Етап третій: тестування Apache

    Вітаємо — Ви налаштували Apache, і він повинен працювати! Для запуску сервера натисніть Пуск Програми, Apache Web Server Management і Start Apache, при цьому з’явиться вікно, дуже схоже на Сеанс MS-DOS, і нічого більше не станеться. Не закривайте його і не чіпайте до кінця роботи з Apache.

    Якщо вікно відкривається і тут же закривається, це означає, що Ви допустили якусь помилку у файлі httpd.conf. В цьому випадку доведеться шукати неточність. Простіше всього це зробити так.

    • Запустіть Сеанс MS-DOS. Для цього натисніть кнопку Пуск, потім Виконати. Наберіть у діалоговому вікні command і натисніть . З’явиться підказка командного рядка. (Якщо у Вас немає можливості запустити Сеанс MS-DOS, скористайтесь яким-небудь іншим засобом. Наприклад, запустіть Far і працювати через нього. Перегляд результатів роботи програми — +.)
    • Наберіть такі команди DOS:
      c:
      cd «Program FilesApache GroupApache»
      apache.exe
    • Якщо до цього Apache не запускався, то Ви отримаєте повідомлення про помилку і номер рядка в httpd.conf, де вона відбулася. Виправте httpd.conf і повторіть описаний процес спочатку, до тих пір, поки у вікні не з’явиться щось на зразок «Apache/1.3.14 (Win32) running…»

    Кілька слів про те, як можна спростити запуск і завершення сервера. У Windows можна призначити кожному ярлику функціональну комбінацію клавіш, натиснувши на які, Ви запустите цей ярлик. Так що клацніть правою кнопкою на панелі завдань, у контекстному меню виберіть Властивості, потім Налаштування меню і кнопку Додатково. У вікні Провідника призначте ярлику Start Apache комбінацію ++ а ярлику Stop Apache — . Тепер Ви зможете запускати сервер натисканням ++ і зупиняти його, натиснувши ++.

    Тепер перевіримо, чи правильно ми налаштували директорії для документів.

    Перевірка html.

    В директорії z:/home/localhost/www з html-документами Apache створіть файл index.html з будь-яким текстовим змістом. Тепер запустіть браузер і наберіть:

    http://localhost/index.html

    або просто

    http://localhost/

    Повинен завантажитися Ваш файл.

    Перевірка SSI.
    В директорії z:/home/localhost/www з html-документами Apache створіть файл test.shtml з таким змістом (уважно стежте за дотриманням прогалин у директиві include!):

    SSI Test!

    Тепер наберіть в браузері:

    http://localhost/test.shtml

    Повинен завантажитися файл, який складається з тексту «SSI Test!», за яким слід вміст файлу index.html між двома горизонтальними рисами. Якщо цього не відбулося, значить, Ви неправильно налаштували роботу SSI.

    Перевірка CGI.
    В директорії z:/home/localhost/cgi для CGI-скриптів створіть файл test.bat з таким змістом:

    @echo off
    echo Content-type: text/html
    echo.
    echo.
    dir

    Тепер у браузері наберіть:

    http://localhost/cgi/test.bat

    У вікні відобразиться результат команди DOS dir.

    Важливо!
    Потрібно відзначити, що зазначений тест працює не на всіх версіях Windows: іноді замість того, щоб виконати файл test.php, Apache виводить в браузер його вміст (а іноді Windows запускає цей файл в окремому вікні). З чим це пов’язано — не зовсім ясно, однак, здається, можна позбутися від зазначеної помилки шляхом маніпулювання з Реєстром Windows. Якщо у Вас test.bat не запускається, не турбуйтеся: навряд чи Ви коли-небудь будете писати скрипти у вигляді bat-файлів, тим більше, що цей спосіб несумісний з Unix.)

    Якщо щось пішло не так, або вікно Apache відкривається і тут же закривається, значить, десь помилка — швидше за все, в httpd.conf. За детальним роз’ясненням її причин можна звернутися до log-файлів, розташованих в директорії C:Program FilesApache GroupApachelogs.

    Віртуальні хости Apache

    «Віртуальні хости — хости, що мають унікальну адресу
    в Інтернет, емулюються і підтримуються сервером»
    Давнє язичницьке заклинання

    Отже, Ви встановили Apache і отримали, таким чином, директорію z:/home/localhost/www для зберігання документів і z:/home/localhost/cgi для CGI. Однак в Інтернеті Ви підтримуєте (або, швидше за все, будете підтримувати) кілька серверів Apache створив для Вас тільки один. Звичайно, можна структуру цих декількох серверів зберігати на одному сервері, однак простіше і зручніше було б створити кілька віртуальних хостів з допомогою Apache. У нашому розпорядженні є два види віртуальних хостів: окремі для кожного ip-адреси або ж використовують один загальний ip-адресу (так звані name-based хости — хости, визначувані по імені). В тренувальних цілях ми розглянемо обидва варіанти, а саме, створимо хост hacker, що використовує ту саму адресу, що й localhost, а також хост cracker з адресою 127.0.0.2.

    Важливо!
    Звичайно, замість «hacker» і «cracker» Вам потрібно буде вказати бажані імена ваших віртуальних хостів. Радимо назвати їх так само, як і на Вашому сьогоденні Web-сервері, але тільки без суфікса .ru або .com — це може багато спростити при програмуванні скриптів.

    Як це прийнято в Unix, кожен сервер буде представлений своїм каталогом в директорії z:/home з ім’ям, що збігається з ім’ям сервера (ми вже робили щось подібне з хостом localhost). Наприклад, сервер hacker буде зберігатися в директорії z:/home/hacker, яку Вам необхідно створити прямо зараз (звичайно, разом з її поддиректориями cgi і www, як ми робили це раніше), а хост cracker — в директорії z:/home/cracker. У цих директоріях будуть знаходитися:

    • файли access.log з журналом доступу до віртуального сервера;
    • файли errors.log журнал помилок сервера;
    • директорія www, де, як звичайно, будуть зберігатися html-документи;
    • директорія cgi для зберігання CGI-програм.

    Для встановлення віртуальних хостів необхідно зробити деякі зміни у файлі конфігурації Apache httpd.conf (див. вище), а також в деяких файлах Windows. Ось необхідні дії.

    Відкрийте файл httpd.conf (можна для цього скористатися ярликом Edit configuration в меню Пуск — Програми — Apache Web Server Management). Перейдіть в його кінець, Вам доведеться додати туди кілька рядків. Додайте наступні рядки в кінці файлу після всіх коментарів:

    NameVirtualHost 127.0.0.1
    #—-localhost
    ServerAdmin webmaster@localhost
    ServerName localhost
    DocumentRoot «z:/home/localhost/www»
    ScriptAlias /cgi/ «z:/home/localhost/cgi/»
    ErrorLog z:/home/localhost/error.log
    CustomLog z:/home/localhost/access.log common
    #—-hacker
    ServerAdmin [email protected]
    ServerName hacker
    DocumentRoot «z:/home/hacker/www»
    ScriptAlias /cgi/ «z:/home/hacker/cgi/»
    ErrorLog z:/home/hacker/error.log
    CustomLog z:/home/hacker/access.log common
    #—-cracker
    ServerAdmin [email protected]
    ServerName cracker
    DocumentRoot «z:/home/cracker/www»
    ScriptAlias /cgi/ «z:/home/cracker/cgi/»
    ErrorLog z:/home/cracker/error.log
    CustomLog z:/home/cracker/access.log common

    Важливо!
    Зверніть увагу на те, що ми додали додатково секцію для хоста localhost. Якщо цього не зробити, то всі запити до нього (тобто, за адресою 127.0.0.1) будуть оброблені name-based хостом hacker. Відбувається це, мабуть, з-за того, що хости в секції мають більший пріоритет при обробці, ніж головний хост, який ми створили до цього.

    Директива NameVirtualHost говорить серверу, що вказаний ip-адреса може використовуватися декількома віртуальними хостами, тому для обробки запитів, що надходять на адресу, потрібно використовувати протокол HTTP 1.1 (який, власне, і підтримує техніку роботи з name-based хостами).

    При бажанні можна додати і інші параметри блоки (наприклад, DirectoryIndex і т. д.) Не перевизначені параметри успадковуються віртуальним хостом від головного. Однак не раджу зловживати налаштуваннями в цих секціях, краще зробити їх у файлі .htaccess в директорії потрібного хоста, тому що компанія, яка надає (буде надавати Вам «справжні» віртуальні хости в Інтернеті, навряд чи дозволить змінювати ці блоки.

    Але як же система дізнається, що хост cracker зіставлений з адресою 127.0.0.2, а hacker — взагалі name-based хост? Для вирішення проблеми треба трохи підправити системний файл hosts, який знаходиться в директорії C:WINDOWS для операційних систем Windows 95/98/Millenium і C:WINNTSYSTEM32DRIVERSetc для Windows NT і Windows 2000.

    Важливо!
    Не плутайте файл hosts (без розширення) з файлу hosts.sam, який, швидше за все, також розташований в тій же директорії! Останній файл є лише демонстраційним прикладом Microsoft і ніяк не використовується системою. Якщо файл hosts не існує, його необхідно створити.

    Файл hosts — звичайний текстовий файл, і в ньому може бути заздалегідь записана тільки один рядок:

    127.0.0.1 localhost

    Саме цей рядок і задає відповідність імені localhost адресою 127.0.0.1. (Заради справедливості слід сказати, що ім’я localhost працює і без зазначеної вище рядка. Ну і вигадники ж ці хлопці з компанії Microsoft!) Для нашого віртуального хоста треба додати відповідну сходинку, щоб файл виглядав так:

    127.0.0.1 localhost hacker
    127.0.0.2 cracker

    Зверніть увагу на те, що хост hacker описаний на тому ж рядку, що і localhost. Справа в тому, що в файлі hosts повинні зазначатися тільки унікальні ip-адреси. Якщо ж однією адресою зіставляється відразу декілька хостів, то один з них (той, який йде першим) оголошується головним, а інші — його синонімами. У нашому випадку localhost — головний, а hacker — його синонім. Apache при отриманні запиту на адресу 127.0.0.1 дізнається, що він прийшов хосту з ім’ям hacker, і активізує відповідний блок .

    Отже, ми створили віртуальні хости з наступними властивостями:

    Хост hacker:

    • ім’я — hacker;
    • доступний за адресою http://hacker;
    • розташований в директорії z:/home/hacker;
    • директорія для зберігання документів — z:/home/hacker/www, доступна за адресою http://hacker/;
    • директорія для CGI — z:/home/hacker/cgi, доступна за адресою http://hacker/cgi/;
    • файли журналів зберігаються z:/home/hacker.

    Хост cracker:

    • ім’я — cracker;
    • доступний за адресою http://cracker або http://127.0.0.2;
    • розташований в директорії z:/home/cracker;
    • директорія для зберігання документів — z:/home/cracker/www, доступна за адресою http://cracker/;
    • директорія для CGI — z:/home/cracker/cgi, доступна за адресою http://cracker/cgi/;
    • файли журналів зберігаються z:/home/cracker.

    Важливо!
    Необхідно зауважити, що головний хост (невиртуальный, той, який ми створили раніше) як і раніше доступний за адресою http://127.0.0.1 або http://localhost. Більш того, його директорія /cgi-bin/ «видно» всім створеним віртуальних хостів, так що Ви можете її використовувати.

    Після всіх змін не забувайте перезапускати Apache.

    Важливо!
    Якщо встановлений Apache версії нижче 1.3.20, то просто закрити вікно сервера, натиснувши на кнопку Закрити (у верхньому правому куті, недостатньо — потрібно скористатися ярликом Stop Apache в меню Пуск — Програми — Apache Web Server Management. В іншому випадку закриється тільки вікно Apache, а сам сервер залишиться працювати у фоновому режимі, так що зміни, внесені в httpd.conf, не будуть активізовані. Діє принцип: якщо ярлик закриття сервера в меню Пуск присутній, значить, обов’язково треба ним користуватися, інакше — можна закривати вікно примусово.

    Встановлення PHP версії 4

    «- Хворий, прочитайте перший рядок зверху!
    — Ша, Бе, Пе Ха Пе… Доктор, кодировочку-то пофиксите…»
    Народний фольклор

    Давайте тепер перейдемо до встановлення мови PHP версії 4. На жаль, на момент написання цих рядків у PHP не було нормальної setup-програми, яка могла б встановити PHP з усіма необхідними нам модулями за один раз, як ми зробили це з Apache. Так що, можливо, його установка здасться Вам трохи складніше.

    Насамперед, Вам потрібно запастися терпінням і завантажити з офіційного сайту PHP http://www.php.net у секції Downloads два файли: один з розширенням zip, а інший — exe. Посилання на ці два файли розташовуються майже в самому верху сторінки, після заголовка Win32 Binaries. Перший файл являє собою повну версію PHP 4, але не має зручної програми установки, а другий, навпаки, є автоматичною програмою установки, але не містить в собі найбільш часто використовуваних модулів.

    Важливо!
    Так було на момент написання цієї статті. Можливо, в майбутньому розробники PHP будуть поставляти дистрибутив у вигляді одного великого exe-файлу, але поки це не так.

    Раджу Вам також завантажити повну документацію по PHP, посилання на яку є на сторінці трохи нижче. Упевнений, в майбутньому вона ще не раз Вас виручить.

    Варто сказати ще кілька слів щодо версії PHP. Мова постійно вдосконалюється, і на момент створення цієї статті останньою версією була 4.0.3. Швидше за все, коли ви будете читати ці рядки, вийде нова версія — наприклад, 4.0.10. Гадаю, найкращим рішенням буде скачати ту, що новіші, тому що в ній, можливо, виправлені деякі помилки з попередніх версій мови. Головне, щоб перша цифра була 4, тому що третій PHP сильно програє четвертим за кількістю підтримуваних функцій.

    Встановлення PHP

    • Запустіть тільки що завантажений exe-файл. У діалоговому вікні натисніть кнопку Next.
    • Погодьтеся з умовами ліцензії, натиснувши кнопку » I Agree. У діалоговому вікні виберіть тип установки Standard.
    • Тепер вкажіть директорію, в яку буде встановлений PHP. За замовчуванням пропонується C:PHP, але, думаю, логічніше було б обрати C:Program FilesPHP4, «ближче» до Apache. Для зазначення цієї директорії натисніть кнопку Browse і введіть її ім’я, потім натисніть, як зазвичай, кпопку ОК і потім — Next, щоб перейти до наступного діалогу. (Якщо Ви справжній програміст і любите порядок, то виконайте ці дії обов’язково).
    • Вкажіть адресу вашого SMTP-сервера (Send Mail Transfer Protocol — протокол пересилання пошти), а також Вашу адресу електронної пошти. Саме цей сервер і зворотну адресу будуть використані для вихідних поштових запитів, коли викликається функція Mail() мови PHP. Загалом, це той самий сервер, через якого відсилає пошту Ваш звичайний поштовий клієнт — наприклад, Outlook Express. Втім, можете і залишити в текстових полях значення за замовчуванням — у цьому випадку функція Mail() просто не буде працювати на локальній машині.
    • Виберіть сервер, на який буде налаштований PHP. У нашому випадку це — Apache.
    • Почнеться процес копіювання файлів. Після його закінчення, можливо, з’являться ще деякі діалогові вікна з різними повідомленнями. Не звертайте на них уваги.

    На цьому етапі мова PHP можна вважати вже майже установленим — нам залишилося тільки налаштувати Apache, щоб він міг розпізнати PHP-скрипти, а також встановити додаткові модулі, які містяться в скачаному нами zip-архіві.

    Налаштування Apache для роботи з PHP

    • Відкрийте в Блокноті файл конфігурації Apache httpd.conf, в директорії C:Program FilesApache GroupApacheconf. Втім, Ви можете і не шукати цей файл вручну, а скористатися ярликом Edit configuration в меню Пуск — Програми — Apache Web Server Management.
    • Знайдіть у ньому таку закомментированную рядок:
      #AddType application/x-httpd-php php

      Розкоментуйте її:

      AddType application/x-httpd-php php

      Таким чином, ми присвоїли всіх файлів з розширенням php тип application/x-httpd-php.

    • Відразу ж після цього рядка додайте такі налаштування:
      ScriptAlias /_php/ «C:/Program Files/PHP4/»
      Action application/x-httpd-php «/_php/php.exe»

      Цим ми, по-перше, створюємо синонім _php для директорії з процесором PHP, щоб Apache міг отримати до нього доступ, а по-друге, пов’язуємо всі файли з типом application/x-httpd-php з обробником php.exe.

      Важливо!
      Рядок «_php» взята з такого розрахунку, щоб вона у майбутньому не конфліктувала з іменами папок, які Ви можете зробити на Вашому хості.

    • Збережіть зміни у файлі конфігурації, зупиніть Apache, якщо він був до цього запущений (ярлик Пуск — Програми — Apache Web Server — Management — Stop Apache), і запустити його знову. Якщо Apache не запускається (його вікно відкривається і тут же закривається), значить, Ви десь допустили синтаксичну помилку. У цьому випадку можете скористатися рекомендаціями щодо усунення помилок, наведеними раніше.

    Давайте тепер переконаємося, що PHP-скрипти працюють. Для цього створимо в директорії z:/home/localhost/www файл test.php з наступним змістом:

    n»;
    phpinfo();
    ?>

    Тепер наберіть в браузері: http://localhost/test.php. Повинна з’явитися сторінка з різноманітною інформацією про PHP, яка генерується функцією phpinfo().

    Важливо!
    Нагадуємо, що php-скрипти — не те ж саме, що cgi-скрипти. Зокрема, якщо cgi-скрипти зазвичай розташовують в /cgi-bin/ або /cgi/, то php-скрипт повинен знаходитися в директорії з документами.

    Якщо сторінка не відображається, значить, Ви допустили помилку в файлі httpd.conf. Відкрийте його знову і виправте помилку, потім не забудьте перезавантажити Apache.

    Важливо!
    Нагадую ще раз, що просто закрити вікно Apache, так би мовити, примусовим способом не можна — потрібно скористатися ярликом Stop Apache, як це було описано вище. В іншому випадку закриється тільки вікно Apache, а сам сервер залишиться працювати.

    Установка додаткових модулів

    Після того як ми переконалися в працездатності PHP, потрібно встановити для нього додаткові модулі, які знаходяться в скачаному zip-файлі. Серед них — засоби для роботи з малюнками, календарем, FTP (File Transfer Protocol — Протокол передачі файлів) і т. д. Потрібно зауважити, що архів містить повну версію PHP, а не тільки модулі для нього. Єдина причина, чому ми не скористалися ним одразу — відсутність зручної програми установки. Отже, потрібно виконати наступні дії.

    • Розпакуйте zip-архів прямо в ту ж саму директорію, де вже встановлений PHP (у нашому прикладі це C:Program FilesPHP4). Деякі файли переписуватимуться поверх, деякі — додадуться. Зокрема, з’явиться директорія extensions, якраз і містить практично всі необхідні модулі.
    • Тепер потрібно дати знати PHP, які модулі він може використовувати, а також зробити деякі налаштування. Для цього відкрийте в Блокноті файл php.ini в директорії з файлами Windows (зазвичай C:WINDOWS). Цей файл був поміщений туди програмою установки PHP. Файл являє собою набір рядків, у кожному з яких встановлюється значення одного параметра. Частини рядків після символу «;», розглядаються як коментарі та ігноруються.
    • Знайдіть параметр magic_quotes_gpc і встановіть його так:
      magic_quotes_gpc=Off

      Цим ми забороняємо PHP примусово вставляти зворотні слеш перед деякими символами, що приходять з форми.

    • Тепер знайдіть і налаштуйте наступний параметр:
      extension_dir=C:Program FilesPHP4extensions

      Цим ми говоримо PHP, що модулі він повинен шукати в директорії C:Program FilesPHP4extensions, тобто саме там, де потрібно. Зверніть увагу на те, що за замовчуванням в цьому параметрі значення «./», тобто в тій же директорії, що і PHP. Це, звичайно ж, неправильно.

    • Знайдіть закомментированные рядки, які починаються з ;extension=. Вам належить розкоментувати ті з них, які відповідають потрібним нам модулів. Підтримка MySQL і календарних функцій вже вбудована в PHP.
    • Не забудьте зберегти зміни у файлі php.ini. Щоб зміни вступили в силу, перезапускати Apache не потрібно, адже ми встановили PHP не як модуль сервера, а як окрему програму.

    Потрібно зауважити, що в попередній версії статті була описана процедура установки PHP3, а не PHP4. Однак прогрес дає про себе знати, і в найближчому майбутньому PHP3, мабуть, буде повністю витіснено своїм побратимом четвертої версії (про це говорить хоча б те, що останній виконує скрипти в кілька десятків (!) разів швидше, маючи при цьому майже в 2 рази більша кількість вбудованих функцій). Крім того, PHP4 сумісний «зверху вниз» з PHP3, що означає, що більшість скриптів, написаних для PHP3, будуть працювати і на четвертій версії інтерпретатора.

    Установка Perl

    «Мова може вважатися закінченою тільки тоді, коли
    в її синтаксисі використовуються всі клавіші на клавіатурі»
    Батько-засновник Perl

    Мабуть, установка Perl — один з найбільш простих кроків, однак, як це не парадоксально, він найчастіше породжує найбільше ускладнень. Наведені нижче рекомендації допоможуть Вам встановити Perl і забути про всі неприємності, пов’язаних з CGI-скриптами на Perl.

    • Насамперед відвідайте http://www.activestate.com зайдіть в розділ Downloads і скачайте звідти самий останній дистрибутив Perl для платформи Win32. При цьому слідуйте рекомендаціям, наведеним на сайті. Коротко вони полягають у наступному: Perl надається не у вигляді саморазворачивающегося exe-архіву, а у вигляді так званого msi-архіву для Microsoft Installer-а. Можливо, на Вашому комп’ютері Installer не встановлений, так що Вам доведеться це зробити, перш ніж встановлювати Perl (посилання на дистрибутив Microsoft Installer-а наведена на сайті в розділі Downloads).
    • У Провіднику двічі клацніть на імені файлу тільки що скачаного дистрибутива Perl. Автоматично запуститься Microsoft Installer і почнеться процес установки. Як зазвичай, натискайте кнопку Next до тих пір, поки не з’явиться діалог із запитом директорії, в яку буде встановлений Perl. За замовчуванням там пропонується C:Perl. Рекомендуємо змінити цю директорію на щось більш зручне, наприклад, C:Program FilesPerl. Якщо Ви любите порядок, зробіть це обов’язково.
    • Тепер налаштуємо сервер. Знайдіть у файлі конфігурації Apache httpd.conf рядок
      AddHandler cgi-script .bat .exe

      Замініть її на

      AddHandler cgi-script .bat .exe .pl .cgi

      Як це ні дивно, але цю директиву AddHandler іноді вказувати не обов’язково. Однак краще перестрахуватися…

    • Знайдіть і розкоментуйте параметр:
      ScriptInterpreterSource registry

      Це дозволить використовувати Apache Реєстру для пошуку Perl-інтерпретатора.

    Ось, власне, і все. Для перевірки працездатності Perl створіть в папці z:localhostcgi файл test.pl з таким вмістом:

    #!/usr/local/bin/perl -w
    print «Content-type: text/htmlnn»;
    print «It works!
    n»;

    Важливо!
    Зверніть увагу на першу сходинку в скрипті. Можна подумати, що вона вказує Apache, що розташований в Perl z:usrlocalbinperl.exe. Насправді ж Apache бачить, що такого файлу не існує, і використовує Реєстру для пошуку асоціації для розширення pl. Відбувається це завдяки директиві ScriptInterpreterSource, яку ми активізували до цього. Однак, хоча Apache ігнорує перший рядок у скрипті, Perl її використовує для того, щоб визначити, які прапори були використані при його запуску (у нашому прикладі це прапор -w, який включає режим виводу повідомлень про помилки в скрипті).

    Встановлення MySQL

    Що ж, дуже корисно… Навіть занадто.
    Дмитро Котеров

    Спочатку визначимося: навіщо взагалі потрібні бази даних Web-програміста? Невже не простіше використовувати звичайний обмін з файлами? Адже зазвичай обсяг даних не дуже великий (якщо Ви тільки не пишете пошукову систему). Наш особистий досвід такий: виявляється, варто витратити якийсь час на вивчення MySQL — це надзвичайно потужний інструмент, який заощадить в майбутньому чимало годин, витрачених на налагодження «скаженого» скрипта. Отже, Ви вирішили встановити у себе на локальному хості підтримку MySQL. Це досить нескладно. Що ж, приступимо.

    • Для початку скачайте з офіційного сайту MySQL http://www.mysql.com розділ Downloads дистрибутив MySQL. Рекомендую вибрати саму останню версію для Windows. Дистрибутив являє собою zip-архів, який треба розгорнути в будь-яку зручну Вам директорію.
    • Запустіть setup.exe з тільки що разархивированного дистрибутива. Натисніть кнопку Next.
    • У вікні з інформацією знову натисніть Next. З’явиться діалог із запитом про вибір директорії для MySQL. За замовчуванням пропонується C:mysql, але буде зручніше використовувати C:Program FilesMySQL. Встановіть цю директорію і натисніть Next.
    • Виберіть тип установки Typical. Почнеться копіювання файлів MySQL. Дочекайтеся його завершення. MySQL встановлена.
    • Для того, щоб активізувати MySQL-сервер, запустіть файл C:Program FilesMySQLbinmysqld.exe. Можете зробити для нього ярлик, однак, так як зазвичай MySQL запускається «в зв’язці» з Apache, буде логічно створити bat-файл, який буде запускати і Apache і MySQL. Назвемо його server.bat і розташуємо в кореневому каталозі диску Z:. Ось зміст цього файлу для Windows 95/98/ME:
      @echo off
      C:Progra~1MySQLbinmysqld.exe -u root
      C:Progra~1Apache~1ApacheApache.exe -k start

      Якщо у Вас встановлений Windows NT або 2000, то краще скористатися таким файлом:

      @echo off
      start C:Progra~1MySQLbinmysqld-nt.exe -u root
      —standalone
      C:Progra~1Apache~1ApacheApache.exe -k start

      Саме для цього bat-файлу найкраще і створити ярлик, призначивши йому гарячу клавішу ++ (тільки, якщо Ви до цього призначили ту ж комбінацію ярлику Apache, не забудьте її там відключити).

    • Перед вимиканням або перезавантаження комп’ютера потрібно завершувати роботу Apache і MySQL. Для цього найзручніше створити bat-файл з ім’ям, наприклад, shutdown.bat, расподложив його в кореневому каталозі диску Z:
      @echo off
      C:Progra~1Apache~1ApacheApache.exe -k shutdown
      C:Progra~1MySQLbinmysqladmin -u root shutdown

      Зручно також створити для цього файлу ярлик і призначити йому комбінацію клавіш ++.

    Тестування MySQL

    MySQL
    Тепер Давайте перевіримо, чи все працює. Для початку запустіть наш файл server.bat, щоб активізувати сервер. Створіть такий PHP-скрипт з назвою mysql.php в директорії z:homelocalhostwww.

    «;
    echo mysql_error();
    exit;
    }
    mysql_select_db(DBName);
    // Створюємо таблицю t. Якщо таблиця вже є,
    // повідомлення про помилку буде придушене, т. к.
    // використовується «@»
    @mysql_query(«create table t(id int,a text)»);
    // Вставляємо в таблицю 10 записів
    for($i=0; $i<10; $i++)
    { $id=time();
    mysql_query(«insert into t(id,a)
    values($id,’Стр$i!’)»);
    }
    // Виводимо всі записи
    $r=mysql_query(«select * from t»);
    for($i=0; $i $f[a]
    n»;
    }
    ?>

    Тепер наберіть в браузері:

    http://localhost/mysql.php

    Якщо все введено правильно, Ви повинні отримати кілька рядків виводу без повідомлень про помилки. При кожному запуску в таблицю t додаються нові рядки, так що з кожним натисканням кнопки Оновити в браузері обсяг виведення буде все збільшуватися.

    Звертаю вашу увагу на константи DBName, HostName, UserName та Password. DBName повинен містити ім’я бази даних (у нашому випадку це test, база даних, яка створюється MySQL за замовчуванням). HostName — завжди localhost, адже ми працюємо на локальному комп’ютері. У визначенні UserName найпростіше підставляти root, що є власником всіх таблиць. При установці MySQL користувачеві root не призначається пароль, так що константа Password дорівнює пустому рядку.

    Часті питання

    «А тут — Ваша цитата»
    Бьерн Страуструп

    Ця глава містить відповіді на найпоширеніші питання, що виникають при установці описаного програмного забезпечення. Будь ласка, ознайомтесь з нею.

    Ви можете додати сюди свою питання. Ми постараємося розглянути його як можна швидше. Однак переконливе прохання не користуватися цим сервісом, якщо ви точно не впевнені, що ваше питання дійсно підходить під визначення «часто задається». Замість цього краще зв’яжіться з автором по електронній пошті: [email protected].

    Q: Я устновил PHP, але навіть простий скрипт типу , запущений з браузера як http://localhost/test.php?name=Pupkin нічого не виводить — повідомляє про неинициализированной змінної $name.
    A: Ваш PHP не створює глобальних змінної, які прийшли з форми або ж через адресний рядок параметрів. Необхідно змінити php.ini — додати туди рядки:

    register_globals = On
    variables_order = «EGPCS»

    Q: Apache запускається нормально (пишеться «Apache running…»), але при наборі в браузері імені будь-якого віртуального хоста IE пише, що не може встановити з’єднання.
    A: Може бути декілька причин цієї помилки.

    • Перевірте, чи не заважає тут включений проксі-сервер. У налаштуваннях IE на вкладці Підключення натисніть кнопку Настроювання мережі. Там повинен бути поставлений прапорець Не використовувати проксі-сервер для локальних адрес. Ще краще (якщо це можливо) взагалі відключити проксі.
    • Перевірте чи файл hosts ви виправили. Нагадую: його ім’я повинно бути hosts без розширення і з літерою «s» на кінці. Використовуйте текстовий редактор, що дозволяє створювати файли без розширення (наприклад, редактор Far-а).

    Q: Я встановив Apache і PHP4 під Windows 98, але при виклику ImageGif($im) виникає помилка:

    Warning: ImageGif: No GIF support in this build in PHP z:homelocalhostwwwtest.php on line 13. В php.ini раскомментировано extension=php_gd.dll.

    A: Нові версії PHP, дійсно, не підтримують цю функцію (закінчився термін ліцензії на формат GIF). Використовуйте замість неї imagePng().

    Q: При запуску MySQL пишеться щось про InnoDB і про те, що не прописані якісь шляхи. Що робити?..
    A: Нічого не робити. Це не помилка, а лише попередження, яке можна спокійно ігнорувати.

    Q: Apache видає наступну помилку в лог-файлі: setup_inherited_listeners: WSASocket failed to open the inherited socket. У чому власне справа? Як виправити?
    A: Швидше за все, не встановлений один із драйверів, необхідний Apache.

    • Перевірте, чи встановлено в Панелі Управління — Мережу TCP/IP. Якщо у вас немає локальної мережі, перевірте також наявність Контролера віддаленого доступу.
    • В старих версіях Windows 95 відсутній необхідний драйвер WinSock версії 2. Якщо у вас саме така операційна система, доведеться оновити WinSock (дистрибутив можна скачати з http://www.microsoft.com).

    Q: При приміщенні Perl-скрипта в кореневу директорію видається:

    Forbidden: you don’t have permission to access /test.pl…

    Хочеться, щоб CGI-скрипти запускалися не тільки з директорії /cgi/, але і з будь-якої іншої директорії.
    A: В необхідній директорії (в нашому прикладі — директорії документів сервера) потрібно створити файл .htaccess такого змісту:

    Options ExecCGI

    Не рекомендую вам для цих цілей правити httpd.conf, т. к. це погано нормально між провайдерами.

    Q: Я встановив MySQL, але можу створювати бази тільки з іменами test, test1 і т. д. При створенні бази з іншим ім’ям видає приблизно наступне:

    Access danied for user ‘@unknown’ to database …

    A: У Вашій версії MySQL-сервера для створення бази даних необхідно в параметрах mysqladmin.exe вказувати ім’я root користувача, наприклад:

    mysqladmin -u root create MyDatabase

    Q: У мене Apache 1.3.6 і у файлі конфігурації httpd.conf відсутній рядок ScriptInterpreterSource registry.
    A: Все вірно: підтримка цієї директиви введена лише в більш нових версіях сервера. Рекомендуємо оновити Apache.

    Q: Тестовий скрипт test.pl працює нормально, проте жодна програма з розширенням cgi не запускається (навіть якщо це той самий тестовий скрипт, перейменований в test.cgi).
    A: Вам необхідно додати асоціацію для файлів з розширенням cgi у Провіднику Windows (так само, як це зробив ActivePerl для pl-файлів при установці). Робиться все це в меню Сервіс — Властивості папки — Типи файлів (у деяких системах Вид — Властивості папки — Типи файлів).