另一個文憑工具項目
在開始之前,請嘗試測試基本功能。在所有模塊中,要測試的典型零件是三個服務器/代理實現:
$ 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的仲裁者,如果您發送信號太快,則不能按預期工作,在這種情況下,您應該意識到剩餘的殭屍進程。
請參閱版本