另一个文凭工具项目
在开始之前,请尝试测试基本功能。在所有模块中,要测试的典型零件是三个服务器/代理实现:
$ 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由于httpbin.org的连接速度较慢,您可能需要使用proxychain来加快HTTPProxy测试的速度,并且可能会出现像proxychains can't load process ,在这种情况下,只需用bash -c "python3 file.py"指定shell。
$ PYTHONPATH=. proxychains4 python3 server/http_proxy.py > log/http.log
$ PYTHONPATH=. proxychains4 bash -c " python3 server/http_proxy.py > log/http.log "最后,您可以在config/config.yaml中更改配置,然后启动主服务器并访问网站以查看一切是否正常:
$ PYTHONPATH=. python3 main.py请注意host:port对是localhost:80 ,要与非Root用户绑定这种“特权”端口(1-1023),您需要设置Python二进制的capability ,例如/usr/bin/python3 :
$ sudo setcap ' cap_net_bind_service=+ep ' /usr/bin/python3检查日志/ log/如果您愿意, main.log将记录所有请求和响应的完整过程,而(static|fastcgi|http).log是前面提到的测试的结果。
现在,包括其他模块测试在内的所有上述测试现在都将其写入modtests.sh中的助手脚本,您可以直接运行并查看结果。您可以使用tee将输出复制到日志文件,然后稍后检查它们:
$ ./modtests.sh 2>&1 | tee modtests.logProject的FastCgiProxy模块使用cgi-fcgi与FastCGI进行通信,可以通过apt-get install libfcgi0ldbl在Debian系列或yum --enablerepo=epel install fcgi 。
如果您将application用作演示项目,则需要以下PHP依赖项:
php-mysqlphp-gdphp-fpm用于使用FastCGI作为Unix插座运行假定缓冲区大小readbuf.first足够大,可以读取整个HTTP头部部分,因为该程序使用标头值来确定是否仍然有左侧零件要接收,如果是true,则使用buffer size readbuf.left读取其余部分。
可以将参数fastcgi.upstream配置为TCP host:port对或Unix域插座文件,但是,使用cgi-fcgi在WSL平台上带有UNIX域插座的问题是未知的问题:该过程由端口的端子端口大量输入量,没有Exit Code 11且无需输入尺寸,而不是6555。因此,如果有任何需要上传大文件并将项目部署在WSL上,请使用TCP代替Unix域套接字作为FastCGI上游。
此外,还有一些计时器模块和工人模块是为了学习的目的而编写的,并且要提醒,后者是不稳定的。
计时器模块的文件都位于目录timer下方,并用K- Ary Heap或Red-Black树作为数据结构实现。 Worker模块的代码位于worker目录中,该设计的灵感来自Gunicorn的仲裁者,如果您发送信号太快,则不能按预期工作,在这种情况下,您应该意识到剩余的僵尸进程。
请参阅版本