Соединение всех элементов

Используемые модули сервера Apache

Модули, которые я использую (кроме SSL, PHP и frontpage):
Module env_module          mod_env.o
Module config_log_module   mod_log_config.o
Module mime_module         mod_mime.o
Module negotiation_module  mod_negotiation.o
Module dir_module          mod_dir.o
Module cgi_module          mod_cgi.o
Module asis_module         mod_asis.o
Module imap_module         mod_imap.o
Module action_module       mod_actions.o
Module alias_module        mod_alias.o
Module rewrite_module      mod_rewrite.o
Module access_module       mod_access.o
Module auth_module         mod_auth.o
Module anon_auth_module    mod_auth_anon.o
Module digest_module       mod_digest.o
Module expires_module      mod_expires.o
Module headers_module      mod_headers.o
Module browser_module      mod_browser.o

Предоставление большей защиты для CGI

Если вы - интернет-провайдер, вы захотите увеличить степень безопасности системы. suexec - утилита, позволяющая вам это сделать; выполнение cgi под пользователем-владельцем веб-каталога, вместо пользователя, запустившего веб-сервер. Перейдите в /usr/src/apache_1.2.6/support и дайте команду make suexec. chmod 4711 suxec; скопируйте этот файл в каталог, указанный в ../src/httpd.h (по умолчанию - /usr/local/etc/httpd/sbin/suexec ). Если путь кажется вам странным - как это казалось мне - измените его в httpd.h.

Компилирование и установка демона сервера

Перейдите в каталог /usr/src/apache_1.2.6/src и отредактируйте Configuration, установив все необходимые модули, входящие в состав вашего Apache. Когда все будет готово, запустите ./Configure и make. Это - последний (и наиболее сложный) шаг компиляции, так что скрестите ваши пальцы. Если все пройдет успешно, скопируйте httpsd в /usr/sbin. Демон достаточно большой, учтите это при компиляции вашего веб-сервера. Создайте директорию /var/httpd с подкаталогами cgi-bin, conf, htdocs, icons, virt1, virt2 and logs. В /usr/src/apache_1.2.6/conf отредактируйте файлы access.conf-dist, mime.types и srm.conf-dist, как вам надо, и скопируйте их в var/httpd/conf/access.conf, srm.conf и mime.types. Скопируйте файл httpsd.pem, созданный с помощью make certificate в каталог /var/httpd/conf. Используйте следующий httpd.conf:

ServerType standalone
Port 80
Listen 80
Listen 443
User wwwrun
Group wwwrun
ServerAdmin webmaster@yourhost.com
ServerRoot /var/httpd
ErrorLog logs/error_log
TransferLog logs/access_log
PidFile logs/httpd.pid
ServerName www.yourhost.com
MinSpareServers 3
MaxSpareServers 20
StartServers 3

SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/ssl.log

<VirtualHost www.virt1.com>
SSLDisable
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-error.log
TransferLog logs/virt1-access.log
User virt1admin
Group users
</VirtualHost>

<VirtualHost www.virt1.com:443>
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-ssl-error.log
TransferLog logs/virt1-ssl-access.log
User virt1admin
Group users
SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/virt1-ssl.log
SSLVerifyClient 0
SSLFakeBasicAuth
</VirtualHost>

<VirtualHost www.virt2.com>
SSLDisable
ServerAdmin webmaster@virt2.com
DocumentRoot /var/httpd/virt2
ScriptAlias /cgi-bin/ /var/httpd/virt2/cgi-bin/
ServerName www.virt2.com
ErrorLog logs/virt2-error.log
TransferLog logs/virt2-access.log
</VirtualHost>

В зависимости от модулей, не все директивы могут быть доступны. Вы можете получить список доступных директив с помощью команды httpsd -h.

Добавление поддержки frontpage

Перейдите в каталог /usr/local/frontpage/version3.0/bin и загрузите ./fpsrvadm. Выберите install и apache-fp. Вам нужно будет ответить на следующие вопросы:

Enter server config filename (Введите имя конфигурационного файла сервера): /var/httpd/conf/httpd.conf
Enter host name for multi-hosting (Введите имя машины для мультихостинга) []: www.virt2.com
Starting install, port (Начало установки, порт) : www.virt2.com:80, web (веб каталог): ""
Enter user's name (Введите имя пользователя) []: virt2admin
Enter user's password (Введите пароль) :
Confirm password (Подтвердите пароль) :
Creating root web (Создание корневого каталога веб)
Recalculate links for root web
Install completed.

Имя пользователя должно соответствовать имени входа в систему веб-пользователя. Пароль не обязательно должен совпадать с системным паролем. Вы должны вручную добавить sendmailcommand:/usr/sbin/sendmail %r к /usr/local/frontpage/www.virt2.com:80.conf, иначе ваши пользователи не смогут посылать веб-генерированные письма. kill -HUP ваш httpsd, чтобы заставить fp заново прочитать файлы конфигурации. Теперь вы можете обращаться к www.virt2.com с вашего клиента frontpage.

При некоторых обстоятельствах fpsrvadm выдает сообщения, что сначала должен быть задан корневой каталог веб. Их можно игнорировать, но вы должны сделать так, чтобы fpsrvadm их не выдавал.

Запуск демона

Запустите Apache с помощью команды httpsd -f /var/httpd/conf/httpd.conf. Теперь вы можете обращаться к www.virt1.com через http и https (кстати, достаточно мощный протокол). Конечно вы должны оплатить реальный сертификат, если вы хотите предоставлять SSL, или вас засмеют ;-).

Скопируйте один файл из каталога примеров php (examples) в virt1, чтобы проверить работу php.

Некоторые соображения

Не используйте расширения frontpage 97. Они не работают, по крайней мере, в Linux. При установке определенных версий библиотек C++, они вроде работают, но ваши журналы и почтовый ящик скоро заполнятся сообщениями вида premature end of script headers Не используйте расширения frontpage 98 версии ниже 3.0.2.1330. Не запутайтесь, номера версий несколько непривычны. Когда зайдете telnet'ом на 80-й порт, введите "get / http/1.0" и дважды нажмите ввод - вы получите версию номер 3.0.4 для frontpage.

Более точно номер версии вы можете узнать при помощи команды /usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version. Старые версии имеют неприятную ошибку, которая требует, чтобы httpd.conf можно было перезаписывать под gid вебсервера'а. Это достаточно плохо, если вас беспокоит безопасность. Я, в любом случае, рекомендую использовать версии новее 3.0.2.1330, лишенные этого недостатка.

Известные ошибки

При запуске Recalculate Links в клиенте frontpage, сервер запускает процесс, который потребляет 99% процессорного времени и около 10 Мб памяти. Но даже с сайтов среднего размера и быстрых машин, Клиент иногда получает сообщение, что время ожидания истекло, хотя вычисление будет закончено правильно. Сообщите пользователям, что нужно подождать, а не нажимать Recalculate Links несколько раз. Уясните для себе, что нужно оборудовать сервер по крайней мере 64 Мб памяти.

Пожалуйста, обратите внимание, что во время записи и SSL, и frontpage могут работать по отдельности, но не вместе - это означает, что вы не можете опубликовывать свои страницы, используя ssl, и не можете использовать webbots через https. Вы можете опубликовать ваше веб-содержимое через 80-ый порт и обращаться к зашифрованному содержимому через порт 443, но ваши счетчики и т.п. будут нарушены. Я думаю это ошибка. Эта проблема будет исправлена в SSL 0.9.0 (я надеюсь).

Заключительное слово

Вопрос для тех, кто думает, что заголовок этого руководства такой-же длинный, как и его текст: Вы когда-нибудь слушали Meat Loaf?

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