FastNetMon

Показаны сообщения с ярлыком Apache2. Показать все сообщения
Показаны сообщения с ярлыком Apache2. Показать все сообщения

среда, 13 января 2010 г.

libapache2-mod-chroot vs mod-chroot-common

Оба этих пакета есть в репо Дебы, но чем они отличаются? Второе являет собой вспомогательный пакет для первого :) Имена, конечно подобраны....

apt-cache depends libapache2-mod-chroot
libapache2-mod-chroot
Depends: mod-chroot-common
Depends: apache2.2-common
Depends: libc6

среда, 6 января 2010 г.

Включение server-status Apache (HTTPD) на Debian

Ставим lynx:
apt-get install lynx -y --force-yes


Перезапускаем Апача:
/etc/init.d/apache2 restart


Смотрим конфиг:
vi /etc/apache2/mods-available/status.conf


Приводим его в вид:

<IfModule mod_status.c>

ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from all
</Location>

</IfModule>



Смотрим статистику:
apache2ctl fullstatus


Если в ответ получаем access deny, то пробуем обходной путь (где xx.xx.xx.xx - это реальный, внешний IP сервера, а не 127.0.0.1 - причин такого поведения я понять не могу):

lynx -dump xx.xx.xx.xx/server-status


Но вот явное указание ip для доступа почему-то не работает, поэтому стоит all.

А вот если все берет и в упор не работает, то надо сделать следующее: http://phpsuxx.blogspot.com/2010/04/tue-apr-13-004812-2010-error-client.html

вторник, 15 декабря 2009 г.

Переключение Apache (httpd) на CentOS 5 в режим worker

Делается это так, открываем конфиг:
vi /etc/sysconfig/httpd


Раскомментируем строку:

HTTPD=/usr/sbin/httpd.worker


Перезапускаем Апача:
/etc/init.d/httpd restart


Если в итоге получаем нечто в стиле:

Starting httpd: [Tue Dec 15 04:02:43 2009] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
Pre-configuration failed


Что лечится отключением зловредного PHP:

mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.old
/etc/init.d/httpd restart

Apache mod_python prefork vs mpm, тесты

Задался идеей сравнить, в каком режиме mod_python будет работать быстрее вот такой командой:
ab -c 100 -n 1000 xx.xx.xx.xx/mptest.py | grep 'Requests per second'


Тестовый скрипт (правда тестовости в нем ну ни капли):

from mod_python import apache


def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!" + str(2**100) )
return apache.OK



Prefork:

ab -c 100 -n 1000 88.198.35.235/mptest.py
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 88.198.35.235 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software: Apache/2.2.3
Server Hostname: 88.198.35.235
Server Port: 80

Document Path: /mptest.py
Document Length: 43 bytes

Concurrency Level: 100
Time taken for tests: 9.278980 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 190190 bytes
HTML transferred: 43043 bytes
Requests per second: 107.77 [#/sec] (mean)
Time per request: 927.898 [ms] (mean)
Time per request: 9.279 [ms] (mean, across all concurrent requests)
Transfer rate: 19.94 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 89 352.3 3 3002
Processing: 4 593 774.1 197 3077
Waiting: 2 583 767.7 196 2684
Total: 6 682 823.0 466 3080

Percentage of the requests served within a certain time (ms)
50% 466
66% 603
75% 1074
80% 1148
90% 2540
95% 2599
98% 2687
99% 3071
100% 3080 (longest request)



Worker:


ab -c 100 -n 1000 88.198.35.235/mptest.py
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 88.198.35.235 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software: Apache/2.2.3
Server Hostname: 88.198.35.235
Server Port: 80

Document Path: /mptest.py
Document Length: 43 bytes

Concurrency Level: 100
Time taken for tests: 7.688384 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 190000 bytes
HTML transferred: 43000 bytes
Requests per second: 130.07 [#/sec] (mean)
Time per request: 768.838 [ms] (mean)
Time per request: 7.688 [ms] (mean, across all concurrent requests)
Transfer rate: 24.06 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 199 453.4 5 1791
Processing: 3 566 603.3 511 2697
Waiting: 3 559 600.3 507 2696
Total: 6 766 699.5 554 2703

Percentage of the requests served within a certain time (ms)
50% 554
66% 864
75% 1192
80% 1400
90% 1796
95% 2132
98% 2700
99% 2701
100% 2703 (longest request)


Провел по пять измерений (работа была через lo интерфейс) для каждого режима работы:

prefork:107.77 [#/sec] (mean)
2294.89 [#/sec] (mean)
2361.05 [#/sec] (mean)
2398.47 [#/sec] (mean)
2617.80 [#/sec] (mean)
2279.28 [#/sec] (mean)

worker:
2844.17 [#/sec] (mean)
2999.95 [#/sec] (mean)
2548.97 [#/sec] (mean)
2589.53 [#/sec] (mean)
2593.53 [#/sec] (mean)


Итого:

prefork: 2389 r/sec
worker: 2714 r/sec


Хотя визуально, "отзывчивость" системы при worker выше, но результаты примерно одинаковые и разница на большем числе измерений, уверен, будет невелика. Так что можно не холиварить и продолжать использовать любой из mpm. Правда вот очень интересно, как осуществляется взаимодействие Apache в режиме Worker и thread safe модулей.

Установка Apache mod_python, CentOS 5.4

Устанавливаем:
yum install -y httpd mod_python


Запускаем:
/etc/init.d/httpd start


Убеждаемся, что mod_python подключился к Apache:

apachectl -M 2>&1 | grep python
python_module (shared)


Открываем конфиг веб-сервера:
vi /etc/httpd/conf/httpd.conf


Добавляем туда:

<Directory /var/www/html>
AddHandler mod_python .py
PythonHandler mptest
PythonDebug On
</Directory>


Перезапускаем:
/etc/init.d/httpd restart



Переходим в папку веб-сервера:
cd /var/www/html/


Создаем файл mptest.py:

from mod_python import apache

def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!")
return apache.OK



Открываем в браузере: http://my.ad.dr.es/mptest.py и любуемся приветствием :)

Официальная документация: тут

четверг, 10 декабря 2009 г.

Шейпинг HTTP трафика, Apache, mod_bw

Сейчас долго пытался себя заставить изучить tc, но вдруг внезапно пришла в голову отличная мысль, что полосу можно резать посредством mod_bw прямо около Апача! Для CentOS этот пакет есть в репо Epel.

вторник, 8 декабря 2009 г.

Установка Apache 2.2 на Windows 2008 Server

1. Качаем со страницы http://httpd.apache.org/download.cgi файл "Win32 Binary including OpenSSL 0.9.8k (MSI Installer)". А вот прямая ссылка. Файл рекомендую сохранять в папку C:\distro.

2. Запускаем исполняемый файл C:\distro\apache_2.2.14-win32-x86-openssl-0.9.8k и перед нами появляется мастер установки
3. Нажимаем Next
4. Выбираем галочку "I accept the term in the license agreement", тем самым принимая лицензионное соглашение, и жмем Next
5. Жмем Next
6. Теперь перед нами окно "Server Information", будем заполнять его постепенно.
6.1 Прописываем в Network Domain и Server Name "domain." соответственно без кавычек.
6.2 В поле Administrators Email вписываем либо свой email, либо произвольный - например support@microsoft.com
6.3 Ставим галочку "for All Users, on port 80, as a Service".
7. Жмем Next
8. Перед нами окно "Please select a setup type": выбираем "Typical" (впрочем, в "Custom" ничего полезного и нету - только developer headers ) и жмем Next.
9. Выбираем "Destination Folder", оно стандартно выставлено в "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\", так что меня не требуется, щелкаем Next.
10. Когда все вопросы о режимах установки решены, щелкаем Install для начала установки
11. Дожидаемся появления экрана "Installation Wizard Completed" и жмем Finish.

Убеждаемся, что Апач запустился и добавлен в автозапуск
Теперь надо убедиться, что сервис Apache запустился, для этого идем - Start -> Administrative tools -> Services и ищем там пункт "Apache2.2" и проверяем, что в поле status стоит "Started", а в поле "Startup type" стоит "Automatic".

Проблемы с соединением?
Но если Windows настроена правильно, то при попытке подключиться к адресу: http://ip.ad.dr.es нас ожидает страница "сервер не найден", т.к. фаерволл заблокировал соединение.

Настройка Windows Firewall
Идем по маршруту Start -> Administrative Tools -> Windows Firewall with Advanced Security. Теперь с левой стороны выбираем "Inbound Rules", т.к. нам необходимо разрешить входящие соединения на 80й порт. Теперь в меню выбираем Action -> New Rule.

1. Выбираем Port и щелкаем Next
2. В верху выбираем TCP, внизу "Specific local ports" и вводим 80. Выбираем Next
3. Allow the connection, Next
4. Next (т.к. у нас фактически вариант подключения всегда един)
5. В поле "Name" вводим "Apache22", а в поле "Description": "Apache 2 Web Server". Выбираем Finish

Итак, теперь снова заходим на страницу: http://ip.ad.dr.es и должны увидеть надпись "It works!". Ну вот и все, серверный Виндовс побежден :)

суббота, 5 декабря 2009 г.

Установка Apache + PHP на Debian 5 Lenny

Ставим пакеты Apache:
apt-get install apache2 -y --force-yes


Ставим пакеты PHP5 (+набор наиболее популярных расширений):
apt-get install -y --force-yes libapache2-mod-php5 php5-cli php5-curl php5-gd php5-mcrypt php5-mhash php5-mysql php5-sqlite php5-xsl php5-xmlrpc


После указанных операция PHP сам подключается к Апачу (см /etc/apache2/mods-enabled/php5.load и /etc/apache2/mods-enabled/php5.conf) и готов к работе.

Перезапускам Апача чтобы новый модуль загрузился:
/etc/init.d/apache2 restart


Активируем поддержку mod_rewrite по моему мануалу.

Теперь необходимо включить обработку .htaccess
vi /etc/apache2/sites-enabled/000-default


Ищем там блок Directory от " /var/www/" и заменяем внутри него "AllowOverride None" на "AllowOverride All" и перезапускаем Апача.

Создаем тестовый PHP скрипт:
echo "<?PHP phpinfo(); ?>" > /var/www/index.php


Теперь открываем страницу по адресу: http://ip.ad.dr.es/index.php и убеждаемся в том, что PHP работает (в заголовке "PHP Version 5.2.6-1+lenny4" и полный список опций PHP).

Ну вот и все :) Теперь осталось научиться работать с Виртулхостами (VirtualHost - это способ размещения нескольких сайтов на одном IP).

вторник, 1 декабря 2009 г.

mod_fcgid: read data timeout in 40 seconds


vi /etc/httpd/conf.d/fcgid.conf


или (Debian)


vi /etc/apache2/mods-available/fcgid.conf



IPCCommTimeout 300



/etc/init.d/httpd restart

Сколько в памяти занимает определенный модуль Apache?

Самый тупейший способ такой:
ls -lah /etc/httpd/modules/


Ну а вообще, метод очень приблизительный (да, да, у модулей есть зависимости, что светятся в ldd, да, у модулей есть спец буфера, но вцелом...). Ну а вообще, поиски правильного метода продолжаются :)

вторник, 17 ноября 2009 г.

пятница, 13 ноября 2009 г.

Включение server-status Apache (HTTPD) на Centos

Очень часто при анализе нагрузки на сервер требуется узнать, какие же именно сайты грузят машину, для этого как нельзя лучше подходит Apache server-status, как его использовать и активировать я расскажу ниже.

Для начала ставим пакет links, необходимый для работы страницы статуса при просмотреть из консоли:
yum install links elinks -y


Открываем конфиг Апача:
vi /etc/httpd/conf/httpd.conf


И расскомментируем (убираем знак # в начале строки) там следующие строки:
ExtendedStatus On


Также раскомментируем следующий блок:

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com
</Location>


Только корректируем строку Allow from:
Allow from 127.0.0.1



После этого рестартим Апача:
/etc/init.d/httpd restart


Теперь смотрим результат нашей работы:
/etc/init.d/httpd fullstatus


Если же в ответ мы получаем connection refused или что-то подобное (бывает при использовании nginx + ispmanager, когда Апача не биндится на 80й порт), испольуем следующую команду:

elinks -dump http://localhost:8080/server-status

понедельник, 2 ноября 2009 г.

Установка SSL сертифкатов на Apache, Centos 5

Сертикат и ключ лежат по следующим путям:
/etc/pki/tls/certs/localhost.crt
/etc/pki/tls/private/localhost.key


После этого необходимо перезагрузить httpd:

/etc/init.d/httpd restart


Если на ключе стоит пароль, то его следует снять вот так: http://phpsuxx.blogspot.com/2009/02/apache.html

четверг, 29 октября 2009 г.

Генерация CSR

Что делать, если GoDaddy ругается: "Make sure the CSR you generate uses a 2048 or greater bit key lengthLearn more"

Но, прошу отметить тот факт, что Common Name для WildCard должно быть следующее: "*.domain.ru" (без кавычек, разумеется).

Генерируем приватный ключ:

openssl genrsa -des3 -out domain.key 2048


Генерируем CSR:

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

Можно прочесть информацию из уже сгенерированного CSR:
openssl req -text -noout -in host.csr



Источник: инструкцию