Apache HTTP Server (Español)/mod fcgid (Español)
El objetivo de este "how-to" es configurar Apache para que utilice un módulo fastcgi externo.
--cactus 19:35, 9 Sep 2005 (EDT)
Contents
Requisitos
Tendrá que satisfacer todos los requisitos antes de poder correr Apache con fastcgi. Estos requisitos son:
- apache
- fcgi
- mod_fastcgi
Instalación
Para satisfacer los requisitos
Instale los paquetes apache y fcgid[enlace roto: package not found] de los repositorios oficiales.
Descargue mod_fastcgi
$ wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
Desempaquete mod_fastcgi
$ tar -xzf mod_fastcgi-2.4.2.tar.gz $ cd mod_fastcgi-2.4.2
Modifique algunos archivos
$ cp Makefile.AP2 Makefile
Ahora tiene que editar el Makefile:
builddir = . top_dir = /home/httpd top_srcdir = ${top_dir} top_builddir = ${top_dir} include ${top_builddir}/build/special.mk APXS = apxs APACHECTL = apachectl #DEFS=-Dmy_define=my_value INCLUDES=-I/usr/include/apache LIBS=-L/usr/lib/apache/ all: local-shared-build install: install-modules-yes clean: -rm -f *.o *.lo *.slo *.la
Ahora tiene que aplicar un parche a fcgi.h para solventar el problema de renombrado de la nueva API:
$ patch -Np0 -i fcgi.patch
fcgi.patch :
--- fcgi.h.orig 2003-02-04 00:07:37.000000000 +0100 +++ fcgi.h 2005-12-07 21:05:55.000000000 +0100 @@ -73,6 +73,36 @@ #define ap_reset_timeout(a) #define ap_unblock_alarms() +/* starting with apache 2.2 the backward-compatibility defines for + * 1.3 APIs are not available anymore. Define them ourselves here. + */ +#ifndef ap_copy_table + +#define ap_copy_table apr_table_copy +#define ap_cpystrn apr_cpystrn +#define ap_destroy_pool apr_pool_destroy +#define ap_isspace apr_isspace +#define ap_make_array apr_array_make +#define ap_make_table apr_table_make +#define ap_null_cleanup apr_pool_cleanup_null +#define ap_palloc apr_palloc +#define ap_pcalloc apr_pcalloc +#define ap_psprintf apr_psprintf +#define ap_pstrcat apr_pstrcat +#define ap_pstrdup apr_pstrdup +#define ap_pstrndup apr_pstrndup +#define ap_push_array apr_array_push +#define ap_register_cleanup apr_pool_cleanup_register +#define ap_snprintf apr_snprintf +#define ap_table_add apr_table_add +#define ap_table_do apr_table_do +#define ap_table_get apr_table_get +#define ap_table_set apr_table_set +#define ap_table_setn apr_table_setn +#define ap_table_unset apr_table_unset + +#endif /* defined(ap_copy_table) */ + #if (defined(HAVE_WRITEV) && !HAVE_WRITEV && !defined(NO_WRITEV)) || defined WIN32 #define NO_WRITEV #endif
Construya mod_fastcgi
$ make < become root > $ make install
Configuración
Ahora tiene que cargar el módulo fastcgi.
Edite su archivo httpd.conf de Apache. Para lograr que arranque añada lo siguiente:
LoadModule fastcgi_module lib/apache/mod_fastcgi.so <IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi </IfModule>
Esto se ocupará de cualquier archivo con extensión .fcgi; recuerde que son de aplicación las restricciones estándar de cgi, los archivos deben estar enmarcados en un "ExecCGI enabled" o situados en directorio de guiones para ser ejecutados.
Si está utilizando php fastcgi puede modificar el archivo httpd.conf de la siguiente manera:
LoadModule fastcgi_module lib/apache/mod_fastcgi.so <IfModule mod_fastcgi.c> ## Example for php fastcgi ### <Location /php-fcgi/> Options ExecCGI SetHandler fastcgi-script </Location> FastCGIExternalServer /php-fcgi/phpfcgi -host 127.0.0.1:9000 AddType application/x-httpd-fastphp .php .cphp .php4 .php5 Action application/x-httpd-fastphp /php-fcgi/phpfcgi </IfModule>
De esta manera todos los archivos que terminan en .php, .cphp, .php5, o .php4, deberián ser reenviados al manejador del servidor fcgi.
Más
Esta guía no cubre actualmente la configuración de de los procesos externos generados con anterioridad. Para ver ejemplos de esto, visite los siguientes enlaces:
Para conseguir que compile mod_fastcgi si está utilizando Apache 2.2.2 debe aplicar el parche que se detalla a continuación: http://fastcgi.com/archives/fastcgi-developers/2005-December/004060.html