Фотогалереи

Услуги

Помощь при использовании сайта

Особенности сборки nginx из исходников

В свете полного отказа от Апача и переходе на nginx задался его сборкой из исходников дабы выкинуть из него все не нужные модули. Читая Сысоева примерно понял какой модуль для чего нужен. Мне же не нужны почтовые прокси и прочая экзотика. Собираю я пакет конечно PKGBUILD'ом (Арч же). Секция с --without получилась такая

--without-http_geo_module \ --without-http_gzip_module \ 
--without-http_ssi_module \ --without-http_empty_gif_module \ 
--without-http_browser_module \ --without-mail_pop3_module \ 
--without-mail_imap_module \ --without-mail_smtp_module \ 
--without-select_module \ --without-poll_module \ 
--without-http_map_module \ --without-http_upstream_ip_hash_module \ 
--without-http_memcached_module \ --without-http_userid_module \
--without-http_proxy_module

Теперь самое интересное. Собирал nginx я с такими флагами gcc:

CFLAGS="-O2 -march=core2 --param l1-cache-size=64 --param l2-cache-size=4096 -funroll-loops -fomit-frame-pointer -pipe"

Вобщем все удачно собиралось с такими агрессивными оптимизациями (я даже этому удивился очень) и работало. Но понадобилось вдруг создать виртуальный хост на том же ip. Прописываю в nginx.conf (второй сервер)

server {
listen 80;
server_name example.com;
charset UTF-8;
root /srv/http/nginx;
index index.html;
access_log /var/log/nginx/partyzan.log; }
}

Запускаю самосборный и получаю отлуп

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

Думаю наверно собрал так что выкинул что то лишнее. Начал по одному идентифицировать где же я прокололся -:D Хорошо что nginx этон не OpenOffice а то полгода бы пришлось пересобирать улавливая где косяк)) Потом плюнул и собрал с дефолтным PKGBUILD из ABS. Учитывая что пакет из репов нормально с моим конфигом запускался я очень удивился когда собрав с дефолтным он тоже послал меня лесом! Зато сразу дошло, что трабла в опциях сборки. Собрал с минимальным своим билдом но под i686:

CFLAGS="-O2 -march=i686 -pipe"

Все запустилось. В дальнейшем собрал под свой core2 но без разворота циклов (-funroll-loops) и все завелось. Незнаю как кому но я чет с таким первый раз сталкиваюсь. Обычно если косяк во флагах то либо пакет не собирается либо изначально работает нестабильно. Но чтоб так - не видел))

Обновлено:
Для того чтобы при сборке с разворотом циклов не выпадала ошибка

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

Нужно всего лишь в секцию http { добавить это

server_names_hash_bucket_size 64;
5
1 голос
Ваша оценка: Нет