Компиляция и оптимизация
Шаг 1
Веб сервер Apache, подобно многим приложениям, которые мы инсталлировали, не должен запускаться из-под суперпользователя root. Из этих соображений мы должны создать специального пользователя, который имеет минимальный доступ в систему и предназначен только для запуска демона веб сервера.
[root@deep /]# useradd -c “Apache Server” -u 80 -s /bin/false -r -d /home/httpd www 2>/dev/null :
Шаг 2
Внедрение модуля mod-ssl в дерево исходных кодов Apache
Если вы хотите использовать и включить поддержку SSL шифрования данных в ваш веб сервер Apache, то переместитесь в новый каталог с исходными кодами mod_ssl (cd mod_ssl-version-version/) и введите следующие команды на вашем терминале:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
./configure \
--with-apache=../apache_1.3.12 \
--with-crt=/etc/ssl/certs/server.crt \
--with-key=/etc/ssl/private/server.key
Опция “--with-apache” определяет месторасположения каталога с исходными кодами Apache (мы допустили, что в нашем примере используем Apache версии 1.3.12), опция “--with-crt” определяет месторасположения вашего существующего публичного ключа для SSL шифрования, и опция “--with-key” определяет месторасположение вашего существующего приватного ключа для SSL шифрования.
ЗАМЕЧАНИЕ. Программное обеспечение OpenSSL должен быть уже проинсталлировано на вашем сервере, публичный и приватные ключи тоже должны уже существовать или быть созданы, или вы получите сообщение об ошибке во время конфигурирования модуля mod_ssl. Смотрите главу 16 этой книги “Серверное программное обеспечение (Сетевой сервис шифрования)”, для большей информации.
Шаг 3
Улучшение параметра MaxClients в Apache
По умолчанию в конфигурационном файле Apache (httpd.conf) максимальное число устанавливаемое для параметра MaxClients Parameter равно 256. Для загруженных сайтов и для улучшения производительности рекомендуется увеличить этот параметр. Вы можете сделать это редактируя файл “src/include/httpd.h” в дереве исходных кодов Apache и изменить это значение по умолчанию.
2) Сейчас, мы должны сконфигурировать и инсталлировать PHP4 на нашем Linux сервере:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions -I/usr/include/openssl" \
./configure \
--prefix=/usr \
--with-exec-dir=/usr/bin \
--with-apache=../apache_1.3.12 \
--with-config-file-path=/etc/httpd \
--disable-debug \
--enable-safe-mode \
--with-imap \ (если вы хотите поддержку IMAP & POP).
--with-ldap \ (если вы хотите поддержку сервиса каталогов LDAP).
--with-pgsql \ (если вы хотите поддержку баз данных PostgreSQL).
--with-mm \
--enable-inline-optimization \
--with-gnu-ld \
--enable-memory-limit
Эти опции говорят PHP4:
[root@deep php-4.0]# make
[root@deep php-4.0]# make install
Шаг 5
Внедрение mod_perl в исходные коды
Если вы хотите использовать и включить поддержку языка программирования Perl в ваш веб-сервер Apache, то перейдите к каталог с исходными кодами mod_perl (cd ../mod_perl-1.24/) и введите следующие команды на вашем терминале:
perl Makefile.PL \
EVERYTHING=1 \
APACHE_SRC=../apache_1.3.12/src \
USE_APACI=1 \
PREP_HTTPD=1 \
DO_HTTPD=1
[root@deep mod_perl-1.24]# make
[root@deep mod_perl-1.24]# make install
Шаг 6
Создание/Инсталляция Apache с/без mod_ssl +- PHP4 и/или mod_perl Сейчас, когда вы добавили в исходные коды Apache все модули, которые хотели, наступило время скомпилировать и проинсталлировать его. Переместитесь в каталог с исходными кодами Apache (cd ../apache_1.3.12/) и введите следующие команды на вашем терминале:
SSL_BASE=SYSTEM \ (требуется если вы хотите включить поддержку mod_ssl в Apache).
EAPI_MM=SYSTEM \ ( требуется если вы хотите включить поддержку mm библиотеку разделяемой памяти в Apache).
CC="egcs" \
OPTIM="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
CFLAGS="-DDYNAMIC_MODULE_LIMIT=0" \
./configure \
--prefix=/home/httpd \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/lib/apache \
--includedir=/usr/include/apache \
--sysconfdir=/etc/httpd/conf \
--localstatedir=/var \
--runtimedir=/var/run \
--logfiledir=/var/log/httpd \
--datadir=/home/httpd \
--proxycachedir=/var/cache/httpd \
--mandir=/usr/man \
--add-module=src/modules/experimental/mod_mmap_static.c \ (требуется если вы хотите использовать mod_mmap, смотрите секцию “Оптимизация Apache” в этой главе для большей информации).
--add-module=src/modules/standard/mod_auth_db.c \ (требуется если вы хотите использовать mod_auth_db, смотрите секцию “Безопасность Apache” в этой главе для большей информации).
--enable-module=ssl \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).
--enable-rule=SSL_SDBM \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).
--disable-rule=SSL_COMPAT \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).
--activate-module=src/modules/php4/libphp4.a \ (требуется если вы хотите включить поддержку PHP4 в ваш Apache).
--enable-module=php4 \ (требуется если вы хотите включить поддержку PHP4 в ваш Apache).
--activate-module=src/modules/perl/libperl.a \ (требуется если вы хотите включить поддержку mod_perl в ваш Apache).
--enable-module=perl \ (требуется если вы хотите включить поддержку mod_perl в ваш Apache).
--disable-module=status \
--disable-module=userdir \
--disable-module=negotiation \
--disable-module=autoindex \
--disable-module=asis \
--disable-module=imap \
--disable-module=env \
--disable-module=actions
Эти опции говорят Apache выполнить следующие установки:
ЗАМЕЧАНИЕ. Важно заметить, что удаление всех необязательных модулей во время конфигурирования улучшит производительность вашего веб сервера Apache. В нашей конфигурации приведенной выше, мы удалили большинство неиспользуемых модулей для уменьшения времени загрузки и ограничения риска безопасности вашего веб сервера. Смотрите документацию Apache, чтобы получить информацию о каждом удаленном модуле.
Шаг 7
Сейчас, мы должны инсталлировать Apache на вашем Linux сервере:
[root@deep apache_1.3.12]# make
[root@deep apache_1.3.12]# make install
[root@deep apache_1.3.12]# rm -f /usr/sbin/apachectl
[root@deep apache_1.3.12]# rm -f /usr/man/man8/apachectl.8
[root@deep apache_1.3.12]# rm -rf /home/httpd/icons/
[root@deep apache_1.3.12]# rm -rf /home/httpd/htdocs/
[root@deep apache_1.3.12]# cd /var/tmp/php-4.0
[root@deep php-4.0.0]# install -m 644 php.ini.dist /usr/lib/php.ini
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.crl/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.crt/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.csr/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.key/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.prm/
[root@deep php-4.0.0]# rm -f /etc/httpd/conf/srm.conf srm.conf.default access.conf access.conf.default
Команда “make” будет компилировать все файлы с исходными кодами в исполняемые двоичные, команда “make install” будет инсталлировать исполняемые и сопутствующие им файлы в тербуемые места. Команда “rm -f” удалит небольшой скрипт “apachectl” отвечающий за запуск и остановку демона Apache, так как мы используем для этого срипт “httpd” находящийся в “/etc/rc.d/init.d/”. Мы также удаляем каталог “/home/httpd/icons”, который используется веб сервером Apache при автоматической индексации файлов. Эта возможность несет в себе риск безопасности и из-за этого мы ее отключили. Каталог “/home/httpd/htdocs” содержит все файлы с документацией на Apache, поэтому после прочтения, мы спокойно можем его удалить. Команда “install - m” проинсталлирует файл “php.ini.dist” в каталог “/etc/httpd/” и переименует его в “php.ini”; Этот файл контролирует многие аспекты работы PHP. Каталоги “ssl.crl”, “ssl.crt”, “ssl.csr”, “ssl.key” и “ssl.prm” в “/etc/httpd/conf” связаны с SSL, и в них хранятся публичные и приватные ключи. Так как для хранения ключей мы используем другой путь, “/etc/ssl/”, мы можем их спокойно удалить. В заключении, мы удаляем неиспользуемые файлы “srm.conf”, “srm.conf.default”, “access.conf” и “access.conf.default”, вместо которых сейчас используется одни файл “httpd.conf”.
Очистка после работы.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf apache-version/ apache-version.tar.gz mod_ssl-version-version/ mod_ssl-version-version.tar.gz php-version/ php-version.tar.gz mod_perl-version/ mod_perl-version.tar.gz
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Apache, mod_ssl, mod_perl и php. Также будут удалены сжатые архивы Apache, mod_ssl, mod_perl и php из каталога “/var/tmp”.