Home > System administration, Web 2.0 and something like that > nginx+apache+memcached+xcache: fast web-server

nginx+apache+memcached+xcache: fast web-server

Со временем каждый интернет-проект ждет неизбежное: либо он остается в тени и неизвестности, либо становится популярным и посещаемым. Посещаемость это хорошо, но готов ли к этому ваш сервер? С повышением нагрузки на проект обычно используют модель back-end+front-end, а именно связка nginx+apache.  Как это работает: все внешние соединения на себя принимает nginx, за отдачу статического содержимого (все изображения, стили, html, аудио и видео) отвечает так же он. Apache же в свое время отвечает только за статическое содержимое и во “внешку” не смотрит. Что бы их “связать” в nginx необходимо будет настроить проксирование.

Обновляем кеш репозитариев:

# aptutude update

Устанавливаем Apache, php, mysql и необходимые им модули:

# aptitude -y install apache2 php5 mysql-server libapache2-mod-auth-mysql php5-mysq mysql-admin libphp-jpgraph php5-imagick

Настраиваем Apache:

# nano /etc/apache2/ports.conf

По умолчанию Apache слушает внешние соединения на 80 порт. Исправим это, заменив Listen 80 на:

Listen localhost:8080

Далее отредактируем конфиг apache2.conf и вставим в самый низ строчку NameVirtualhost *:8080

# nano /etc/apache2/apache2.conf

Создадим новый VirtualHost в sites-available:

# nano /etc/apache2/sites-available/sitename.ru.conf

Вписываем туда:

<VirtualHost *:8080>
ServerName sitename.ru
ServerAlias www.sitename.ru
DocumentRoot /home/sitename.ru/public_html
</VirtualHost>

Подключим VirtualHost:

# ln -s /etc/apache2/sites-available/sitename.ru.conf /etc/apache2/sites-enabled/

На этом пока Apache оставим в покое. Установите nginx, используя эту статью.

nginx установлен, можно перейти к настройке:

# nano /usr/local/nginx/conf/nginx.conf

В секцию http добавим строчку:

http {

include /etc/nginx/sites-enabled/*;

}

Создадим папку с виртуальными хостами nginx:

# mkdir /etc/nginx/sites-enabled/

Создадим там файл sitename.ru:

# nano /etc/nginx/sites-enabled/sitename.ru

Отконфигурируем как в примере:

#Создайте свой VirtualHost и создайте файл, взяв за пример эти настройки
server {
# какой порт слушать
listen 80;
# доменное имя с www и без
server_name sitename.ru www.sitename.ru;
location / {
# адрес для перенаправления запроса. Т.е. наш Apache
proxy_pass http://localhost:8080/;
# передаём серверу Apache реальный IP юзера
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# типы файлов, обрабатываемые Nginx’ом
location ~* \.(gif|jpg|jpeg|png|ico|css|swf|js|html|htm|xml|txt|gz|bmp|xls)$ {
# директория веб-сервера
root /home/sitename.ru/public_html;
#Включаем mod_rewrite для wordpress
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php;
}
}
}

Устанавливаем memcached:

# aptitude install memcached

Устанавливаем xcache:

# aptitude install php5-xcache

Перезапускаем демоны:

/etc/init.d/apache2 restart

/etc/init.d/nginx restart

/etc/init.d/memcached restart

Готово! Теперь nginx принимает внешние соединение, рулит статикой и проксирует. Apache же занимается динамическим содержимым. Удачи!

  1. No comments yet.
  1. No trackbacks yet.