HTTP-сервер на Freepascal

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Сообщение cranium » 08.06.2006 20:07:34

Как раз таки в винде все нормально. Там можно просто завершить процесс. А вот с линуксом проблемы, чего я не ожидал.


Ни каких проблем kill и все, проще чем в винде;)

Если делать с условной компиляцией и пр., то можно потерять кроссплатформенность.

Это как, один участок кода для винды другой для линукса и т.д.

Архитектура то разная и без ее учета ни чего путного не получится, даже самый легкий web сервер не способный работать как служба или демон не имеет практического смысла...

У меня есть несколько серверов в интернете, хотел я твой web сервер на одном из них запустить и небольшой, но относительно посещаймый сайтик на него перенсти, посмотреть как под нагрузкой будет себя вести и сразу же обломался ибо он будет работать только пока шел запущен...
cranium
постоялец
 
Сообщения: 143
Зарегистрирован: 08.05.2005 03:59:45
Откуда: Санкт-Петербург

Сообщение Replicator » 09.06.2006 16:30:05

Не, как служба он работать будет - нет проблем. Это я сделаю в любом случае. Как я это сделаю - другой вопрос, но сделаю.

Ни каких проблем kill и все, проще чем в винде

Ну я же писал - не освобождается сокет.
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение SergKam » 14.06.2006 16:28:34

Ты возможно плохо знаешь смысл сигналов unix
Необработаный сигнал вызывает аварийное завершение процесса.
поэтому если поставить обработчик сигнал то в нем можно спокойно закрыть все процессы, сокеты и тд.
А обработчик сигнала ставить придется по любому,
так как при например какомто аварийном завершении работы системы
твой сервер все равно получит сигнал TERM или HUP, и что по ним делать
просто падать или всетаки завершаться кооректно решать тебе.
(нельзя написать сервер без учета платформы, это вам не утилитка какаято)
SergKam
постоялец
 
Сообщения: 251
Зарегистрирован: 16.11.2005 21:31:11
Откуда: Украина,Харьков

Сообщение Replicator » 17.06.2006 19:40:34

Я действительно плохо знаю о сигналах в UNIX - никогда с ними не работал.

Что касается учета платформы, то я все же склоняюсь к тому, что стоит попробовать. Ведь сам факт того, что сервер работает, уже говорит за то, что это возможно :wink:
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение SergKam » 05.07.2006 23:46:36

Replicator
странный ты вот в твоих исходниках есть
Код: Выделить всё
  {$ifdef mswindows}parameters := StringReplace(parameters, '%', '%%', [rfReplaceAll]);{$endif}
или
Код: Выделить всё
{$ifdef win32}{$R icon.res}{$endif}
uses
  {$ifndef win32}cthreads,{$endif} zserver, cfgfile, sysutils, shell;


ты уже под разные платформы ответвления сделал,
но там где это обсалютно необходимо вдруг отказываешься :( .
непонятно.
давай может я всетаки помогу(пач для демона-службы Unix пришлю) или ты сам?
тут интересный вопрос по твоей программе есть.
http://www.lazarus.freepascal.org/index ... sc&start=0
хотят сделать новый набор виджетов WEB на подобии IntraWeb
нужен какраз простой мальнький и понятный веб сервер. Я осмелился твой предложить.
SergKam
постоялец
 
Сообщения: 251
Зарегистрирован: 16.11.2005 21:31:11
Откуда: Украина,Харьков

Сообщение Replicator » 08.07.2006 17:23:15

давай может я всетаки помогу(пач для демона-службы Unix пришлю) или ты сам?

Буду рад любой помощи. Спасибо.

тут интересный вопрос по твоей программе есть.

Я уже видел, спасибо. С этой темы ко мне на сайт переходили.
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение STAKANOV » 11.08.2007 11:45:13

Скачал. Собралось без проблем
Система:
Код: Выделить всё
FreeBSD platinum.lan. 6.2-RELEASE-p7 FreeBSD 6.2-RELEASE-p7 #27: Fri Aug  3 14:05:23 MSD 2007     root@platinum.lan.:/usr/obj/usr/src/sys/PLATINUM  i386

Скрипт install.sh не запускал. Поправил vhost.cfg вручную. Страница из исходников открывается. Чтобы особо не мучаться откомпелил cgiapp.pp:
Код: Выделить всё
fpc cgiapp.pp -ocgiapp.exe

Проверил, тоже работает.

Поменял путь в vhost.cfg на свой каталог с веб-проектом. В файле config.cfg заменил index.html на index.cgi, но вместо того чтобы показывать результат работы index.cgi сервер предлагает его скачать под именем default. Как поправить? Или если указать URL напрямую (http://localhost/index.cgi), то под именем index.cgi. В mime.cfg добавлял cgi=execute/cgi - не помогло.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV » 11.08.2007 16:28:52

Немного больше подробностей. Похоже cgi всетки запускается, закачать оно мне пыталось из-за кэша браузера. nYume пересобрал с опциями "-gl -B". Для контроля апач на 80 порту, nYume на 81. Соответвенно http://localhost открывается нормально. При попытки открыть http://localhost:81 что-то где-то повисает. В катлоге сервера появляются файлы:

tmp_JKfjCGeh__cmd.sh tmp_JKfjCGeh__pipe.txt

соответвенно второй содержит результат работы моего index.cgi

Прерываю процесс зайдя в консоль сервера и нажав "q", получаю вот что:
Код: Выделить всё
#####Request: 11-8-07, 16:20
GET / HTTP/1.1
Host: localhost:81
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.8.1.6) Gecko/20070725 FreeBSD/i386 Firefox/2.0.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.7,en-us;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive


#####Wait for connection...
q
#####Shutdown Server
Runtime error 6 at $080630B5
  $080630B5
  $0805C470
  $0804AB8F  main,  line 310 of nYume.pp
  $08048C72

platinum#


Имхо: подозреваю, что грабли в реализации многопоточности для FreeBSD, это как раз тот случай где лучше использовать fork.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Replicator » 15.08.2007 00:03:40

Возможно. Я под FreeBSD никогда не программировал, да и вообще с BSD мало знаком, так что не знаю.

Вообще, многопоточность в fpc должна быть кроссплатформенной...

И кроме того, сервер требует небольшой доработки. Во-первых, надо использовать TProcess вместо моего "изобретения", работающего через командные файлы. А во вторых, по-моему, у меня не правильно обрабатывается "Connection: keep-alive".
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Пред.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru