CentOS apache php

Установка Web-servera Apache

# yum -y install httpd

Устанавливаем сервис в автозагрузку:

# chkconfig http on
# chkconfig --list | grep httpd
0:off   1:off   2:on    3:on    4:on    5:on    6:off

Запускаем httpd

# service httpd start
Starting httpd: [  OK  ]

Посмотреть версию httpd

# httpd -v
Server version: Apache/2.2.3

Проверить конфигурационный файл (находиться в /etc/httpd/conf/httpd.conf ) на ошибки

# apachectl configtest

Проверить конфигурацию виртуальных хостов

# httpd -S

Если аккуратненько необходимо перезагрузить сервер то воспользуйтесь командой

# apachectl graceful

Подключаем php5

# yum -y install php php-cli php-mysql mysql

Перезагружаем apache

# service httpd restart
Stopping httpd:                                           [  OK  ]
Starting httpd:                                           [  OK  ]

В DocumentRoot – по умолчанию /var/www/html, положим файл

info.php с содержанием: <?php phpinfo (); ?>

При заходе на http://ip.ip.ip.ip/info.php у нас будет страница с конфигурацией php. Как обновить php до необходимой версии описывал здесь

Устанавливаем ZendOptimizer

Скачиваем ZendOptimizer с официального сайта , для этого необходимо зарегистрироваться.

Распаковываем архив, и копируем файл ZendOptimizer.so например в папку /usr/lib/php/modules

Обязательно отключаем SELinux

# setenforce 0
Затем в файле  /etc/selinux/config устанавливаем
SELINUX=disabled

В файле php.ini (/etc/php.ini) Прописываем строчку

zend_extension=/usr/lib/php/modules/ZendOptimizer.so

Перезагружаем httpd

# service httpd restart

Проверяем

# php -v
PHP 5.1.6 (cli) (built: Mar 31 2010 02:44:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

Установка Ioncube вместе с ZendOptimizer
Скачиваем необходимый ioncube здесь

# wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
# tar zxf ioncube_loaders_lin_x86.tar.gz
# mv ioncube /usr/local

В конфигурационном файле /etc/php.ini добавляем так как у меня php 5.1:

zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.1.so
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_5.1_ts.so

Перезагружаем httpd

# php -v
PHP 5.1.6 (cli) (built: Mar 31 2010 02:44:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with the ionCube PHP Loader v3.3.20, Copyright (c) 2002-2010, by ionCube Ltd., and
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

Включаем server-status
В конфигурационном файле уберем комментарии:

ExtendedStatus On
SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com

Устанавливаем значение Allow from Ваш_IP
Заходим на страницу http://IP.IP.IP.IP/server-status
Можно посмотреть какая загрузка на apache и к каким сайтам идет больше всего запросов, пригодиться при маленьком DOS

Установка mod_evasive

Скачиваем модуль

# wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz

Распаковываем модуль

# tar xvf mod_evasive_1.10.1.tar.gz

Устанавливаем http-devel, вдруг не установлен

# yum -y install httpd-devel

Устанавливаем mod_evasive

# /usr/sbin/apxs -i -a -c mod_evasive20.c

Добавляем в httpd.conf

    DOSHashTableSize    3097
    DOSPageCount        5
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10

DOSPageCount: число запросов к одной странице от одного и того же IP в течение указаного интервала времени.
DOSSiteCount: число запросов ко всем страницам домена, т.е если поступило более 50-ти запросов с одного ip на разные страницы домена – тогда такой ip будет заблокирован.
DOSPageInterval: Интервал для директивы DOSPageCount (в секундах)
DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах)
DOSBlockingPeriod: На сколько заблокировать ip (в секундах)

Перезапускаем httpd
Проверяем ( в комплекте идет perl скрипт)

# chmod +x test.pl
# ./test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden