Веб-сервер на Debian. Nginx

Статья не моя. Внизу указан источник.
Скопировал к себе на всякий случай.

 

Решился написать продолжение, по настройке полноценного веб сервера на базе Debian Lenny. Хоть и прошло это радостное событие, Squeeze теперь stable. Я все еще не готов оновлять свои продакшн сервера на 6-чку. В данном топике, расскажу, как собрать свежый пакет для nginx ветки 0.8 не прибегая к скучным чтениям документации. Все ужа давно сделали за нас. Итак, приступим:Перво-наперво, рекомендую полностью обновить систему, так как могли выйти обновления:

 

aptitude update
aptitude safe-upgrade

В файле /etc/apt/sources.list ОБЯЗАТЕЛЬНО должны быть следущие строки, если их нет – добавьте.

 

# Backports repository

deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
deb-src http://backports.debian.org/debian-backports lenny-backports main contrib non-free

Если их не было, то необходимо обновить список пакетов aptitude update.

Далее нам необходимо установить зависимости, которые необходимы для сборки nginx из исходных текстов.

 

aptitude build-dep -t lenny-backports nginx

Все, теперь у нас есть почти все что необходимо чтобы собрать nginx. Вероятно, чегото не будет хватать, но с этим мы разберемся.

Для того чтобы слить исходные тексты для debian файлов, необходим subversion.

 

aptitude install subversion

Смысл строк ниже: мы создаем директорию где будем проводить сборки всего и вся. Потом скачиваются исходные тексты, распаковываются, и чекаутятся debian правила сборки.

Далее, копипастим =)

 

cd

mkdir builds

cd builds

mkdir nginx

cd nginx

wget http://sysoev.ru/nginx/nginx-0.8.54.tar.gz

tar xvf nginx-0.8.54.tar.gz

cd nginx-0.8.54

svn co svn://svn.debian.org/svn/collab-maint/deb-maint/nginx/tags/0.8.54-3/debian

Также для всего этого есть веб-интерфейс, где вы можете найти правила и под свой софт.

Ну что =) далее необходимо чутка подправить файл debian/rules. Открываем его своим любимым редактором и смотрим и правим ПОЖЕЛАНИЮ. Эти правила имеют 3 целя для сборки, full light и extras. Я использую full версию, поэтому, находим в debian/rules следущее, и добавляем что хотим

 

config.status.full: config.env.full config.sub config.guess

….

- —with-debug \

- —with-mail \

- —with-mail_ssl_module \

+ —with-file-aio \

+ —without-mail_pop3_module

+ —without-mail_imap_module

+ —without-mail_smtp_module

Строка, которая начинается с – значит это я удалил, а если с + то, соответсвенно добавил.

далее необходимо собрать пакеты. Вы можете ввести

 

dpkg-buildpackage -jNUM+1

Где NUM – кол-во ядер на вашей системе, у меня 8, поэтому я пишу -j9.

И тогда он вам соберет все 6 пакетов, в дополнение к тем 3 еще каждый в dbg версии.

Иииии… Запустив это мы наблюдаем ошибаньку.

 

dpkg-checkbuilddeps: Unmet build dependencies: libgd2-noxpm-dev libgeoip-dev liblua5.1-dev libperl-dev libxslt1-dev

Все просто, в системе не хватает кое каких зависимостей для сбокри, просто копипастим названия пакетов и ставим их:

 

aptitude install libgd2-noxpm-dev libgeoip-dev liblua5.1-dev libperl-dev libxslt1-dev

У вас зависимости могут отличаться, поэтому рекомендую скопипастить у себя.

Зависимости удовлетворены, собираем.

На выходе, в папке ~/builds/nginx будут лежать всякие разные пакеты, я не знаю как сказать ему собирать только full цель, если вы знаете, сообщите это пожалуйста в комментариях.

Далее необходимо установить только собратый пакетик:

 

dpkg -i nginx-full_0.8.54-3_amd64.deb

Все =) Теперь у нас нормальный nginx свежей сборки. В чем преимущество такого подхода:

 

Создаются файлы настроек для ротации логов: /etc/logrotate.d/nginx-full

Создаются init скрипты в /etc/init.d/nginx

Валидные пути для Debian

Не будет проблем при обновлении, удалении. Все по стандартам

В версии которую мы только что устанавливали, автоматически прописался скрипт автозапуска nginx. Но все же,

 

update-rc.d nginx defaults

 

Сделает автозагрузку nginx при старте системы.

Ниже приведу намного оптимизированный свой конфиг файл, который я использую, чтобы в следущий раз было удобно копипастить, а не лазить по диску и искать все это.

 

user www-data;

worker_processes 2; # У меня 4 ядра Xeonа, поэтому 2 сюда, Остальные пойдут на php-fpm, mysql....

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

worker_rlimit_nofile 131072; # ulimit -n 131072 перед запуском выполняется.

events {

worker_connections 65536;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_not_found off;

log_format combined2 '$remote_addr - $remote_user [$time_local] '

'"$request" $status $body_bytes_sent '

'"$http_referer" "$http_user_agent" "$host" '

'"$body_bytes_sent" "$request_time" gzip-"$gzip_ratio"';

#set_real_ip_from xx.x.x.x.; # если планируете пускать на nginx траффик с какого-то другого прокси сервера.

#real_ip_header X-Forwarded-For;

access_log /var/log/nginx/access.log combined2;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

server_tokens off;

gzip on;

gzip_static on;

gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json;

gzip_disable "msie6";

gzip_min_length 1000;

gzip_comp_level 6;

gzip_proxied any;

gzip_vary on;

keepalive_timeout 500;

########### PROXY $##########

client_max_body_size 16m;

client_body_buffer_size 128k;

client_header_buffer_size 4k;

large_client_header_buffers 16 8k;

output_buffers 32 512k;

proxy_connect_timeout 900;

proxy_send_timeout 900;

proxy_read_timeout 900;

proxy_buffer_size 64k;

proxy_buffers 32 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 10m;

###########################

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 32 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

####################################3

limit_req_zone $binary_remote_addr zone=ips:20m rate=5r/s;

limit_zone cglob $binary_remote_addr 16m;

#proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=one:16m inactive=7d max_size=1024m;

fastcgi_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=one:16m inactive=7d max_size=1024m;

fastcgi_intercept_errors on;

server_names_hash_max_size 256;

server_names_hash_bucket_size 128;

include /etc/nginx/conf.d/*.conf;

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

http://bkmz.org/401/web-server-na-debian-nginx

Comments are closed.