Компілювання і установка - http сервер apache

Цей документ висвітлює питання компілювання і установки сервера Apache тільки на UNIX і UNIX-подібних системах. Якщо ви хочете встановити сервер під Windows, то вам необхідно прочитати документ "Використання Apache під Microsoft Windows". Інформація, що стосується інших платформ, міститься в документі "Платформи".

Середа конфігурації і установки сервера повністю відрізняється від тієї, яка була в Apache 1.3. Apache 1.3 використовував звичайний набір скриптів, що дозволяв спростити процес установки. Apache 2.0 тепер використовує системи libtool і autoconf. що робить сервер схожим на інші програмні продукти з відкритим вихідним кодом (Open Source projects).

$ PREFIX / bin / apachectl start

NN необхідно замінити на поточний молодший номер версії, а замість PREFIX треба вказати шлях, по якому повинен бути встановлений сервер. Якщо PREFIX не вказано, то установка за замовчуванням проводиться в каталог / usr / local / apache2.

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

Вимоги, необхідні для успішної збірки сервера:

Дисковий простір Переконайтеся, що на диску є як мінінімум 50 MB вільного місця для тимчасових файлів. Після установки Apache займає приблизно 10 MB. Точний розмір займаного місця буде залежати в основному від обраної конфігурації і додатково встановлюються модулів, що не входять в дистрибутив Apache. ANSI-C компілятор і необхідне середовище збірки Переконайтеся, що на вашій системі встановлено ANSI-C компілятор. Рекомендується використовувати GNU C компілятор (GCC) від Free Software Foundation (FSF) (версії 2.7.2 цілком достатньо). Якщо у вас інший компілятор, то з'ясуйте, чи підтримує він стандарт ANSI. Перевірте також, щоб у змінній оточення PATH було вказано каталог, який містить основні утиліти, необхідні для збірки (make та інші). Синхронізація часу У деяких заголовках HTTP протоколу вказується час. Тому вам необхідно з'ясувати, як можна встановити у вашій системі засіб синхронізації часу. Зазвичай для цих цілей використовуються програми ntpdate або xntpd. засновані на мережевому протоколі синхронізації часу (Network Time Protocol - NTP). Для отримання більш докладної інформації про NTP і серверах синхронізації часу, зверніться в групу новин Usenet comp.protocols.time.ntp. а також відвідайте домашню сторінку NTP Perl 5 [НЕОБОВ'ЯЗКОВО] Для виконання деяких допоміжних скриптів, таких як apxs або dbmmanage (які написані на Perl), необхідний інтерпретатор з мови Perl (версії 5.003 або вище досить). Якщо конфігураційний скрипт `configure 'не знайде його у вашій системі, то ви все одно зможете зібрати і встановити Apache 2.0 - в цьому випадку не будуть працювати тільки перераховані вище допоміжні скрипти. Якщо у вашій системі встановлено кілька інтерпретаторів з мови Perl (наприклад Perl 4 і Perl 5), то для того щоб скрипт ./configure вибрав потрібний, виконайте його з опцією --with-perl (опис дивіться нижче).

Apache можна завантажити зі сторінки завантаження Apache HTTP Software Foundation. на якій також наводиться список деяких дзеркальних серверів. Тут ви знайдете саму останню стабільну версію сервера.

Після завантаження, особливо якщо вона відбувалася з дзеркального сервера, необхідно переконатися, що у вас в руках повна, незмінна версія HTTP сервера Apache. Це виконується тестуванням архіву (tarball) на відповідність PGP підпису, що є, в свою чергу, двокрокове процедурою. По-перше, ви повинні завантажити файл KEYS зі сторінки завантаження Apache Software Foundation. (Для того щоб бути впевненим в тому, що сам файл KEYS не був змінений, його краще взяти з попереднього дистрибутива Apache або взяти з сервера відкритих ключів.) Потім ключі можна імпортувати в вашу особисту базу даних ключів за допомогою наступних команд (в залежності від версії pgp):

$ Gpg --import KEYS

Наступний крок полягає в безпосередній перевірці архіву (tarball) з використанням PGP підписи, яку завжди треба брати на основному веб-сервері Apache. Файл з PGP підписом мати таку ж назву, що і архів дистрибутива плюс закінчення .asc. Перевірити дистрибутив можна, набравши наступні команди (знову ж таки, це залежить від версії pgp, встановленого у вашій системі):

$ Pgp httpd-2_0_NN .tar.gz.asc

$ Gpg --verify httpd-2_0_NN .tar.gz.asc

Ви повинні побачити щось на зразок:

Good signature from user "Martin Kraemer ".

Залежно від довірчих відносин, що містяться у вашій базі даних ключів, ви можете також отримати повідомлення про те, що відношення між ключем і тим, хто їм підписався, неможливо встановити. Це не повинно вас турбувати в тому випадку, якщо ви впевнені в справжності файлу KEYS.

Розпакування архіву вихідних кодів Apache HTTP сервера полягає в його безпосередньої розпакування та розархівуванні (untarring):

$ Gzip -d httpd-2_0_NN .tar.gz
$ Tar xvf httpd-2_0_NN .tar

Після виконання цих команд буде створено новий каталог з вихідними кодами дистрибутива. Ви повинні зайти в цей каталог, перш ніж почнете компілювати сервер.

Наступний крок полягає в конфігурації дерева вихідних кодів згідно з тією системою, на яку ви встановлюєте сервер, і вашими власними потребами. Це робиться за допомогою скрипта configure. розташованого в кореневому каталозі дистрибутива. Розробники, які завантажили дерево вихідних кодів за допомогою CVS, повинні встановити в своїй системі утиліти autoconf і libtool і виконати програму buildconf. перш ніж вони зможуть продолжніть установку. В офіційних випусках сервера цього робити не потрібно.

Для конфігурації дерева вихідних кодів, з використанням значень всіх опцій за замовчуванням, просто виконайте скрипт ./configure без параметрів. Для того щоб змінити значення опцій, скрипт configure пропонує широкий набір змінних і опцій командного рядка. При цьому змінні оточення поміщаються перед командою ./configure. в той час як інші опції - після. Найбільш важлива опція тут - це префікс каталогу установки, тобто той шлях, по якому згодом буде встановлено Apache. Але крім цієї існує ще великий вибір опцій, необхідних для тонкої настройки сервера.

Для того щоб отримати уявлення про гнучкість конфігурування може виникнути ситуація Apache, розгляньте наведений нижче типовий приклад запуску скрипта ./configure. Така конфігурація дозволяє компілювати сервер в каталог / sw / pkg / apache. використовуючи зазначений компілятор з декількома призначеними для нього опціями командного рядка, і встановити ще два додаткових модуля mod_rewrite і mod_speling. які можна буде потім використовувати за допомогою механізму DSO.

$ CC = "pgcc" CFLAGS = "- O2" \
./ Configure --prefix = / sw / pkg / apache \
--enable-rewrite = shared \
--enable-speling = shared

При виконанні, скрипт configure перевіряє, чи встановлено у вашій системі все необхідне, а потім створює Make-файли (Makefiles), які будуть потім використані при компіляції сервера.

Найбільш простий спосіб дізнатися про всі доступні конфігураційних опціях - це виконати команду ./configure --help. На екран буде виведено короткий опис практично всіх доступних опцій і змінних оточення.

Програма autoconf використовує ряд змінних оточення для конфігурації середовища збірки. Взагалі, за допомогою цих змінних можна змінити лише метод збирання сервера - контролювати включення і виключення додаткових опцій сервера цим неможливо. Ці змінні можна включити в середу до виклику скрипта configure. але найпростіше це зробити так, як було показано в прикладі вище.

CC =. Команда виклику компілятора з мови C CPPFLAGS =. Додаткові опції препроцесора і компілятора з мови C. CFLAGS =. Опції налагодження та оптимізації компілятора з мови C. LDFLAGS =. Додаткові опції для компоновщика. LIBS =. Інформація про розташування бібліотек (опції "-L" і "-l"), що передається компонувальнику. INCLUDES =. Шляхи, якими шукаються заголовки. ( "-Idir"). TARGET =. [Початкове: apache] Ім'я файлу після складання сервера NOTEST_CPPFLAGS =. NOTEST_CFLAGS =. NOTEST_LDFLAGS =. NOTEST_LIBS =. Ці змінні оточення виконують ту ж роль, що і ті ж самі змінні, але без приставки NOTEST. Різниця полягає в тому, що вони додаються в середу після того, як autoconf виконав тестування можливостей операційного середовища. Це дозволяє використовувати ті опції, які б викликали помилку при подібному тестуванні, але включення яких обов'язково для остаточного складання сервера. SHLIB_PATH =. Опції компілятора і компонувальника, що визначають шлях до поділюваних бібліотек.

--help Видає інструкцію з використання програми, включаючи всі можливі опції, після чого відразу ж завершує роботу. --quiet Запобігає висновок повідомлень, що починаються з "checking." --verbose Видає повну інформацію в процесі конфігурації, включаючи імена файлів, що перевіряються.

В даний час існують два способи завдання шляхів, за якими Apache встановить свої файли. Перший спосіб - це явно вказати Apache каталог, за яким він встановиться.

--prefix = PREFIX [Початкове: / usr / local / apache2] Визначає шлях, по якому буде проведена установка Apache.

Більш того, існує можливість встановити архітектурно - залежні файли в інший спеціально заданий каталог.

--exec-prefix = EPREFIX [Default: PREFIX] Визначає шлях, по якому будуть встановлені архітектурно - залежні файли.

Другий спосіб є більш гнучким. Він полягає у використанні файлів config.layout. Використовуючи цей метод, можна вказати каталог установки для будь-якого типу файлів Apache. Файл config.layout містить кілька прикладів конфігурації. Використовуючи ці приклади, ви можете самі створювати власні конфігурації установки. Різні макети установок групуються в роздільних секціях . . після чого до них можна звертатися за допомогою імені FOO.

--enable-layout = LAYOUT Використовує іменований макет, описаний у файлі config.layout. в якому прописані всі установчі шляху.

Apache - це модульний сервер. Тільки самі основні функції включені в ядро ​​сервера. Додаткова функціональність доступна за допомогою модулів. Під час процесу конфігурації ви повинні вибрати ті модулі, які будуть компілюватися разом з сервером. Про всі доступні модулях ви можете прочитати у відповідному списку модулів. Модулі, статус яких позначений як "Базовий", компілюються разом з сервером за замовчуванням; якщо вам не потрібні деякі базові модулі, ви повинні спеціально це вказати при конфігурації (базовим модулем, наприклад, є mod_userdir). Модулі з іншим статусом не компілюються разом з сервером за замовчуванням, і (в разі необхідності) повинні бути прописані при конфігуруванні окремо (прикладом такого модуля може послужити mod_expires).

Є два способи вказати Apache використовувати будь - якої модуль. Модулі можуть бути скомпільовані як статичні. при цьому їх код включається безпосередньо в виконуваний код сервера Apache. Або ж, якщо ваша операційна система підтримує динамічно розділяються об'єкти (Dynamic Shared Objects) і і autoconf може визначити, що це так, то модулі можуть бути скомпільовані як динамічні. DSO модулі зберігаються окремо від ядра сервера, і можуть використовуватися сервером в залежності від конфігураційних директив часу виконання (тобто відповідають за роботу вже зібраного сервера), що надаються модулем mod_so. Модуль mod_so автоматично включається в ядро ​​сервера, якщо хоча б один модуль компілюється як динамічний. Якщо ж ви не компілюєте ніякі динамічні модулі, але хочете, щоб ваш сервер все ж був здатний працювати з DSO модулями, то при конфігурації вкажіть наступну опцію: --enable-so.

--enable-MODULE [= shared] Компілювати і включити в ядро ​​сервера модуль MODULE. MODULE - це ідентифікатор модуля. який можна отримати, відкинувши від імені модуля, зазначеного в документації, рядок "_string". Щоб компілювати модуль як DSO, додайте опцію = shared. --disable-MODULE Прибрати MODULE зі списку компільованих модулів (якщо він є в цьому списку). --enable-modules = MODULE-LIST Компілювати і включити в ядро ​​сервера модулі, ідентифікатори яких наведені в списку MODULE-LIST. Елементи списку відокремлюються один від одного пробілами. --enable-mods-shared = MODULE-LIST Компілювати модулі, ідентифікатори яких наведені в списку MODULE-LIST. як динамічні.

Наприклад, щоб включити в сервер модулі mod_dav і mod_info. ви можете використовувати або

/ Configure --enable-dav --enable-info

або еквівалентну попередньої команду

/ Configure --enable-modules = "dav info"

На додаток до цього існують спеціальні ключові слова all або most. які можуть бути використані для компілювання всіх або більшості модулів відразу. Ви можете виключити з цього списку небажані модулі, застосовуючи відповідні опції --disable-MODULE. Наприклад, для того щоб включити в роботу сервера всі модулі як DSO за винятком mod_info. ви можете написати наступне

/ Configure --enable-mods-shared = all --disable-info

На додаток до стандартного набору модулів, Apache 2.0 компілюється разом з деякими мульти - процесним модулем (MPMs). Один і тільки один МП - модуль може бути скомпільовано разом з сервером. Список МП - модулів, компільованих за замовчуванням для кожної платформи, можна знайти у відповідному розділі документації; МП - модуль за замовчуванням можна змінити наступної опцією командного рядка configure

--with-mpm = NAME компілювати разом з сервером буде МП - модуль з ім'ям NAME.

Деякі модулі Apache, як наприклад mod_auth_dbm і mod_rewrite (директива RewriteMap), використовують у своїй роботі прості бази даних, організовані за принципом ключ / значення, що збільшує швидкість доступу до інформації. Підтримка SDBM баз даних включена в ядро ​​сервера, так що використання баз даних подібного типу можливо завжди. Якщо вам потрібні бази даних іншого типу, то можете використати такі опції:

--with-gdbm [= path] --with-ndbm [= path] --with-berkeley-db [= path] Якщо не вказано значення path. Apache буде шукати заголовки та бібліотеки в стандартних каталогах. Явна вказівку path змусить Apache проводити пошук відповідних файлів в каталогах path / lib і path / include. Можна також вказати специфічні шляхи для заголовків файлів і бібліотек, написавши їх через крапку з комою.

Разом з Apache можна знайти допоміжну програму suexec. яка дозволяє встановити більш жорсткий контроль над виконанням призначених для користувача CGI програм. Проте, якщо suexec конфігурувати неправильно, то можуть з'явитися значні прогалини в системі безпеки сервера. Тому ви повинні дуже уважно прочитати документацію suexec. якщо вирішите використовувати цю програму.

Тепер ви можете скомпілювати і зібрати сервер Apache, виконавши наступну команду:

Наберіться терпіння - компіляція сервера з базовою конфігурацією (конфігурацією за умовчанням) займає приблизно три хвилини на такій системі, як Pentium III / Linux 2.2. Реальний час збирання буде залежати від вашого апаратного забезпечення і від кількості модулів, які ви вирішили компілювати разом з сервером.

Тепер настав час для установки сервера в каталог PREFIX. яка була вказана при конфігурації Apache (дивіться вище опцію --prefix), виконавши:

Якщо встановлювати Apache поверх попередньої версії сервера, то старі конфігураційні файли і документи будуть залишені без змін.

Далі ви можете налаштувати ваш HTTP сервер Apache можна зробити редагуючи конфігураційних файлів в каталозі PREFIX / conf /.

$ Vi PREFIX /conf/httpd.conf

Тепер ви можете запустити свій HTTP сервер Apache, виконавши наступну команду:

$ PREFIX / bin / apachectl start

$ PREFIX / bin / apachectl stop