2010-05-12

Настройка nginx как фронтэнда для apache2, и установка eaccelerator

Выражаю благодарность автору статьи: http://rubuntu.ru/blog/server/435/nastrojka-apache-2-nginx-php-5-mysql-memcached-eaccelerator-sphinx-v-ubuntu.html

Рассматривается настройка на примере Debian/Ubuntu, в частности я использовал Ubuntu 8.04 с установленным и уже настроенным апачем.

Часть первая: nginx.

Все очень просто. Устанавливаем nginx:
sudo aptitude install nginx


Говорим апачу слушать 81 порт локалхоста, исправив строчку в /etc/apache2/ports.conf :
Listen 127.0.0.1:81

Говорим апачу убивать себя, /etc/apache2/apache2.conf:

KeepAlive Off

Далее, допустим у нас есть сайт, по адресу example.com и лежащий в /var/www/example.com/
Прописываем конфиг /etc/nginx/sites-available/example.com:
server {
listen *:80;
server_name examlpe.com

location / {
proxy_pass http://127.0.0.1:81/;
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|gif|png|css|js)$ {
root /var/www/example.com/;
}

}



Таким образом мы говорим nginx самостоятельно отдавать jpg, gif, png, css и, соответственно, js-файлы.

Делаем симлинк:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Перезапускаем сервисы:
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nginx restart

Часть вторая. eAccelerator


Устанавливаем memcached и пару нужностей для eaccelerator:
aptitude install memcached php5-dev make

Устанаваливаем eaccelerator:
cd /tmp/
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar xvjf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
phpize
./configure --enable-eaccelerator=shared
make
make install

Создаем папку кеша
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator

Редактируем конфиг PHP /etc/php5/apache2/php.ini:
[PHP]
; eAccelerator configuration
; Note that eAccelerator may also be installed as a PHP extension or as a zend_extension
; If you are using a thread safe build of PHP you must use
; zend_extension_ts instead of zend_extension
extension = "eaccelerator.so"
eaccelerator.shm_size = "16"
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"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"


Рестартим все:
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nginx restart
sudo /etc/init.d/memcached restart