Jue Jul 05, 2007 1:28 pm
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
| Como hacer un web server...ya tengo el deamon... |
|
|
Hola, estoy haciendo un deamon, y se me generaron 2 dudas:
Me gustaría que pueda recibir peticiones desde la web...para que pueda imprimir información del sistema en formato HTML...Como se hace eso ?
Y la otra es como hacer para que tenga las opciones start restart y stop de linux
El deamon lo hago con POSIX
Saludos
EDITADO: ya me bajé algunos scripts y demás, veo que usan el IO::socket pero no entiendo bien esa parte
EDITADO2: El server solo toimaría unos pocos parámetros, puede ser GET, lo que me importa es que envíe info, no que reciba... |
|
|
|

Jue Jul 05, 2007 2:00 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 478
Ubicación: Frente al monitor
|
|
|
|
|
Hola.
Buno, hay una que otra forma de hacer "demonios", la más común es hacer el servidor y la otra hacer el controlador o hacerlo todo en uno.
Lo primero que haces es tomar las entradas (servidor -stop), si la entrada es para iniciar míras si existe en /var/run/nombre_de _servidor.pid, si existe el servidor no inicia y debe de dar un error.
Si no existe creas el archivo y pones el pid del servidor.
Al salir el servidor debe eliminar el archivo.
Para pararlo, habre el archivo, miras el pid y usas la kill(); luego eliminas el archivo.
Si es necesario, puedes usar chroot.
Modifica las "trap signals" para no tener problemas. |
|

Jue Jul 05, 2007 2:13 pm
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
|
bueno, buscando encontré un tutorial que habla algo sobre io::socket, dice que hay que usar el IO::Socket::INET...
Alguna recomendación...La documentación del cpan de esos módulos es realmente pobre...
Saludos |
|

Jue Jul 05, 2007 5:25 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
Mientras que la recomendación de un experto sería que usaras POE, y yo estoy de acuerdo con eso, es una filosofía que tarda un tiempo en aprenderse.
Yo el mejor ejemplo de explicación de Networking con Perl la ví en la revista Linux Journal, en el 1999: Network Programming with Perl. Ya está un poco anticuado, con las nuevas formas de conexión, pero es perfectamente funcional. Abarca muchos aspectos de cómo crear servidores/clientes.
En libros, existe el "Network Programming with Perl" de Lincoln D. Stein, 2000, Addison Wesley, que trata casi todos los temas. En otros libros hay respuestas rápidas a algunos temas en concreto. Por ejemplo, en el Perl Cookbook hay un capítulo dedicado a esto, incluyendo el tema de daemons. Incluso creo que es de lo mejor que se ha escrito sobre este tema. Pero no deja de ser un poco farragoso para lo que pides.
Lo que tu dices que quieres hacer es un pequeño servidor web que responda con contenido estático, o con contenido dinámico, aunque sea un poco limitado. Eso se puede hacer en unos pocas líneas con los módulos que comentas, pero... para una cosa rápida no es necesario bajarse a tan bajo nivel. Al fin y al cabo, otras personas ya han hecho servidores web basados en esos módulos, como por ejemplo el HTTP::Server::Simple. En unas pocas líneas tienes un web server arrancado.
Y como colofón, naturalmente, el engendro creado por Graham y Damian: IO::All, que permite crear un servidor web, estático y dinámico, en una sola línea: | Perl: | perl -MIO::All -e 'io(":8080")->fork->accept->(sub { $_[0] < io(-x $1 ? "./$1 |" : $1) if /^GET \/(.*) / })' | Claro que esto hay que hacerlo en casos extremos, pero para salir del paso está muy bien. Incluso ejecuta CGI.
Yo te recomiendo que primero instales un servidor web como el HTTP::Server::Simple y que funcione, luego mirar el artículo de la Linux Journal y hacer pruebas. Y luego, con tiempo, hacerlo todo con POE. En la sección de Cookbook tienen algunos ejemplos de cómo hacer servidores web (al final de la página). |
|

Jue Jul 05, 2007 10:42 pm
|
 |
Perl user
Maestro Honorario

|
Registrado: 03 Nov 2004
Mensajes: 385
|
|
|
|
|
Qué tal,
Mira en lo personal creo que te estas (posiblemente a propósito, o con fines de hacerlo rápido) saltando MUCHOS conceptos claves para la creación de CUALQUIER aplicación cliente-servidor. El caso de un webserver no es la excepción.
En primera instancia debes comprender muy bien como se realiza el proceso de conexión entre dos sockets, obviamente tendrás que pararte a leer sobre el protocolo TCP/IP, para poder comprender conceptos como "handshaking", "timeouts", entre otras cosas.
Entonces... mucho antes de meterte con el protocolo HTTP o con servidores que acepten múltiples peticiones, realmente te recomiendo leer algún documento completo sobre sockets.
Si no encontraste información sobre IO::Socket es porque en realidad la información existente es tomada de otros recursos que una persona que use sockets ya debe conocer, y me refiero a la interfaz de BSD sockets en C. No estoy diciendo que tengas que aprenderte la interfaz en C, hablo de que tienes que conocer simplemente el ciclo de vida de un socket en general. Tanto por parte de un cliente, como por parte del servidor.
Así que... no importa que uses POE, IO::Socket, Socket.pm, Coro, Http::Simple, y TODOS esos módulos que ya te enlistaron. Seguirás en las mismas si realmente no comprendes los conceptos debajo de ello. Olvídate de daemons, http, peticiones concurrentes, procesos y todo eso por ahora. Enfócate a lo que es la comunicación con sockets.
Recomendaciones? Claro... el mejor libro, y no solo el mejor, sino la Referencia UNIVERSAL para esto es, Unix Network Programming de Addison Wesley, del autor (en paz descanse) Richard W Stevens. Excelente libro, con cobertura AMPLIA sobre todo lo relacionado a la programación de aplicaciones cliente-servidor, incluyendo multiprocesos, multiplexión, etc...
Ahora bien, ese libro te recomiendo leer por lo menos los primeros 3 o 4 capítulos, y luego pasarte al libro que te recomendó explorer "Network Programming with Perl" de Lincoln Stein. Libro que abarca como ya te mencionaron, conceptos básicos y algunos avanzados. Algunos capítulos ya están completamente obsoletos, pero la referencia allí está. Pero ese libro realmente te ayudará con la parte de Perl.
En serio... suena tedioso, pero el camino es el correcto, y si realmente quieres aprender te será divertido. Sino... si SOLO quieres hacer lo que tienes en mente sin realmente aprender, entonces... usa cualquier módulo que lo haga por tí.
Saludos, |
|

Vie Jul 06, 2007 7:44 am
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
|
Mil gracias a los 3 por responder...Ya mismo ayer estuve leyendo algunas cosas sobre sockets y servidores...Y me estoy copiando varios libros que mencionan para darles duro el fin de semana...
La idea es hacer mi propio servidor, no quiero usar un módulo ya programado, ya que tengo muchas ganas de aprenderlo...
Saludos |
|
Powered by phpBB © 2001, 2005 phpBB Group
|