Table of Contents
Instalación de FcgiWrap y habilitación de lenguajes dinámicos Perl, Ruby y Bash en Gentoo LEMP
Este tutorial está estrictamente relacionado con el anterior sobre la instalación de LEMP en Gentoo y trata otros problemas extendidos del servidor, como habilitar lenguajes de scripting dinámico como Perl o Bash o Ruby a través de Fcgiwrap Gateway. y editar Nginx Virtual Hosts archivos de configuración para entregar contenido dinámico utilizando los scripts .pl , .rb y .cgi .
Instalar FcgiWrap con los requisitos de Perl, Ruby y Bash
- Pila LEMP instalada en Gentoo-https://www.tecmint .com/install-lemp-in-gentoo-linux/
Paso 1: Habilite FCGIWRAP en Gentoo LEMP
Fcgiwrap es una parte de Interfaz de puerta de enlace común Nginx FastCGI que procesa otros lenguajes de secuencias de comandos dinámicos, como las secuencias de comandos Perl o Bash o Ruby, funciona procesando las solicitudes recibidas de Nginx, a través de TCP o Unix Sockets, de manera independiente y devuelve el producto resultado de nuevo a Nginx, el cual, en su término, reenviará las respuestas a los clientes finales.
1.. Primero comencemos instalando el proceso FCcgiwrap en Gentoo Linux usando el siguiente comando.
# emerge–ask www-misc/fcgiwrap
Instalar el paquete FCcgiwrap
2.. Por defecto, el paquete Fcgiwrap no proporciona ningún init scripts en Gentoo para gestionar el proceso. Después de que los paquetes se hayan compilado e instalado, cree los siguientes scripts init que le ayudarán a administrar el proceso Fcgiwrap utilizando tres enfoques: ya sea iniciando el proceso usando Sockets de dominio Unix o usando local TCP Sockets o usando ambos al mismo tiempo.
Usando TCP Socket Script
Cree un archivo de inicio en la ruta /etc/init.d/ con lo siguiente contenido del archivo.
# nano/etc/init.d/fcgiwrap freestar.config.enabled_slots.push
Agregue el siguiente contenido del archivo.
#!/sbin/runscript ip = “0.0.0.0” port = “12345” start () grep fcgiwrap` echo “Detalles del socket: $ tcp_sock” eend $? “Se encontraron errores al iniciar el proceso fcgiwrap” stop () grep tcp status () ebegin “Estado del proceso fcgiwrap …” tcp_sock = `netstat-atulpn
Usando TCP Socket Script
Como puede ver, el archivo de script contiene dos variables en el principio, respectivamente ip y puerto . Cambie estas variables según sus propias necesidades y asegúrese de que no se superpongan con otros servicios de su sistema, especialmente la variable de puerto; el valor predeterminado aquí es 12345 ; cambie en consecuencia.
Usando 0.0.0.0 en la variable IP permite que el proceso se vincule y escuche en cualquier IP (accesible desde afuera si no tiene un firewall), pero por razones de seguridad debe cambiarlo para escuchar solo localmente, en 127.0.0.1 , a menos que tenga otras razones, como configurar remotamente la puerta de enlace Fcgiwrap en un nodo diferente para el rendimiento o el equilibrio de carga.
3.. Después de que el archivo sea creado, agregue permisos de ejecución y administre el proceso del demonio usando interruptores de inicio, detención o estado. El interruptor de estado le mostrará información de socket relevante, como el par IP-PORT que escucha y si alguna conexión activa se inicializó. Además, si el proceso tiene conexiones activas en el estado TIME_WAIT , no puede reiniciarlo hasta que se cierren todas las conexiones TCP.
# chmod + x/etc/init.d/fcgiwrap # service start fcgiwrap #/etc/init.d/fcgiwrap status
Iniciar el servicio FcgiWrap usando Unix Socket Script
Como se presentó anteriormente, Fcgiwrap puede ejecutarse simultáneamente usando ambos sockets, por lo que cambiará ligeramente el nombre del segundo script a fcgiwrap-unix-socket , para garantizar que ambos puedan iniciarse y ejecutarse al mismo tiempo.
# nano/etc/init.d/fcgiwrap-unix-socket
Utilice el siguiente contenido de archivo para el socket UNIX.
#!/sbin/runscript sock_detail = `ps a | grep fcgiwrap-unix | head-1` start () ebegin “Iniciando el proceso fcgiwrap-unix-socket …”/usr/sbin/fcgiwrap-s unix:/run/fcgiwrap-unix.sock & sleep 2/bin/chown nginx: nginx/run/fcgiwrap-unix.sock sleep 1 sock = `ls-al/run/fcgiwrap-unix.sock` echo” Detalles del socket: $ sock “eend $? “Se encontraron errores al iniciar el proceso fcgiwrap” stop () ebegin “Deteniendo el proceso fcgiwrap-unix-socket …” pid = `ps a status () ebegin “Estado del proceso fcgiwrap-unix-socket …” if test-S/run/fcgiwrap-unix.sock; luego echo “El proceso se inicia con socket: $ sock_detail” de lo contrario echo “¡El proceso Fcgiwrap no se está ejecutando!” fi eend $? “Se encontraron errores al detener el proceso fcgiwrap …”
Usando Unix Socket Script
4.. Nuevamente asegúrese de que este archivo es ejecutable y usa los mismos interruptores de servicio: iniciar , detener o estado . Establecí la ruta predeterminada para este socket en la ruta del sistema /run/fcgiwrap-unix.sock . Inicie el proceso y verifíquelo usando el interruptor status o lista el contenido del directorio /run y localice el socket, o use ps-a | comando grep fcgiwrap .
# chmod + x/etc/init.d/fcgiwrap-unix-socket # inicio del servicio fcgiwrap-unix-socket #/etc/init.d/fcgiwrap-unix-socket status # ps-a | grep fcgiwrap
Iniciar y verificar Fcgiwrap
Como se mencionó anteriormente, Fcgiwrap puede ejecutarse con sockets TCP y UNIX simultáneamente, pero si no necesita conexiones de puerta de enlace externas, siga Socket de dominio Unix solamente, porque usa comunicación entre procesos, que es más rápida que la comunicación a través de conexiones TCP loopback, y usa menos sobrecarga TCP.
Socket de dominio Unix
Paso 2: Habilite los scripts CGI en Nginx
5.. Para que Nginx analice y ejecute scripts Perl o Bash a través de la interfaz Fast Common Gateway, los hosts virtuales deben configurarse con definiciones Fcgiwrap en la ruta raíz o declaraciones de ubicación.
A continuación se presenta un ejemplo (localhost), que activa los scripts Perl y CGI en todos los archivos ubicados en la ruta raíz (/var/www/localhost/htdocs/) con la extensión .pl y .cgi usando Fcgiwrap TCP Sockets para la ruta predeterminada del documento raíz, la segunda ubicación usa Sockets de dominio Unix , con un index.pl y la tercera ubicación usa sockets TCP con un archivo index.cgi .
Coloque el siguiente contenido, o solo algunas partes del mismo, en el archivo de configuración de Virtual Host que desee, desea activar scripts dinámicos Perl o Bash con UNIX o TCP Sockets en diferentes ubicaciones, modificando la declaración de argumento fastcgi_pass .
# nano/etc/nginx/sites-available/localhost.conf
Edite localhost.conf para que se vea como en la plantilla a continuación.
Verificar directorio CGI
Una página de índice CGI de Perl
Página de índice Bash CGI
8.. Si todo está en su lugar y configurado correctamente, habilite ambos demonios Fcgiwrap para que se inicien automáticamente, después de reiniciar emitiendo los siguientes comandos (en caso de que haya configurado Nginx para usar ambos sockets CGI).
# rc-update add fcgiwrap default # rc-update add fcgiwrap-unix-socket default
Paso 3: Active la compatibilidad con Ruby en Fcgiwrap
9.. Si necesita ejecutar scripts dinámicos de Ruby en Nginx FCGI debe instalar el intérprete Ruby en Gentoo con el siguiente comando.