# Apache and FastCGI (Español)

This article or section needs language, wiki syntax or style improvements.

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Apache and FastCGI (Español)#)

La traducción de este artículo o sección no refleja el texto original.

Motivos: traducción desactualizada (Discusión)

El objetivo de este "how-to" es configurar Apache para que utilice un módulo fastcgi externo.
--cactus 19:35, 9 Sep 2005 (EDT)

## 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 apache con pacman.

    $ pacman -S fcgi apache

### 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:
Lighttpd#SSL[broken link: invalid section]
Lighttpd#FastCGI

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

Category:

- Web server (Español)

Hidden categories:

- Pages or sections flagged with Template:Style
- Pages with broken section links