Otro proyecto de herramienta para el diploma
Antes de comenzar, intente probar las funciones básicas. Entre todos los módulos, las piezas típicas para probar son las tres implementaciones de servidor/proxy:
$ cd /path/to/project/root/directory
$ PYTHONPATH=. python3 server/static_file.py > log/static.log
$ PYTHONPATH=. python3 server/fastcgi_proxy.py > log/fastcgi.log
$ PYTHONPATH=. python3 server/http_proxy.py > log/http.log Debido a la lenta velocidad de conexión de httpbin.org, es posible que deba usar proxyChain para acelerar las pruebas de HTTPProxy , y posiblemente un error como proxychains can't load process podría ocurrir si su terminal usa Dash como el shell predeterminado, en este caso solo especifique el shell con bash -c "python3 file.py"
$ PYTHONPATH=. proxychains4 python3 server/http_proxy.py > log/http.log
$ PYTHONPATH=. proxychains4 bash -c " python3 server/http_proxy.py > log/http.log " Finalmente, puede cambiar las configuraciones en config/config.yaml , luego inicie el servidor principal y visite el sitio para ver si todo funciona bien:
$ PYTHONPATH=. python3 main.py Tenga en cuenta que el par host:port de forma predeterminada es localhost:80 , y para unir ese tipo de puertos "privilegiados" (1-1023) con el usuario no raíz, deberá establecer capability de Python Binary, por ejemplo /usr/bin/python3 :
$ sudo setcap ' cap_net_bind_service=+ep ' /usr/bin/python3 Verifique los registros en log/ Si desea, main.log registrará el proceso completo de todas las solicitudes y respuestas, mientras que (static|fastcgi|http).log son los resultados de las pruebas mencionadas anteriormente.
Todas las pruebas anteriores, incluidas las pruebas de otros módulos, ahora se escriben como un script ayudante en modtests.sh , que puede ejecutar directamente y ver los resultados. Puede usar tee para duplicar las salidas a un archivo de registro y verificarlas más tarde:
$ ./modtests.sh 2>&1 | tee modtests.log El módulo FastCGiproxy del Proyecto se comunica con FASTCGI usando cgi-fcgi , que puede instalarse mediante apt-get install libfcgi0ldbl en la serie Debian o yum --enablerepo=epel install fcgi en la serie CentOS.
Si está utilizando application como proyecto de demostración, se requieren las siguientes dependencias de PHP:
php-mysql para la conexión de la base de datosphp-gd para Captcha Image Generationphp-fpm para ejecutar con FastCGI como Socket Unix Se supone que el tamaño del búfer readbuf.first es lo suficientemente grande como para leer la parte de cabeza HTTP completa, porque el programa usa el valor del encabezado para determinar si todavía hay una parte izquierda para recibir, y si es cierto, lea el resto de ellos usando el tamaño de búfer readbuf.left .
El parámetro fastcgi.upstream se puede configurar en un host:port o un archivo de socket de dominio UNIX, sin embargo, hay un problema desconocido que usa cgi-fcgi con Socket de dominio UNIX en la plataforma WSL: el proceso ejecutado con una entrada grande de Stdin por terminación de tubería con el código de salida 11 y salida sin contenido, mientras que un tamaño de entrada de entrada es un poco más grande que 65536 que se está siendo manejado normalmente. Entonces, si hay alguna necesidad de cargar archivos grandes y el proyecto se implementa en WSL, use TCP en lugar de Socket de dominio UNIX como FastCGI aguas arriba.
Además, hay un módulo de temporizador y un módulo de trabajadores para probar, que están escritos con el fin de aprender, y para recordar, este último no es estable.
Los archivos del módulo de temporizador están ubicados en el timer de directorio, implementado con un montón K-ARY o un árbol rojo-negro como estructura de datos. El módulo de Código de Trabajador está en el Directorio worker , el diseño está inspirado en el árbitro de Gunicorn y no se garantiza que la implementación funcione como se esperaba si envía señales demasiado rápido, en cuyo caso debe tener en cuenta los procesos de zombis que quedan.
Ver lanzamientos