Сегодня мы рассмотрим установку nginx (в качестве фронтэнда для отдачи статики) и eAccelerator поверх уже установленного apache2-mpm-itk.
Данная статья является продолжением статьи Безопасная настройка web-сервера.

Установка nginx

Устанавливаем nginx из репозиториев (в репозиториях зачастую устаревшие версии, при желании можно установить из исходников.)

apt-get update
apt-get install nginx

Далее нам нужно поменять порт для apache2, для этого в файле /etc/apache2/ports.conf вносим изменения:

NameVirtualHost *:8080
Listen 8080

Т.е. заставляем apache работать на порту 8080
Далее нам нужно прописать изменения в конфигурационные файлы наших проектов. Вот пример конфигурации файла /etc/apache2/sites-available/site

ServerName www. site.ru
ServerAlias site.ru *. site.ru
DocumentRoot «/sites/ site /public_html/www/»
ErrorLog /sites/site/error_log
CustomLog /sites/site/access_log combined
AssignUserId www-data site

php_admin_value open_basedir «/sites/site /:.»
php_admin_value upload_tmp_dir «/sites/site /tmp»
php_admin_value session.save_path «/sites/site /tmp»

И так каждый файл всех ваших проектов.

Далее нужно изменить конфигурацию nginx.
Пример конфигурации:

server {

listen 000.000.000.000:80;
# вместо 000.000.000.000 ip адрес вашего сервера
server_name site.ru;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root /sites/site/public_html/www;
access_log /sites/site/access_log;
}
}

Данную конструкцию повторить для каждого проекта отдельно.
Таким образом мы настроили nginx фронтэндом, который будет обрабатывать статику (jpg,jpeg,gif и т.д.).
Теперь перезагружаем apache и nginx.

/etc/init.d/apache2 restart
/etc/init.d/nginx restart

ВАЖНО!

При установке nginx поверх apache2-mpm-itk я столкнулся с проблемой – т.к. апач работал от разных юзеров (точнее от разных групп) для каждого сайта, а nginx от одного юзера, то файлы статики были недоступны для nginx, не хватало прав, вследствии чего ошибка 403.
Решение:
Т.к. официального функционала у nginx с работой от разных юзеров еще нет, то пришлось добавить юзера www-data, от которого он работает в группы юзеров наших проектов.

usermod -a -G site1,site2,site3 www-data

Установка eAccelerator

Установка проста, описывать особо нечего.

cd /tmp
wget httр://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar xvfj eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
phpize
./configure
make
make install

Далее правим конфиг акселератора /etc/php5/conf.d/eaccelerator.ini
Вот пример конфигурации:

extension=»eaccelerator.so»
eaccelerator.shm_size=»32″
eaccelerator.cache_dir=»/var/cache/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=»0″
eaccelerator.shm_only=»0″
eaccelerator.compress=»1″
eaccelerator.compress_level=»9″

Далее создадим директорию для кэша:

mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator

Перезагружаем Апач

/etc/init.d/apache2 restart

ВАЖНО!

При установке eaccelerator также возникла проблема – вылетали ошибки:

PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (blablabla) in Unknown on line 0

Как оказалось eaccelerator некорректно работает с open_basedir.
Решение:
При установке конфигурировать исходник с параметром –without-eaccelerator-use-inode

phpize
./configure –without-eaccelerator-use-inode
make
make install

Все вышеописанные действия проводились в боевых условиях на сервере с ОС Debian.
На этом все, спасибо за внимание.

Copyrights © twost

Установка nginx (Front-end) и eAccelerator
11 оценок, Средняя оценка: 5 из 5

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *