Установка связки Nginx и Apache2 на сервере Debian!
Доброго времени суток! И так, я не давно решил попробовать ускорить свой сервер. На одном из онлайн тестеров я запустил проверку своего сайта. И оказалось что при на нагрузке всего в 50 клиентов, мой сервер открывал страницы за 32 секунды. После установки Nginx это время сократилось до 9 секунд
Все это работает благодаря тому, что Nginx выступает в роли прокси сервера. Поскольку он более легковесный и лучше работает с медленными соединениями, мы ставим его на первый план. Также Nginx будет раздавать нашу статическую информацию: картинки, медиа, html, java. А php запросы мы будем отправлять Apache.
Приступим к настройке
В самом начале добавим репозиторий nginx в нашу систему. Для этого откроем /etc/apt/sources.list:
nano /etc/apt/sources.list
И добавим в конц файла следующее:
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
После чего добавляем ключ и устанавливаем nginx.
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
apt-get update
apt-get install nginx
После установки открываем конфигурационный файл /etc/nginx/nginx.conf
и приводим его к такому виду
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 64;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_proxied any;
gzip_min_length 1100;
gzip_http_version 1.0;
gzip_buffers 4 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
После чего создаем файл виртуального хоста nano /etc/nginx/sites-enabled/tvoidomen.ru
server {
listen 80;
server_name tvoidomen.ru www.tvoidomen.ru;
proxy_temp_path /var/nginx/temp/hostlip.ru;
location ~* \.(gif|jpg|jpeg|png|ico|css|swf|js|html|htm|xml|txt|gz|bmp|xls)${
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;
proxy_set_header X-Host $http_host;
proxy_set_header X-URI $uri;
proxy_set_header X-ARGS $args;
proxy_set_header Refer $http_refer;
root /var/www/;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}
location ~*(comments|wp-admin)* {
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;
proxy_set_header X-Host $http_host;
proxy_set_header X-URI $uri;
proxy_set_header X-ARGS $args;
proxy_set_header Refer $http_refer;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}
}
Строка proxy_pass http://127.0.0.1:8080;
это и есть перенаправлявшие на наш сервер Apache
С настройкой Nging закончили. Переходим к Apache. Команда на установку Apache и PHP.
apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libapache2-mod-ruby php5-curl
После чего настраиваем Апаче на прослушку 8080 порта по locoalhost. Для этого открываем файл nano /etc/apache2/ports.conf
и приводим к виду:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:8080
Listen 127.0.0.1:8080
Теперь отредактируем файл виртуального хоста по умалчанию nano /etc/apache2/sites-available/default
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Options FollowSymLinks
AllowOverride All
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
После чего перезагружаем сервера.
/etc/init.d/nginx restart
/etc/init.d/apache2 restart
В принципе все. Про то как настроить чтоб Эта связка адекватно передавало IP смотрите в следующей статье.