PDA

Bekijk de volledige versie : Подскажите с настройками встроенного httpd



dccharacter
24-10-2006, 19:29
httpd после некоторого времени работы выгружается и больше не запускается. На удивление, никаких фиксов для этого случая в инете я не нашел, все просто сообщают что на эту ошибку можно напороться и рекомендуют как попытаться до нее не дойти, но что делать если ты уже получил ее, ответ один - куищще. Вот пример: Architectures that use an on disk ScoreBoardFile have the potential to corrupt their scoreboards. This can result in the "bind: Address already in use" (after HUP) or "long lost child came home!" (after USR1). The former is a fatal error, while the latter just causes the server to lose a scoreboard slot. So it might be advisable to use graceful restarts, with an occasional hard restart. These problems are very difficult to work around, but fortunately most architectures do not require a scoreboard file. See the ScoreBoardFile documentation for a architecture uses it.

Кто-нить смог побороть?
П.С. Это вэб сервер с ПХП, установленный с помощью ipkg.
П.П.С. По умолчанию в русской секции форума какая-то нерусская кодировка, каждый раз мануально приходится переключать.

coraxpda
24-10-2006, 20:17
1. поставить другой демон, lighttpd например + php-fcgi. В поиск.
2. в самом низу страницы есть выбор языка

Oleg
24-10-2006, 21:01
Памяти сколько и свопа? Язык можно выбрать в настройках вашего профайла.

Tronix
25-10-2006, 08:21
Ну если лениво переходить на другой хттп сервер, то можно в крон засунуть маленький скриптик, который будет проверять, загружен ли демон. Если нет - загружать его. Но это разумеется, временное решение.

dccharacter
25-10-2006, 18:58
Всем спасибо!

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


total used free shared buffers
Mem: 30140 25608 4532 0 2224
Swap: 0 0 0
Total: 30140 25608 4532

Память остается занята... После ребута без httpd мегов 15-17 свободно

imdex
25-10-2006, 20:59
А своп создать что мешает?

dccharacter
10-11-2006, 12:59
Подскажите, пожалуйста, нормальная ли это картина с lighthttpd с php:


[dccharacter@router root]$ ps
PID Uid VmSize Stat Command
176 dccharac 904 S /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf
177 dccharac 2428 S /opt/bin/php-fcgi
178 dccharac 2428 S /opt/bin/php-fcgi
179 dccharac 2428 S /opt/bin/php-fcgi
180 dccharac 2428 S /opt/bin/php-fcgi
181 dccharac 2428 S /opt/bin/php-fcgi
182 dccharac 2428 S /opt/bin/php-fcgi
183 dccharac 2428 S /opt/bin/php-fcgi
184 dccharac 2428 S /opt/bin/php-fcgi

php-fcgi запускаю из процесса lighttpd вот так (в файле /opt/etc/lighttpd/lighttpd.conf):

fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/opt/tmp/php-fastcgi.socket",
"bin-path" => "/opt/bin/php-fcgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "1",
"PHP_FCGI_MAX_REQUESTS" => "5000"
)
)
)
)

asdf123
10-11-2006, 14:43
httpd выгружается из-за того что ему недостаточно памяти, сделай своп.

З.Ы.: vsftp сервер после передачи файлов забирает всю память в кэш, как сделать чтобы она потом опять освобождалась? и надо ли это делать?

dccharacter
10-11-2006, 14:48
Спасибо, но вопрос не в этом. Вопрос в том, нормально ли, что для фаст-цги запускается несколько процессов, или все-таки должен быть один и я что-то не так настроил?

И раз уж все настойчиво рекомендуют сделать своп - подскажите, пожалуйста, как должго проживет моя флешка с организованным на ней своп разделом?

Oleg
10-11-2006, 15:01
Подскажите, пожалуйста, нормальная ли это картина с lighthttpd с php:



php-fcgi запускаю из процесса lighttpd вот так (в файле /opt/etc/lighttpd/lighttpd.conf):

fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/opt/tmp/php-fastcgi.socket",
"bin-path" => "/opt/bin/php-fcgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "1",
"PHP_FCGI_MAX_REQUESTS" => "5000"
)
)
)
)

Вообще, не должны висеть так, как мне кажется, но я код не смотрел. А что если поставить PHP_FCGI_MAX_REQUESTS в 1?

dccharacter
10-11-2006, 15:21
Вот что нашел. Поведение полностью соответствует моим настройкам.


How many php CGI processes will lighttpd spawn? ¶
lighttpd has three configuration options that control how many php-cgi processes will run:

PHP_FCGI_CHILDREN (defaults to 8 before 4.3.0, 0 after; see below)
min-procs (default 4)
max-procs (default 4)
When lighttpd starts, it will launch min-procs parent php processes. Each parent process then pre-forks PHP_FCGI_CHILDREN child processes. For example, if min- and max-procs are 4 and PHP_FCGI_CHILDREN is 16, lighttpd will start 4 + 4 x 16 = 68 processes.

To disable lighttpd's process control, set min-procs and max-procs to 1 and set PHP_FCGI_CHILDREN to the number of processes you want to spawn.

In the case of lighttpd 1.4, php 4.3, and eAccelerator 0.9.3 on Linux, eAccelerator will create a separate memory space for each parent process. If you leave min- and max-procs at 4, you'll end up with four separate eAccelerator caches. However, if a php parent segfaults, you'll still have three groups available to respond to queries. For this reason, Jan recommends setting min- and max-procs to 2.

After PHP 4.3.0, PHP_FCGI_CHILDREN defaults to 0. If left at 0, PHP will not pre-fork any children, so only min-procs parents will handle requests.

PHP 5 seems to start one parent process and one child per min/max-procs and PHP_FCGI_CHILDREN defaults to 1. What I suggest is splitting the number of processes you want between min/max-procs and PHP_FCGI_CHILDREN. The number of processes spawned = min/max-procs*(PHP_FCGI_CHILDREN+1). For my setup, I have min-procs and max-procs=2 and PHP_FCGI_CHILDREN=4.

Note that setting PHP_FCGI_MAX_REQUESTS is recommended to avoid possible memory leak side-effects.

Oleg
10-11-2006, 15:41
Ну так поставить в 1. Пусть обслуживаюися по очереди. Или ограничить разумным количеством, ибо 5000 процессов 32-х мегабайтах памяти - это круто.

coraxpda
10-11-2006, 16:03
Вот что нашел. Поведение полностью соответствует моим настройкам.

В файле запуска (не конфигурации) php-fcgi, экспортируется переменная с количеством дочек.
Поставить там желаемое количество, я вроде как даже ноль ставил и работало.

Один процесс в среднем кушал от 4.5 до 6 метров.
Да, если будешь завязываться с sqlite, везде реализована поддержка только второго, хотя в фидах есть третий. Нафига - неясно.

ЗЫ. Здесь настройки ВВЕРХУ рабочие на 100%
http://www.wl500g.info/showthread.php?t=5247&highlight=fcgi

pbolotin
11-11-2006, 10:43
Вот купил себе Примиум. Решил сделать домашний хостинг....

Есть пара вопросов.
1) Как вырубить встроенный httpd чтобы память не занимал? Убиваю ручками, он восстанавливается. Нашёл в nvram - httpd_die_restart, обнулил его, всё равно перезапускается.

2) Где настраивается процедура атоматического монтирования /tmp/harddisk. Хочется вырубить нафик этот маунтер и ручками в скрипте смонтировать как это мне надо.

3) Да.. ну и третий вопрос в догон :). Сейчас стоит 7f-pre11. В аглицком факе написано что для открытие 32м памяти надо записать sdram_init и sdram_ncdl. Я посмотрел free у меня уже итак 30140. init=0x0009 как в факе, а ncdl=0x507. Так вот вопрос, надо ли обнулять ncdl или с некоторой версии прошивки уже учли эти настройки.

Oleg
11-11-2006, 21:08
1) Убить ещё и watchdog и попрощаться с кнопкой restore
2) Отключите самбу, нфс, ftp
3) Прошейте 7f и не думайте об этом. Обнулить можно, хуже не будет. Видимо раньше у Вас стояла 1.9.7.1?

1+2) Используйте openwrt

pbolotin
11-11-2006, 22:30
Спасибо.
Посмотрю OpenWRTшные сборки.

SAAl
08-12-2006, 10:01
Выкачал исходники ASUS GPL_wl300g_500b_500g.zip. Перерыл все но не нашел httpd.c (broadcom.c) впрочем так же как и в сурсах прошивки Олега, только diff на него. Причем не понял не в одном патче этот дифф не одевается на hhtpd. Так и не смог найти исходников applay.cgi. Помогите разобраться где и как их можно обнаружить.

Oleg
08-12-2006, 18:14
Вы качали какую-то древность с сайта АСУСа, очевидно...

httpd - Это не часть бизибокса.

SAAl
08-12-2006, 18:32
Олег я скачал единственные исходнки с ftp асус под лицензией GPL. Где взять новее? httpd.c я нашел в busybox-1.00.tar.bz2

Помогите понять механизхм работы applay.cgi его я так и не обнаружил

Megarem
07-06-2007, 11:30
Хочу попробовать прикрутить к своему скрипту, который качает файлы, web-интерфейс. Для этого мне нужно запускать простенькие скрипты из cgi-bin. Хватит ли для этого встроенного httpd или придется ставить что-то более сложное?

Antonio_99RUS
07-06-2007, 12:49
Хватит lighttpd. Установка и настройка описаны в теме "Настройка с нуля".

Mam(O)n
07-06-2007, 13:14
Насколько я помню, то в прошивке есть busybox_httpd, который работает с cgi.

Megarem
07-06-2007, 13:25
Насколько я помню, то в прошивке есть busybox_httpd, который работает с cgi.
Это хорошо. Зачем ставить еще один сервис, если можно обойтись встроенным. Как я понимаю, стандартый веб-интерфейс рутера и обрабатывается через busybox_httpd. Можно ли добавить свои дополнительные странички прямо туда?

Mam(O)n
07-06-2007, 13:35
Нет, веб-интерфейс роутера обрабатывается другим демоном и добавить туда странички нельзя.

Megarem
07-06-2007, 14:32
Нет, веб-интерфейс роутера обрабатывается другим демоном и добавить туда странички нельзя.
О, это то что я и хотел выяснить. Пошел читать доки по lighthttpd и busybox_httpd...

begemot
11-04-2008, 08:21
как удалить httpd встроенный?


[root@begemot_router etc]$ ipkg remove httpd
No packages removed.
Nothing to be done
Successfully terminated.
[root@begemot_router etc]$

al37919
11-04-2008, 08:26
ответ --- никак.

leomac
06-07-2008, 09:11
Как можно запустить второй httpd сервер на прослушку другого порта с другой директорией для документов? При попытке запуска
httpd -p 88 -h /tmp/www/ сервер запускается, но при запросах выдаёт пустой ответ. Только заголовки, но никакого содержимого. Ни 404, ни 403 статуса. Только 200-ый и пустое тело. Притом, что /tmp/www создано, внутри лежат index.html и заботливо скопированный index.asp из /www

vectorm
06-07-2008, 10:13
Как можно запустить второй httpd сервер на прослушку другого порта с другой директорией для документов? При попытке запуска
httpd -p 88 -h /tmp/www/ сервер запускается, но при запросах выдаёт пустой ответ. Только заголовки, но никакого содержимого. Ни 404, ни 403 статуса. Только 200-ый и пустое тело. Притом, что /tmp/www создано, внутри лежат index.html и заботливо скопированный index.asp из /www
Почитай тут (http://www.simonstl.com/projects/tcpip/linux/httpset.html), может пригодится.

redkaa
19-10-2008, 11:04
Сейчас у меня под рукой устройства нет, а когда доступ появится - будет крайне немного времени, хотелось бы быть уже подготовленным.

Поддерживает ли встроенный веб-сервер php или cgi скрипты?
Если поддерживает php - как узнать, где находится веб-папка, как в нее поместить свой файл с его сохранением после перезагрузки роутера?

Если поддерживает cgi - вдобавок в предыдущим двум вопросам - как добавить в настройки сервера еще одну cgi-папку и как заставить сервер обрабатывать .php файл как если бы это был файл .cgi?

redkaa
22-10-2008, 07:01
кто-нибудь, плз?
укажите на тьюториалы по созданию и выполнению cgi скриптов на бизибоксе!

lionfish0
22-10-2008, 12:03
Первоначальный httpd cgi не поддерживает, его нужно подменить busybox_httpd командой

killall httpd; busybox_httpd

теперь вместо встроенного поднимется бизибоксовский сервер, он умеет работать с cgi, инструкции наверняка тут есть.

FilimoniC
22-10-2008, 15:25
php надо ставить отдельно,причем, я думаю, что он не влезет во внутреннюю память, так что на флешку.

соответственно как самый простой вариант - запускать +x - скрипты через через #!/opt/bin/php

Нормальногомощного сервера вам там не поднять - это все таки роутер а не сервер

redkaa
23-10-2008, 15:07
FilimoniC, спасибо за ответ. В принципе само php интересно только в связке с БД, USB порта все равно нет - так что отпадает. Достаточно будет выполнять обычный CGI скрипт в файле с расширением .php (он ведь умеет парсить URL и получать веб-страницу с удаленного www сервера?)

lionfish, спасибо за подсказку. А busybox_httpd идет в комплекте с системой? Что будет с веб-мордой? Можно ли сохранить эти команды в памяти, чтобы запускались автоматически при перезагрузке роутера? В любом случае, огромное спасибо, теперь у меня есть ключевые слова для гугления :-)

featZima
21-03-2009, 18:27
Мне не очень нужны такие сервисы как httpd, telnetd и подобные, я знаю что их можно просто убить, но хотелось бы просто отключить их автозагрузку... Подскажите откуда они стартуют...

al37919
21-03-2009, 20:52
чтобы отключить httpd придется прошивку пересобирать, а telnetd можно выключить в вебинтерфейсе.

the
10-05-2009, 18:24
Может быть пожалуйста подскажете, почему любые попытки прибивания процесса httpd заканчиваются запуском нового?

Мне на самом деле необходимо пересобирать прошивку чтобы httpd в списке запущенных процессов не фигурировал? или его убийство надо реализовывать каким нибудь интересным, более изощренным способом?

Serge_K
10-05-2009, 18:38
А в чем глубокий смысл?

the
10-05-2009, 21:09
Периодически rtorrent валится, при этом используется своп в обьеме примерно 29мб

Пытаюсь по крошкам настрелять памяти, убиваю все что не имеет смысла.

httpd мне бесполезен - все делаю через ssh

al37919
11-05-2009, 20:11
watchdog перезапускает httpd (кажется каждыее 5 сек). Так что для того, чтобы его прибить до конца, надо сначала прибить watchdog. Попробуйте. Но после этого возможны некоторые сюрпризы --- типа неработающего хотплага usb, нездоровое поведение лампочек и т.п.

Чтобы его прибить культурно надо взять исходники watchdog, закомментировать перезапуск httpd и пересобрать прошивку.

theMIROn
11-05-2009, 20:24
watchdog перезапускает httpd (кажется каждыее 5 сек). Так что для того, чтобы его прибить до конца, надо сначала прибить watchdog. Попробуйте. Но после этого возможны некоторые сюрпризы --- типа неработающего хотплага usb, нездоровое поведение лампочек и т.п.

Чтобы его прибить культурно надо взять исходники watchdog, закомментировать перезапуск httpd и пересобрать прошивку.
можно pid заменить на 1...

the
11-05-2009, 20:43
На счет pid можно заменить на 1... это без пересборки прошивки? Скриптами в /usr/local/sbin/post-* или cron?

CopyProf
13-03-2010, 22:50
Добрый день. уважаемые коллеги.

Купил пару дней назад D Link 320 Rev a1.
Установил прошивку от энтузиастов 1.9.2.7-d-r1222.

Пытаюсь заставить автоматически запускаться встоенный веб сервер.
(никаких пакетов на флешку не ставил - просто в каталов web на флешке поместил свой веб-сайт)

1.Перенес встроенный веб для управления на другой порт
# nvram set http_lanport=12345
# nvram commit

2.Запускаю через телнет -
busybox_httpd -h /tmp/harddisk/web

Сайт работает!

Пытаюсь заставить автоматом запускаться веб-сервер при включении устройства: (через телнет посылаю)

mkdir -p /usr/local/etc/busybox_httpd
mkdir -p /usr/local/sbin/
echo "#!/bin/sh" >> /usr/local/sbin/post-boot
echo "busybox_httpd -h /tmp/harddisk/web" >> /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/post-boot
flashfs save
flashfs commit
flashfs enable
reboot

При старте веб-сервер не запускается.
(хотя файлы остались! - значит созраняю правильно)

Как лучше сделать?
Дополнительные пакеты ставить на флешку не хочется.
Считаю идеальным вариант с автозапуском веб-сервера (html на флешке) + чтобы лог обращений писал на эту же флешку.
(пока тоже не нашел решения с busybox_httpd )

P.S. на Dir-320 сейчас использую только LAN-порты, Wi-Fi отключен, инет подается через роутер ADSL DLink 2500U сразу на LAN1. Планирую использовать Wi-Fi. (привлекает остутствие включенных компов - тишина и постоянно работающими FTP, WEB)
__________________________________________________ _____
... С уважением, Соболев Андрей
http://andreyco.dlinkddns.com - хостится для примера на Dir-320

D_dmitry
14-03-2010, 02:15
может попробывать запускать вебб сервер из post-mount ?

CopyProf
14-03-2010, 11:59
Громадное спасибо! Получилось! :)

Может кому-то и пригодиться:
Если до этого что-то было -
проще сделать так(вернуться к настройкам как сразу после прошивки)
flashfs disable
reboot

Выполняем: (можно через буфер виндовз)

-------------------------------------------------------------------
mkdir -p /usr/local/etc/busybox_httpd
mkdir -p /usr/local/sbin/
echo "#!/bin/sh" >> /usr/local/sbin/post-mount
echo "busybox_httpd -h /tmp/harddisk/web >>/tmp/harddisk/weblogs/weblog.txt" >> /usr/local/sbin/post-mount
chmod +x /usr/local/sbin/post-mount
flashfs save
flashfs commit
flashfs enable
reboot
---------------------------------------------------------------------

и Все! веб сервер в каталоге web на флешке сам начинает работать!

P.S. - Dir 320 однозначно стоит своих денег! (1780 руб.) надо только чуть-чуть руки приложить!

Теперь буду разбираться с записью логов веб сервера на флешку(если они есть у busybox_httpd ).
плюс такого решения - если что и произойдет при некорректном выключении - полечил флешку и все!

------------------------------------------------------------
... С уважением, Соболев Андрей
http://andreyco.dlinkddns.com - тестирурую веб-сервер, поскольку ftp в прошивке уже есть с логами.