Установка nginx,eaccelerator и обновление php,mysql,apache на CentOS
Создано Евгений Злобин в октября 8, 2009
Данная публикация является логическим продолжением одной из предыдущих, в которой я описывал установку yum и ISPManager на CentOS.
Зачем нам nginx? Если уж вы читаете статью о том, как установить nginx, то для себя наверняка решили зачем он вам. Более подробно о связке nginx + apache можно почитать в этой статье.
Для начала установим отличный репозиторий
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
Теперь займемся обновлением ПО. Удалим или обновим свой старый php
yum remove php
теперь установим новый
yum install php php-devel php-fpm php-mcrypt php-mssql php-gd php-mysql
Обновим mysql и apache
yum update mysql
yum update httpd
Разберемся с установкой nginx. Первым делом зайдите в панель ISPManager, найдите там ссылку «Возможности» и перейдите по ней. Если в списке присутствует nginx, то просто устанавливаем его путем нажатия на «горящую» лампочку. Если же в списке nginx отсутствует, то действуем следующим образом:
yum install nginx
Для того, чтобы связать ISPManager и nginx очищаем кэш пакетов ISPManager
/usr/local/ispmgr/sbin/pkgctl -D cache
и рестартим ИСП
killall -9 -r ispmgr
Идем в пункт Возможности(Features) панели ISPManager и там устанавливаем Nginx. Теперь рестартуем nginx и apache
service httpd restart
service nginx restart
p.s. хотя можно попробовать активировать его из шелла:
/usr/local/ispmgr/sbin/pkgctl activate nginx
Установка mod_rpaf
Теперь нам потребуется модуль mod_rpaf, т.к. по умолчанию связка nginx+apache для всех IP адресов получаемых через $_SERVER['REMOTE_ADDR'] будет показывать адрес вашего сервера.
Для установки понадобятся пакеты gcc, rpm-build и httpd-devel.
yum install gcc rpm-build httpd-devel
Можно не извращаться и установить mod_rpaf напрямую из репозитория:
yum install mod_rpaf
Либо сделать все ручками. Перейдем к скачиванию и установке самого mod_rpaf
cd /usr/local/src
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Проверяем создался ли в директории /etc/httpd/conf.d/ файл rpaf.conf. Если его там нет, то создаем и прописываем следующие строки:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips 127.0.0.1 xx.xx.xx.xx
где xx.xx.xx.xx – IP адрес вашего сервера. Если на сервере несколько адресов, то прописываем их по аналогии через пробел. Перезапускаем Apache
service httpd restart
В nginx внутри блока http {} должны быть указаны строки:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
если вы изменяли nginx.conf, следует перезапустить nginx:
service nginx restart
Проверяем работособность. Создаем php файл со следующим содержимым и на экране у нас должен высветится реальный IP:
<?
echo $_SERVER['REMOTE_ADDR'];
?>
Установка Eaccelerator
Мы уже установили репозитозиторий с centalt, поэтому сразу прописываем
yum install php-eaccelerator
Теперь создаем директорию для кэша eaccelerator (если эта директория уже не создана) и назначаем ей права
mkdir /var/cache/php-eaccelerator
chmod 777 /var/cache/php-eaccelerator
перезапускаем apache
service httpd restart
и проверяем eaccelerator на работоспособность
php -v
Должно высветиться что-то наподобии этого:
PHP 5.2.11 (cli) (built: Sep 29 2009 22:33:25)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
Скрываем версию php и nginx
Теперь сделаем еще пару хитростей. В файле /etc/php.ini находим директиву expose_php и выставляем ей значение off и таким образом скрываем версию php.
expose_php = Off
Для nginx поступаем следующим образом – в секции http прописываем строку
server_tokens off;
Все теперь версии nginx и php у нас скрыты.



Хорошая статья. Только на мой взгляд с nginx нужно использовать что-то полегче apache. Например, php можно настроить, как fastCGI. Так будет расходоваться меньше памяти. Ведь nginx и ставят, чтобы уменьшить нагрузку на серверы.
Алексей, если использовать FactCGI, то по большому счету выигрыш будет только в памяти.
Если с апача убрать обработку статики (чем занимается в данном случае nginx), он довольно шустро обрабатывает скрипты.
К тому же полностью отказаться от Apache в моем случае нельзя, т.к. ISPManager работает именно на Апаче.
А вообще есть довольно занимательная статья Котерова http://dklab.ru/chicken/nablas/49.html
Начинаю только изучать CentOs, Надеюсь увидеть интересные статьи…
я тоже только начинаю изучать, мне бы что нить для установки CentOS’а, может кто подкинет, желательно инстррукции на русском
http://www.centos.su/
http://www.centos.name/
http://www.qinet.ru/category/os/linux/centos/
Евгений, спасибо за информацию!
Всё работает, но после Eaccelerator открывается только index.php. на другие страницы пишет не найден сервер. в чём может быть проблема?
А связка php и mysql после обновления нормально будет работать? или надо по новой настраивать?
Добрый день.
Установил как тут написано Eaccelerator
выполняю команду php -v
выдает:
Failed loading /usr/lib/php/modules/eaccelerator.so: /usr/lib/php/modules/eaccelerator.so: wrong ELF class: ELFCLASS32
PHP 5.2.12 (cli) (built: Dec 17 2009 22:42:35)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
- В чем может быть проблема ?
Руслан, попробуйте удалить zend optimizer и запустить без него. Проблема может заключаться в том, что zend optimizer был установлен ДО eaccelerator
Приветствую..
У меня тоже такая проблема..
Установил eaccelerator
после установки и выставления параметров
extension=»/usr/lib/php/modules/eaccelerator.so»
eaccelerator.shm_size=»12″
eaccelerator.cache_dir=»/tmp/eaccelerator»
eaccelerator.enable=»1″
eaccelerator.optimizer=»1″
eaccelerator.check_mtime=»1″
eaccelerator.debug=»0″
eaccelerator.filter=»"
eaccelerator.shm_max=»0″
eaccelerator.shm_ttl=»0″
eaccelerator.shm_prune_period=»1800″
eaccelerator.shm_only=»0″
eaccelerator.compress=»1″
eaccelerator.compress_level=»9″
система заработала, eaccelerator появился в phpinfo
в скрипте проверки производительности цмски написали что нужно установить значение eaccelerator.shm_ttl равное больше 0
поменял и заодно добавил eaccelerator.shm_size=»64″
после этого браузер выдает 502 Bad Gateway
а при входе в панель ispmanager пишет Не удалось подключиться к удалённому серверу
и все..
подключался через шелл убирал из php.ini подключение eaccelerator
и ничего не меняется, система встала..
написал в поддержку, они ответили
Проблема связана с работой web-сервера apache. При старте apache в логах
ошибок присутствует следующая информация:
Failed loading /usr/lib/php5/conf.d/eaccelerator.so:
/usr/lib/php5/conf.d/eaccelerator.so: cannot open shared object file: No such
file or directory
eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel
allows is 33554432 bytes. Lower the amount of memory request or increase the
limit in /proc/sys/kernel/shmmax.
PHP Warning: [eAccelerator] Can not create shared memory area in Unknown on
line 0
PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0
что делать незнаю
помогите плиз..
что делать с серваком
пардон, забыл галочку поставить
Антон, вот из офф. документации eaccelerator eaccelerator.shm_size
This setting will allow you to control the amount of shared memory eAccelerator should allocate to cache PHP scripts. The number sets the amount of memory in megabytes. Setting this value to 0 will use the default size.
eaccelerator.shm_size = «0″
On Linux the maximum amount of memory a process can allocate is limited by the number set in /proc/sys/kernel/shmmax. Allocating more than this value will result in eAccelerator failing to initialise. The size in this file is given in bytes. You can raise this amount with:
echo value > /proc/sys/kernel/shmmax
Where value is the size in bytes you want to use. This value is reset to the default value evertime you reboot, but you can raise it permanently by adding the amount you need in /etc/sysctl.conf. This is done by adding:
kernel.shmmax = value
Вы пытались выделить 65 мегобайт в shared memory, а система вам написала 32 могу только. Лучше этот параметр вооще не трогать. А то что в доке написано – хорошо для выделенного сервера, на виртуальных не пойдет.
Да вроде настроил..
дал shmmax 128 и выделил акселератору..
все летать начало, почти эталон производительности битрикса
Спасибо…очень хорошо описал.!!!