Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
|
Правим конфиги
|
|
и пересобираем систему
|
Пока собирается система можно занятся конфигом ядра в следующщей консоле (или другом ssh терминале).
|
И правим ядро для наших целей, я например викидываю от туда дебаг, ipv6, и все не нужные мне драйвера
(nfs ntfs fat все рейды и сетевухи которых у меня нету fairwair usb wlan), и добавляю следующщее
|
После того как сборка мира в первой консоле успешно закончится, можно приступать к сборке и установке нового ядра
|
Так как хороший одмин должен быть ленивым, я создаю в корне скриптик
|
Цепляем ip-kvm, ну или топаем туда где стоит сервер (нужна консоль), и перезагружаем его в однопользовательский режим.
|
Загружается система, на приглашение к выбору шела нажимаем Enter и после того как появиться консоль вводим
|
mergemaster поспрашивает вас о конфигах, make delete-old поспрашивает о удалении старых файлов, после того как все вопросы будут отвечены и система установленна шел закроется и продолжиться нормальная загрузка уже новой системы.
2. Устанавливаем софт
Собственно ставим сам nginx, на запросы отвечаем так:
|
Дальше ставим мускул и пхп:
|
Cтавим сопутствующщий софт:
|
Выбираем себе нужные модули для пыха.
И не забываем про ZendOptimizer (довольно часто попадаются зазенденные скрипты, поэтому всегда втыкаю его докучи, авось пригодится)
|
Ставим phpMyAdmin (вечное требованние программеров на пыхе, в консоли для них не кошерно...)
|
Ставим wget из /usr/ports/ftp/wget (это типа консольная качалка такая)
скачиваем порт php-fpm под фрю (я же говорил уже что хороший одмин он ленивый, и с патчами в исходниках ковырятся ему должно быть лень если все и так хорошо работает), распаковываем его в /usr/ports/lang/php5-fpm идем туда и сетапим его:
|
Ну вот как бы и усе как бы для голого веб сервера все уже готово, переходим к настройке.
3. Конфигурируем
Мой конфиг nginx:
|
Теперь поправим конфиг у fpm'a
|
Пхп каждый конфигурит себе сам, но на основе длительного ковыряния с кучей серверов у меня получилось оптимальным вот это:
|
Тепер переходим к тюнингу tcp стека:
|
|
По оптимизации стека и настройку sysctl можно почитать следующщее:
http://www.opennet.ru/base/net/tune_freebsd.txt.html
http://www.lissyara.su/?id=1147
По настроке nginx:
http://sysoev.ru/nginx/docs/
http://www.lexa.ru/nginx-ru/
Ну и напоследок гугл еще никто не отменял ;-)
Уф, великовата уже статейка получилась, пора бы и закруглятся, ждите продолжений.
размещено: 2008-04-18,
последнее обновление: 2008-11-21,
автор: nikll
arksu, 2008-11-20 в 13:54:31
норм статья! побольше бы таких глубоких материалов.
собрано много много житейского опыта на продакшн серверах )))
RWH, 2008-11-20 в 14:10:50
+5
Паха, 2008-11-20 в 14:33:13
Вот! А я искал это! Спасибо! Побольше пиши))
Вся правильно и работоспособно! Как и все твои статьи... добавил в свой архивчик статью
gmn, 2008-11-20 в 18:16:07
фильтры в ядро вкомпиливать не обязательно.
Можно загрузить так:
/boot/loader.conf
accf_data_load="YES"
accf_http_load="YES"
nikll, 2008-11-20 в 18:37:21
Можно и не вкомпиливать, но если ядро всеравно пересобирать, и фильтры всеравно понадобяться почему бы и нет?
Medved, 2008-11-20 в 20:09:27
worker_connections 51200
и
open_file_cache max=100000
ужасно больши и никак не влезут в worker_rlimit_nofile и tcp4 (при fastcgi_pass)
nikll, 2008-11-20 в 20:28:32
Про worker_connections я так и не нашел ни одного нормлаьного обьяснения что это такое и как этот параметр правильно настраивать.
Про open_file_cache на мой сугубо неопытный взгляд все в порядке, http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#open_file_cache тут описание этой директивы. Вопрос почему бы и нет? Ну будет у меня 100тыс записей о файлах и что такого, на тех серверах как минимум 4гб озу, ее хватает за глаза...
P.S. у меня аська есть 322344962, плиз, если есть маленько свободного времени, проконсультироваться хочу :)
nikll, 2008-11-20 в 20:45:38
Вот я вспомнил где я нашел рекомендацию к выставлению большого значения worker_connections
http://www.lexa.ru/nginx-ru/msg06936.html
sect0id, 2008-11-21 в 13:09:36
спасибо хорошая статья
опыт виден
location /.,ak,234sfyf34.:,.s/
это так прячешь?
nikll, 2008-11-21 в 14:58:34
Благодарю :).
да примерно так, просто был опыт нахождения попыток перебора логинов паролей в логах (массовы записи о неудачной аутентификации), вот и сделал юрл покрепче :)
Андрей, 2009-01-14 в 19:14:07
Какое количество соединений в секунду держит данный конфиг?
nezabor, 2009-01-16 в 22:03:34
open# wget http://php-fpm.anight.org/downloads/freebsd-port/php5-fpm-0.5.9.tar.gz
--2009-01-16 22:02:46— http://php-fpm.anight.org/downloads/freebsd-port/php5-fpm-0.5.9.tar.gz
Resolving php-fpm.anight.org... 89.235.197.21
Connecting to php-fpm.anight.org|89.235.197.21|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2009-01-16 22:02:50 ERROR 404: Not Found.
torki, 2009-01-16 в 23:37:01
Статья просто бомба!!! Все возможные спасибы!!!
Вот как-бы наладить обмен умными мыслями, блин, фантазии на такие статьи не хватает:(
nikll, 2009-01-18 в 9:49:26
http://php-fpm.anight.org/downloads/freebsd-port/php-5.2.8-fpm-0.5.10.tar.gz
обновился порт, чо нельзя было зайти и посмотреть?
Anik777, 2009-01-29 в 17:02:06
Ух, спасибо тебе nikll - мега статья, очень полезная и объемная. Отдельное спасибо за оттюненые конфиги php и nginx.
А какую примерно нагрузку держит такая сборка???
nikll, 2009-02-06 в 5:07:57
Тестировал на сервере 2xXeonQuad 8Gb RAM, на гигабитном линке отдает в срендем 90Мбайт динамики с учетом что примерно половина нагрузки ложится на мускул.
Загрузка сначала подскакивает гдето до 70% по процу и 3гб озу потом увеличевается кеш, отжирается еше 2гб озу, но проц грузит менше (40-50%). Нагрузка создавалась синтетическая наклепал пару пхп скриптов которые манипулируют с мускулом и нагружал все это дело с пяти других аналогичных серверов при помощщи ApacheBench и несколько экземпляров из портов.
В пике получалось более 300тыс соеденений.....
Le1, 2009-02-06 в 9:21:35
Статья супер, то что надо, актуальная - т.к. если сервак крутит только апач, то в полне отлично перейти на nginx, автору спасибо и зачет !
gaara, 2009-02-18 в 3:24:41
mysql 5.1 на сильнонагруженом сервере - зло
nikll, 2009-02-18 в 9:57:11
А вы надо пологать тока оракл юзаете....
Если правильно настроить мускул и железо достаточно мощное то мускул соовсем не мешает, а даже наоборот сервер с локальным мускулом работает быстрее чем с мускулом который на выделенном сервере...
gaara, 2009-02-21 в 3:22:03
nikll,
не, я не про то - сырая ветка 5.1 еще, на синтетических тестах все в порядке, поставили в продакшн - падения (segfault-ы), непонятно почему висящие в состоянии locked запросы и т.д.
лучше пока сидеть на 5.0, хотя и в 5.1 много вкусностей
а даже наоборот сервер с локальным мускулом работает быстрее чем с мускулом который на выделенном сервере...
это пока он не начинает жрать ресурсы, которые могли бы пойти на что-нибудь полезное, например на те же пхп-шные скрипты
xmaster !, 2009-03-01 в 21:47:53
net.inet.tcp.msl=40000
немного ли ?
у меня 4500
bzik, 2009-03-16 в 21:15:28
Спасибо за статью. Очень пригодилась!!!
если кому то интересен мониторинг то вот довольно неплохая статья.
http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/
советую почитать коменты у кого возникнут проблемы.
zulus, 2009-03-19 в 22:51:27
Отличная статья, большое человеческое спасибо за неё автору !!!
Арт, 2009-03-21 в 19:46:58
Спасибо за статью
titan, 2009-04-27 в 16:41:30
Не используйте параметр sendfile_max_chunk 256k;
без предварительного понимания что он делает и зачем.
С текущим значением у меня сетевая карточка дропала 50% данных под нагрузкой. Без нагрузки работало все идеально.
FreeBSD 7.1 amd64 nginx 6.3.5
Psixozzz, 2009-05-22 в 9:57:42
автору надо учебник русского языка подарить. Лучше два. А в целом статья ничего так.
nikll, 2009-05-24 в 13:15:49
ыгы а тебе учебник по фре :), каждый спец в своей области.
opt1k, 2009-06-13 в 9:36:04
зачем wget? чем fetch не устроил?
kav, 2009-06-13 в 14:14:06
много спорных моментов в статье, с этим всем лучше ломится в рассылку по nginx-у
там русскоязычное, вменяемое комьюнити
Yuna, 2009-06-28 в 11:31:59
http://php-fpm.org/downloads/freebsd-port/php-5.2.10-fpm-0.5.11.tar.gz
Wic, 2009-07-13 в 22:18:13
А php-fpm из портов не ставится что ли? зачем такой изврат?
Yuna, 2009-07-13 в 22:24:58
Вообще-то, если вы не знали, php-fpm НЕ включен по умолчанию в порты, и потому порт его нужно скачивать ОТДЕЛЬНО.
xmaster, 2009-08-12 в 8:55:05
вышла поновее счас буду тестировать
http://php-fpm.org/downloads/freebsd-port/php-5.2.10-fpm-0.5.13.tar.gz
demonsked@gmail.com, 2009-11-06 в 17:05:29
А где порт для 5.2.11 взять? Со старым не собирается. А как из исходников собрать я не понял.
nikll, 2009-11-06 в 17:46:46
Возьми да сам сделай :), там ничего сложного, проанализируй различия между php5 и php5-fpm (последний из них делал я), вот те линк на свежий патч http://php-fpm.org/downloads/php-5.2.11-fpm-0.5.13.diff.gz, вперед, как сделаеш вышли его на mike503@gmail.com, выложат на сайт :).
playnet, 2009-11-19 в 16:45:22
обнАвляем, позвАляет.. ппц, аффтар, что у тебя в году по русскому? 3 с натяжкой?
KaMa-CyTpA, 2009-11-19 в 17:17:59
комрат
тут зырят нина форму ана садиржанийе.
токма эт тожэ для избранных.
тут кагбэ пакрасившэ сказать... карочи для тибя тут калашный ряд.
lissyara, 2009-11-19 в 17:23:08
=)
тем не менее, он тоже прав.
Как минимум стоит после написания самому целиком читать.
nikll, 2009-11-19 в 21:51:09
Блин все такие умные как полгяжу :), я уже писал выше что каждый в своей области достигает чегото, я например довольно профессиональный сисадмин и программист на куче осей и языков, а вы я как погляжу только русский язык профессионально освоили.
P.S. lissyara, я читал то что я написал, если тебя глубоко оскорбляют мелкие синтаксические ошибки то можеш их исправить. Если статья из за этих ошибок теряет свою актуальность можеш смело ее снести я тебе разрешаю.
lissyara, 2009-11-19 в 21:55:26
Мне - вообще пофиг. Сам с ошибками пишу, и очепятками.
Тем не менее, до публикации статьи даю линк на форуме, народ ошибки указывает.
Чтоб в камменты не гадили =))
Александр, 2009-12-09 в 20:32:43
Используйте Firefox - там есть проверка на орфографию.. и проблем не будет! кроме ошибок - бывают опечатки..
По статье - можно использовать перечень параметров, но не их значения :)
по моим собственным наблюдениям - результаты при одинаковых настройках.. будут разные для разных сайтов (что на них стоит в качестве прикладного?)
sun, 2009-12-10 в 8:35:26
Статья зачетная афтор спс! ))) Правда запарился искать порт php-fpm-0.6-5.2.11, пол дня убил чтоб найти )))
baton4eg, 2009-12-28 в 10:17:04
сам нашёл, а ссылочку ?
http://groups.google.ru/group/highload-php-ru/browse_thread/thread/8c36cd8d7c5709db?fwc=2&pli=1
paranoidchaos, 2010-01-22 в 11:41:41
register_globals = On
ставить не надо
nikll, 2010-01-22 в 12:16:18
По поводу надо не надо register_globals советую погуглить, как правило в большенстве свежего софта ненужен, но бывают случаи когда без него как минимум придется переписать половину уже отлаженного и рабочего кода который писал незивестно кто и когда.
paranoidchaos, 2010-01-22 в 12:51:38
))))
тот кто использовал register_globals ваще понятия не имеет о безопасности
вам всё же придётся переписывать скрипты
This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
paranoidchaos, 2010-01-22 в 12:53:20
погуглил
http://www.citforum.ru/internet/php/register_globals/
nikll, 2010-01-22 в 13:11:07
Да не мне, я всеголиш одмином был когда эту статью писал, в коде который пишу лично я такого бреда нету.
Кста о баранах, если не баран то перед работой со своими переменными ты их обнуляеш, иначе пых ругаетсо, соответсвенно register_globals влияет на безопастность только в быдлокоде.
This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged. - вкурсе и очень рад этому, ибо $_GET['param'] куда выразительней понятней и читабельней чем просто $param который непонятно откуда появился.
Sw%00p aka Jerom, 2010-01-22 в 13:18:54
>>Кста о баранах, если не баран то перед работой со своими переменными ты их обнуляеш, иначе пых ругаетсо
непонял юмора ?????
обнулять, во-первых, можно только численные значения.
во-вторых, да не отрицаю того, что при обьявлении любой переменной сразу же её инициализация - является хорошим тоном программирования.
а то что такой механиз как регистер_глобалс был в пхп говорит о том что его разработчики типичные говнокодеры
Аноним, 2010-01-26 в 0:04:16
Сетапим на сервер фрю семерку
/etc/make.conf
...
NO_PROFILE=yes
NO_GAMES=yes
...
WITH_IDEA=yes
MAKE_IDEA=yes
WITHOUT_GAMES=yes
WITHOUT_INET6=yes
WITHOUT_INET6_SUPPORT=yes
WITHOUT_PROFILE=yes
дальше не читал ... автору читать man src.conf до просветления в голове
nikll, 2010-01-26 в 8:48:20
Для особо одоренных анонимусов через 10 строк ниже
ee /etc/src.conf
WITHOUT_INET6=yes # рубим ipv6, рассадник дыр в безопастности и глюков
WITHOUT_INET6_SUPPORT=yes # практическая его полездность будет еще не скоро...
WITHOUT_PROFILE=yes
На момент выхода фри 7.0 часть параметров необходимо было дублировать в make.conf (до 7.0 src.conf небыло) иначе они не применялись (от пары лишних строк хуже не станет, зато всегда 100% применялись).
Так что читать маны и на основании этого думать что ты самый умный можеш и дальше, а практический опыт некакими манами не заменить.
Аноним, 2010-01-29 в 18:50:51
Дело не в паре лишних строк, дело в том что если Вы пишите статью не задумываясь о том что ее прочитает новичок и сделает так как в ней написано полагая что тот кто ее писал точно знает что надо делать. Может все же пойти новичкам навстречу и чуть-чуть поправить статью, а не ругаться тут неизвестно из за чего?
BTW
"options HZ=1000" - это уже давно по дефолту
"options DEVICE_POLLING" - polling стоит использовать только методом научного тыка, т.к. на разных системах в разных ситуациях с ним бывает лучше и наоборот - все может стать только хуже. Сделайте заметку что стоит почитать man polling и пусть себе человек пробует.
gurt, 2010-02-26 в 16:36:58
Сетапим на сервер фрю семерку архтиктуры amd64
..
ee /etc/make.conf
CPUTYPE?=core2
..
# Intel x86 architecture:
# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
# athlon-tbird athlon k8 k6-3 k6-2 k6 k5
# (Intel CPUs) core2 core nocona pentium4m pentium4 prescott
# pentium3m pentium3 pentium-m pentium2
# pentiumpro pentium-mmx pentium i486 i386
# (Via CPUs) c3 c3-2
# Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
# AMD64 architecture: opteron, athlon64, nocona, prescott, core2
# Intel ia64 architecture: itanium2, itanium
nikll, 2010-02-27 в 2:44:49
Ну а в чем проблема то?
AMD64 architecture: opteron, athlon64, nocona, prescott, core2
тобиш под интеловский 64разнядный камень, во фре оно AMD64 называетсо... в линухе тоже самое x86_64
Pandora, 2010-02-28 в 16:27:29
register_globals = On
о боже
Pandora, 2010-02-28 в 16:59:59
post_max_size = 32M ; 20M
upload_max_filesize = 64M ;10M
memory_limit = 256M ; 128M ; увеличиваем лимит по памяти для "тяжелых" скриптов
max_execution_time = 60 ; 30
date.timezone = Europe/Kiev
disable_functions = system,curl_exec,curl_multi_exec,passthru,shell_exec,proc_open,popen,parse_ini_file,show_source,ini_restore,com_load_typelib,symlink
по дефалту
session.save_handler = files
можно менять на eaccelerator если установлен
session.save_handler = eaccelerator
у меня на точке монтирования /usr/ терабайт так что там временная папка
session.save_path = /usr/local/www/tmp/php/session
Pandora, 2010-02-28 в 18:07:33
doc_root = переменная задаёт каталог, в котором размещаются PHP-скрипты. Эта директива разрешает исполнение скриптов только в указанном каталоге и его поддиректориях.
в моем случае doc_root = /usr/local/www/hosts
артур, 2010-05-11 в 19:47:47
Написали бы ман с использованием php 5.3.x (последний на данный момент). Под эту версию пыха нет пакета php-fpm =\ Но каким-то образом поднимают связку.
sabas, 2010-05-12 в 16:05:12
артур,
лови , правда там не так хорошо все разжевано ... но если с "ручками" порядок , соберешь минут за 20 ))) http://forum.nginx.org/read.php?25,73314
артур, 2010-05-14 в 11:06:14
С горем пополам собрал.
Последние версии php-fpm надо прям в исходники пыха влить и вместе с пыхом собирать.
Не понял сам как собралось если честно) Вроде работает.
Pandora, 2010-08-04 в 20:57:54
location ~ \.php$ {
  ....
  try_files $uri =404;
  ...
}
exploit http://site.ru/images/as5df3.jpeg/.php
risk94, 2010-09-12 в 14:45:37
Таки начиная с шестерки параметр kern.polling.enable убран из sysvtl ... и рулится непосредственно через ifconfig:
http://svn.freebsd.org/viewvc/base?view=revision&revision=196267
Fire_Anton, 2010-10-04 в 2:12:15
Ай, Ай, Ай. Чему вы молодежь учите.
reboot - это экстренная перезагрузка, все демоны выбрасываются из памяти и комп идет на перезагрузку.
shutdown -r now - это есть корректная перезагрузка системы с завершением всех демонов, а не выкидывание их из памяти.
Статья супер. ;) Поправь перезагрузку.
maximus, 2010-12-28 в 16:37:18
Ребут - привычка линуховая, ибо что ребут, что шатдаут - уже ни какой разницы нет =) по крайней мере еще когда учился по книжке Slackware 3.1
В целом я бы и до сих пор им пользовался... Если бы не hal начиная с 11 версии.
Получил головняк когда одна из 5 сетевух вышла из строя, после смены долго танцевал с их именами/адресами.. с тех пор всё сетевое - на Фре.
Именно тогда я почуял удовольствие от названия интерфейсов.. em, xl, rl bg и т.д
Илья, 2013-04-11 в 15:49:02
register_globals=On !!!! На костер его!!!
Интересующийся, 2013-04-26 в 8:46:40
Сделал все как описано в статье. Но при попытке открыть .cgi отображается их содержимое, хотя .php нормально выполняются
nikll, 2013-04-26 в 10:54:28
на костер не надо :) там же вполне ясно написанно:
>> Пхп каждый конфигурит себе сам, но на основе длительного ковыряния с кучей серверов у меня получилось оптимальным вот это
Между прочим статья 2008 года, на тех серверах крутился софт котрый требовал register_globals=On вариант переписать ту кучу кала даже не рассматривался.
nginx не умеет .cgi, только fcgi
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [67 шт.]