Украинская Баннерная Сеть

Рубрика архива: apache

Бесплатные SSL сертификаты. Палю тему :)

www.startssl.com – бесплатные сертификаты со сроком действия 1 год. Сертификат распознается всеми браузерами кроме оперы, что не есть хорошо, но зато действует год и может быть продлен.

freessl.su – бесплатные сертификаты COMODO со сроком действия 3 месяца. Сертификат распознается всеми браузерами без исключения, но придется каждые 3 месяца генерировать новый, впрочем вся процедура отнимает минут 10 времени.

 

Процедура получения сертификата на startssl.com

1. Регистрация в системе.
Control panel -> Sign-up. Заполняем все поля, нажимаем Continue. На следующей странице вводим код, который придет по почте. На следующей странице генерируем приватный ключ и устанавливаем его. После установки нам будет предложено на всякий случай сохранить резервную копию только что установленного сертификата и предложат ссылку на FAQ, где будет рассказано как это делать.

2. Валидация домена.
На этом нужно пройти валидацию домена, подтвердив, что мы являемся владельцами домена для которого будет генерироваться ключ. Идем в Validations Wizard, выбираем Domain Name Validation, на следующей странице вводим домен, нажимаем Continue. Нам предложат на выбор список адресов на которые может быть выслано письмо для валидации. Выбираем нужный, нажимаем Continue. На следующей странице вводим код, который пришел в письме. Нам сообщают что домен успешно валидирован.

3. Генерация сертификата.
Идем в Certificates Wizard, выбираем “Web Server TLS/SSL Certificate”, нажимаем Continue, вводим пароль для ключа. Полученные ключ копируем к себе на сервер в файл ssl.key и нажимаем Continue. На следующей странице выбираем домен для которого будет выдан сертификат. На следующей странице вводим 1 поддомен (например, www), которому будет на котором можно будет использовать этот же сертификат, нажимаем Continue, нам покажут страницу с итоговой информацией, проверяем и, если все правильно, нажимаем Continue. Всё. Запрос на выпуск сертификата подан. Ожидаем пока на e-mail придет извещение и выпуске сертифката (обещают уложиться в 3 часа, но обычно минут 15-20).

4. Установка на сервер.
Идем в “Tool box”. В разделе “Retrieve Certificate” получаем сертификат для нашего домена. Сохраняем его на сервер в файл ssl.crt. Далее в разделе “StartCom CA Certificates” стягиваем “StartCom Root CA (PEM encoded”), сохраяем на сервер как ca.pem; стягиваем “Class 1 Intermediate Server CA”, сохраняем на сервер как sub.class1.server.ca.pem. Итак, мы имее на сервере 4 файла: ssl.key, ssl.crt, ca.pem, sub.class1.server.ca.pem. ssl.key у нас закрыт паролем, это значит, что apache будет каждый раз при старте спрашивать пароль. Чтобы этого избежать снимаем парольную защиту с ключа:

openssl rsa -in ssl.key -out ssl.key

вводим пароль, который мы использовали в пункте 3. Защита снята. Далее все 4 файла копируем в директорию с конфигами apache и настаиваем virtualhost:

SSLCertificateFile    /path/to/configs/ssl.crt
SSLCertificateKeyFile /path/to/configs/ssl.key
SSLCertificateChainFile /path/to/configs/sub.class1.server.ca.pem
SSLCACertificateFile /path/to/configs/ca.pem

Перезапускаем apache.

Процедура получения сертификата на freessl.su

1. Создание ключа и запроса.
Создаем у себя на сервере ключ:

openssl genrsa -out domainname.key 1024

Формируем запрос:

openssl req -new -key domainname.key -out domainname.csr

Внимание! При создании CSR запроса в поле “common name” нужно ввести точное название домена для которого будет выдан сертификат.

2. Получение сертификата Идем на freessl.su, заполняем форму. В поле CSR копируем всё содержимое из полученного выше файла domainname.csr. Нажимаем далее. Выбираем почтовый ящик, на который будет выслано письмо для валидации домена, нажимаем далее. Проверяем все ли данные верны, нажимаем далее. По электронной почте придет письмо со ссылкой-подтверждением. Переходим по ссылке. Через несколько минут придет письмо с сертификатом и инструкциями по установке.

Защищаем apache 1.3 в FreeBSD. Процессы с привилегиями пользователя.

В этой статье я рассмотрю решения, которые позволяют процессам apache 1.3 выполняться от имени пользователя, которому принадлежит виртуалхост. Архитектура apache 1.3 предполагает только prefork схему, поэтому все описанные ниже решения работают примерно одинаково: в системе запускается некоторое количество процессов apache. При получении запроса он передается одному из бездействующих процессов, процесс определяет на какой виртуалхост пришел запрос и какому пользователю принадлежит этот виртуалхост, после чего процесс suid’ится в пользователя/группу, которым принадлежит виртуалхост. Вся последующая обработка запроса происходит уже от имени пользователя/группы, которым принадлежит виртуалхост.

1. suexec
2. suphp
3. dklab
4. производительность


1. suexec

Описание:

suexec позволяет выполнять CGI скрипты от пользователя, которому принадлежит виртуалхост.

Установка suexec в FreeBSD:

В /etc/make.conf добавить:

.if ${.CURDIR} == /usr/ports/www/apache13
WITH_APACHE_SUEXEC=yes
APACHE_SUEXEC_DOCROOT= /home
.endif

В “APACHE_SUEXEC_DOCROOT” следует задавать директорию в которой располагаются пользователи и их DocumentRoot директории.

После этого:

# cd /usr/ports/www/apache13
# make install clean

Конфигурирование:

В описание виртуалхоста добавить:

User example
Group example

Преимущества:

+ CGI скрипты работают от имени пользователя.

Недостатки:

- От имени пользователя будут выполняться только CGI скрипты. Скрипты PHP, запущенные под mod_php будут продолжать выполняться от имени веб-сервера.


2. suphp

Описание:

suphp – это DSO-модуль (Dynamic Shared Object) для apache. Позволяет выполнять PHP скрипты от пользователя, которому принадлежит виртуалхост.

Установка suphp в FreeBSD:

# cd /usr/ports/www/suphp
# make install clean

Конфигурирование:

в httpd.conf:

LoadModule suphp_module libexec/apache/mod_suphp.so
AddModule mod_suphp.c
suPHP_Engine on
suPHP_AddHandler x-httpd-php
AddType application/x-httpd-php .php
AddHandler x-httpd-php .php

в описании виртуалхоста:

suPHP_UserGroup example example

Преимущества:

+ PHP cкрипты работают от имени пользователя.

Недостатки:

- От имени пользователя будут выполняться только PHP скрипты. CGI скрипты будут продолжать выполняться от имени веб-сервера.
- PHP скрипты запускаются при помощи php-cgi, что лишает возможности использовать mod_php со всеми его преимуществами в плане производительности.


3. dklab apache

Описание:

dklab apache – это apache 1.3.34 c набором патчей от Дмитрия Котерова. Подробную информацию можно получить по адресу: http://dklab.ru/lib/dklab_apache/

Установка dklab apache в FreeBSD:

Можно скачать порт, распаковать в /usr/ports/www/dklab-apache, затем собрать порт:

# cd /usr/ports/www/dklab-apache
# make install clean

Либо можно скачать готовые пакеты и установить при помощи pkg_add:
http://woland.pl.ua/upload/dklab-apache-i386.tbz
http://woland.pl.ua/upload/dklab-apache-amd64.tbz

Конфигурирование:

В описание виртуалхоста добавляем:

User example
Group example

Преимущества:

+ Удобство конфигурирования. Не требуется конфигурировать отдельно suexec и suphp, достаточно директив User/Group в описании виртуалхоста.

Недостатки:

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


4. производительность

Для тестирования производительности использовались 3 файла.
Первый – статический HTML файл с текстом “Hello world!”.
Второй – PHP скрипт:

<? phpinfo() ?>

Третий – CGI скрипт:

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "Hello world!";

Каждый файл запрашивался 50.000 раз в 50 потоков (“ab -c 50 -n 50000 …”). Засекалось время в секундах за которое полностью выполнится тест.

Время выполнения теста (в сек.):

HTML PHP CGI
apache 1.3.41 5 22 152
apache 1.3.41 с suexec - - 229
apache 1.3.41 с suphp - 388 -
dklab apache 395 293 497

Стоит отметить, что тест синтетический и показывает не то, чтобы реальные цифры производительности, а скорее сколько времени требуется apache‘у для того, чтобы переключить пользователя от которого работает процесс. К примеру, dklab apache c mod_php на реальной живой системе показал всего лишь ~7-10% разницу в потреблении ресурсов CPU по сравнению с mod_php на обычном apache.

Отрисовываем в cacti трафик виртуальных хостов apache.

cacti-apache Есть один модуль для apache, называется mod_watch. Модуль предназначен для сбора данных о трафике сгенерированном и/или потребленном виртуальными хостами. Разработчик, правда, решил прекратить поддержку модуля, о чем сообщает на своем сайте, но к счастью мне удалось найти в сети исходники этого модуля для apache 1.3, 2.0 и 2.2. Процесс установки модуля я опишу для каждой версии отдельно. Итак, поехали.

mod_watch для Apache 1.3:
Качаем mod_watch для apache 1.3
Распаковываем архив и собираем модуль:

# tar zxf mod_watch_apache13.tgz
# cd mod_watch_apache13
# make build-dynamic

Собранный модуль помещаем в директорию с модулями apache (пример для FreeBSD, для других ОС замените путь на соответствующий Вашему случаю):

# cp mod_watch.so /usr/local/libexec/apache/

Включаем модуль в httpd.conf:

LoadModule watch_module      libexec/apache/mod_watch.so
AddModule mod_watch.c

В конфигурации виртуального хоста добавляем:

<Location /watch-info>
    SetHandler watch-info
</Location>

Перезапускаем apache:

# apachectl restart

Проверяем работоспособность, заходим браузером на http://example.com/watch-info. Если всё получилось Вы должны увидеть что-то вроде:

example.com 44 0 3575639 362 113 5 0.000 11403376 9534280

mod_watch для Apache 2.0:
Качаем mod_watch для apache 2.0
Распаковываем архив и собираем модуль:

# tar zxf mod_watch_apache20.tgz
# cd mod_watch_apache20
# make -f Makefile.dso build

Собранный модуль помещаем в директорию с модулями apache (пример для FreeBSD, для других ОС замените путь на соответствующий Вашему случаю):

# cp .libs/mod_watch.so /usr/local/libexec/apache2/

Включаем модуль в httpd.conf:

LoadModule watch_module       libexec/apache2/mod_watch.so

В конфигурации виртуального хоста добавляем:

<Location /watch-info>
    SetHandler watch-info
</Location>

Перезапускаем apache:

# apachectl restart

Проверяем работоспособность, заходим браузером на http://example.com/watch-info. Если всё получилось Вы должны увидеть что-то вроде:

example.com 44 0 3575639 362 113 5 0.000 11403376 9534280

mod_watch для Apache 2.2:
Качаем mod_watch для apache 2.2
Распаковываем архив и собираем модуль:

# tar zxf mod_watch_apache22.tgz
# cd mod_watch_apache22
# make -f Makefile.dso build

Собранный модуль помещаем в директорию с модулями apache (пример для FreeBSD, для других ОС замените путь на соответствующий Вашему случаю):

# cp .libs/mod_watch.so /usr/local/libexec/apache22/

Включаем модуль в httpd.conf:

LoadModule watch_module       libexec/apache22/mod_watch.so

В конфигурации виртуального хоста добавляем:

<Location /watch-info>
    SetHandler watch-info
</Location>

Перезапускаем apache:

# apachectl restart

Проверяем работоспособность, заходим браузером на http://example.com/watch-info. Если всё получилось Вы должны увидеть что-то вроде:

example.com 44 0 3575639 362 113 5 0.000 11403376 9534280

настройка Cacti:
Качаем mod_watch для cacti. Файл mod_watch_cacti.pl необходимо положить в директорию /your_path/cacti/scripts/ и сделать:

chmod +x mod_watch_cacti.pl

Файл cacti_graph_template_modwatch_traffic.xml импортируем в cacti, для этого заходим браузером по адресу, где расположен cacti, и в меню выбираем пункт “Import Templates”. Далее создадим график, в меню выбираем “New Graphs”, на появившейся странице в выпадающем меню “Create:” выбираем “ModWatch – Traffic”, нажимаем кнопку “create”, заполняем требуемые поля, создаем график. Всё. Через 15-20 минут на графике отобразятся первые данные.

Apache. Установка и настройка.

apache web server

Для работы DSPAM WebUI, PostfixAdmin и web-интерфейса RoundCube нам потребуется web-сервер с поддержкой suexec и MySQL аутентификации (для DSPAM WebUI), и поддержкой PHP (для RoundCube и PostfixAdmin). В качестве web-сервера мы будем использовать apache 1.3, собранный с поддержкой suexec и модули к нему: mod_auth_mysql_another и mod_php. Использование apache версии 1.3 связано исключительно с личной привычкой, которая выработалась на основании рекомендаций человека имеющего опыт работы с высоко нагруженными системами. По большому счету в данной задаче без разницы какую версию использовать, при желании можно использовать и ветку 2.х, но просто так сложилось, что 1.3 мне ближе, о ней и пойдет речь.

Приступим к установке apache с поддержкой suexec. Включим поддержку suexec и ограничим ее деревом каталогов, где будут находится скрипты. Для этого добавим в /etc/make.conf:

WITH_APACHE_SUEXEC=yes
APACHE_SUEXEC_DOCROOT=/home

Собираем порт:

# cd /usr/ports/www/apache13
# make install clean

Устанавливаем mod_auth_mysql_another:

# cd /usr/ports/www/mod_auth_mysql_another
# make install clean

Устанавливаем mod_php:

# cd /usr/ports/lang/php5
# make config

Отмечаем требуемые опции:

[X] CLI        Build CLI version
[X] CGI        Build CGI version
[X] APACHE     Build Apache module
[Х] SUHOSIN    Enable Suhosin protection system (not for jails)

И собираем порт:

# make install clean

Теперь соберем некоторые расширения PHP, которые понадобятся нашим web-интерфейсам:

# cd /usr/ports/lang/php5-extensions
# make config

Отмечаем следующие опции:

[X] IMAP        IMAP support
[X] MBSTRING    multibyte string support
[X] MYSQL       MySQL database support
[X] SESSION     session support

Собираем порт:

# make install clean

Разрешаем запуск apache, для этого добавляем в /etc/rc.conf:

apache_enable="YES"

Создадим директорию, где в последствии будем размещать конфигурационные файлы виртуалхостов:

# mkdir /usr/local/etc/apache/vhosts

Теперь можно заняться конфигурированием apache. Редактируем файл /usr/local/etc/apache/httpd.conf:

#
# Раздел 1: Общие настройки
#
ServerType standalone
ServerRoot "/usr/local"
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive Off
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 100

# Модули. Лишние модули закоментированы.
# Если они Вам потребуются - можете раскоментировать.
LoadModule config_log_module  libexec/apache/mod_log_config.so
LoadModule mime_module        libexec/apache/mod_mime.so
LoadModule dir_module         libexec/apache/mod_dir.so
LoadModule cgi_module         libexec/apache/mod_cgi.so
LoadModule access_module      libexec/apache/mod_access.so
LoadModule auth_module        libexec/apache/mod_auth.so
LoadModule unique_id_module   libexec/apache/mod_unique_id.so
LoadModule mysql_auth_module  libexec/apache/mod_auth_mysql.so
LoadModule php5_module        libexec/apache/libphp5.so
#LoadModule mmap_static_module libexec/apache/mod_mmap_static.so
#LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
#LoadModule env_module         libexec/apache/mod_env.so
#LoadModule mime_magic_module  libexec/apache/mod_mime_magic.so
#LoadModule negotiation_module libexec/apache/mod_negotiation.so
#LoadModule status_module      libexec/apache/mod_status.so
#LoadModule info_module        libexec/apache/mod_info.so
#LoadModule includes_module    libexec/apache/mod_include.so
#LoadModule autoindex_module   libexec/apache/mod_autoindex.so
#LoadModule asis_module        libexec/apache/mod_asis.so
#LoadModule imap_module        libexec/apache/mod_imap.so
#LoadModule action_module      libexec/apache/mod_actions.so
#LoadModule speling_module     libexec/apache/mod_speling.so
#LoadModule userdir_module     libexec/apache/mod_userdir.so
#LoadModule alias_module       libexec/apache/mod_alias.so
#LoadModule rewrite_module     libexec/apache/mod_rewrite.so
#LoadModule anon_auth_module   libexec/apache/mod_auth_anon.so
#LoadModule db_auth_module     libexec/apache/mod_auth_db.so
#LoadModule digest_module      libexec/apache/mod_digest.so
#LoadModule proxy_module       libexec/apache/libproxy.so
#LoadModule cern_meta_module   libexec/apache/mod_cern_meta.so
#LoadModule expires_module     libexec/apache/mod_expires.so
#LoadModule headers_module     libexec/apache/mod_headers.so
#LoadModule usertrack_module   libexec/apache/mod_usertrack.so
#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
#LoadModule setenvif_module    libexec/apache/mod_setenvif.so

ClearModuleList
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_auth_mysql.c
AddModule mod_php5.c
#AddModule mod_mmap_static.c
#AddModule mod_vhost_alias.c
#AddModule mod_env.c
#AddModule mod_mime_magic.c
#AddModule mod_negotiation.c
#AddModule mod_status.c
#AddModule mod_info.c
#AddModule mod_include.c
#AddModule mod_autoindex.c
#AddModule mod_asis.c
#AddModule mod_imap.c
#AddModule mod_actions.c
#AddModule mod_speling.c
#AddModule mod_userdir.c
#AddModule mod_alias.c
#AddModule mod_rewrite.c
#AddModule mod_auth_anon.c
#AddModule mod_auth_db.c
#AddModule mod_digest.c
#AddModule mod_proxy.c
#AddModule mod_cern_meta.c
#AddModule mod_expires.c
#AddModule mod_headers.c
#AddModule mod_usertrack.c
#AddModule mod_log_forensic.c
#AddModule mod_setenvif.c

#
# Раздел 2: Настройки по-умолчанию для главного хоста и вирт. хостов.
#
Port 80
User www
Group www
ServerAdmin [email protected]
DocumentRoot "/usr/local/www/data"
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
DirectoryIndex index.html index.php index.cgi
AccessFileName .htaccess
<Files ~ "^.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
UseCanonicalName On
TypesConfig /usr/local/etc/apache/mime.types
DefaultType text/plain
HostnameLookups Off
ServerSignature On
ErrorLog /var/log/httpd-error.log

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-tar .tgz
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddHandler cgi-script .cgi

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 /var/log/httpd-access.log combined

#
# Раздел 3: Виртуальные хосты
#
NameVirtualHost *:80
Include /usr/local/etc/apache/vhosts/*.conf

Украинская Баннерная Сеть
Hosting Catalog Rambler's Top100