Mais um projeto de ferramenta para diploma
Antes de começar, tente testar as funções básicas. Entre todos os módulos, as peças típicas para testar estão as três implementações 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 Devido à lenta velocidade de conexão do httpbin.org, pode ser necessário usar o proxychain para acelerar os testes de HTTPProxy , e possivelmente um erro como proxychains can't load process : o seu terminal usa o painel como o shell padrão, neste caso, apenas especificar o shell com o shell bash -c "python3 file.py" , completa, o comandos completos, o comandos padrão, apenas a lista de shell com o shell -c respectivamente "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 " Por fim, você pode alterar as configurações em config/config.yaml , inicie o servidor principal e visite o site para ver se tudo funciona bem:
$ PYTHONPATH=. python3 main.py Observe que o host:port por padrão é localhost:80 , e para vincular esse tipo de portas "privilegiadas" (1-1023) com /usr/bin/python3 usuário capability raios, você precisar
$ sudo setcap ' cap_net_bind_service=+ep ' /usr/bin/python3 Verifique os logs em log/ se você quiser, main.log registrará o processo completo de todas as solicitações e respostas, enquanto (static|fastcgi|http).log são os resultados dos testes mencionados anteriormente.
Todos os testes acima, incluindo os testes de outros módulos, agora estão gravados como um script auxiliar no modtests.sh , que você pode executar diretamente e ver os resultados. Você pode usar tee para duplicar saídas em um arquivo de log e verificá -las mais tarde:
$ ./modtests.sh 2>&1 | tee modtests.log O módulo fastcgiproxy do Project se comunica com o fastcgi usando cgi-fcgi , que pode ser instalado pela apt-get install libfcgi0ldbl na série Debian ou yum --enablerepo=epel install fcgi na série CentOS.
Se você estiver usando application como projeto de demonstração, são necessários as dependências de PHP:
php-mysql para conexão de banco de dadosphp-gd para geração de imagens CAPTCHAphp-fpm para executar com fastcgi como soquete Unix O tamanho do buffer readbuf.first é considerado grande o suficiente para ler toda a parte da cabeça do HTTP, porque o programa usa o valor do cabeçalho para determinar se ainda existe uma parte esquerda a ser recebida e, se verdadeira, leia o restante deles usando o tamanho do buffer readbuf.left .
Parâmetro fastcgi.upstream pode ser configurado para um host:port ou um arquivo de soquete de domínio UNIX, no entanto, há um problema desconhecido usando cgi-fcgi com soquete de domínio UNIX na plataforma WSL: o Processo é executado com uma entrada grande de STDIN por tubo termina com o código de saída 11 e a saída do que um conteúdo, enquanto um tamanho em tamanho em um tamanho em um tamanho em um tamanho em tamanho 6, que é um tamanho mais ou mais, o que é um pouco mais ou menos, o pouco de tamanhos de manutenção de 5 anos é o que é um pouco mais ou menos, o pouco de tamanhos de manutenção de 5 anos. Portanto, se houver necessidade de fazer upload de arquivos grandes e o projeto for implantado no WSL, use o TCP em vez do soquete de domínio UNIX como fastcgi a montante.
Além disso, existem módulo de temporizador e módulo de trabalhador a serem experimentados, que são escritos com o objetivo de aprender e, para serem lembrados, o último não é estável.
Os arquivos do módulo do timer estão todos localizados no timer de diretório, implementados com heap K-Iar ou árvore vermelha-preta como estrutura de dados. O Código de Módulo do Trabalhador está no diretório worker , o design é inspirado no árbitro da Gunicorn e a implementação não é garantida para funcionar conforme o esperado se você enviar sinais muito rápido; nesse caso, você deve estar ciente dos processos de zumbi restantes.
Veja lançamentos