Namun proyek alat lain untuk diploma
Sebelum memulai, cobalah untuk menguji fungsi dasar. Di antara semua modul, bagian khas yang akan diuji adalah tiga implementasi server/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 Karena kecepatan koneksi yang lambat dari httpbin.org, Anda mungkin perlu menggunakan proxychain untuk mempercepat tes HTTPProxy , dan mungkin kesalahan seperti proxychains can't load process dapat terjadi jika terminal Anda menggunakan dasbor sebagai cangkang default, dalam kasus ini hanya tentukan shell dengan 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 " Akhirnya, Anda dapat mengubah konfigurasi di config/config.yaml , lalu mulai server utama dan kunjungi situs untuk melihat apakah semuanya berfungsi dengan baik:
$ PYTHONPATH=. python3 main.py Perhatikan bahwa host:port pair secara default adalah localhost:80 , dan untuk mengikat port "istimewa" semacam itu (1-1023) dengan pengguna non-root, Anda harus menetapkan capability biner Python, katakanlah /usr/bin/python3 :
$ sudo setcap ' cap_net_bind_service=+ep ' /usr/bin/python3 Periksa log di bawah log/ jika Anda ingin, main.log akan merekam proses lengkap dari semua permintaan dan tanggapan, sementara (static|fastcgi|http).log adalah hasil dari tes yang disebutkan sebelumnya.
Semua tes di atas termasuk tes modul lain sekarang ditulis sebagai skrip penolong di modtests.sh , yang dapat Anda jalankan secara langsung dan melihat hasilnya. Anda dapat menggunakan tee untuk menduplikasi output ke file log dan memeriksanya nanti:
$ ./modtests.sh 2>&1 | tee modtests.log Modul FastCgiProxy Project berkomunikasi dengan FastCGI menggunakan cgi-fcgi , yang dapat diinstal oleh apt-get install libfcgi0ldbl pada seri Debian atau yum --enablerepo=epel install fcgi pada seri CentOS.
Jika Anda menggunakan application sebagai proyek demo, diperlukan dependensi PHP:
php-mysql untuk koneksi basis dataphp-gd untuk pembuatan gambar captchaphp-fpm untuk berjalan dengan fastcgi sebagai soket unix Ukuran buffer readbuf.first diasumsikan cukup besar untuk membaca seluruh bagian kepala HTTP, karena program menggunakan nilai header untuk menentukan apakah masih ada bagian kiri untuk diterima, dan jika benar, baca sisanya menggunakan buffer ukuran readbuf.left .
Parameter fastcgi.upstream dapat dikonfigurasi ke host:port pair atau file soket domain UNIX, namun, ada masalah yang tidak diketahui menggunakan cgi-fcgi dengan soket domain 11 pada platform WSL: proses yang dieksekusi. Jadi jika ada kebutuhan untuk mengunggah file besar dan proyek ini digunakan pada WSL, gunakan TCP alih -alih soket domain UNIX sebagai fastcgi hulu.
Selain itu, ada modul timer dan modul pekerja untuk dicoba, yang ditulis untuk tujuan belajar, dan untuk diingatkan, yang terakhir tidak stabil.
File modul timer semuanya terletak di bawah timer direktori, diimplementasikan dengan tumpukan k-ary atau pohon merah-hitam sebagai struktur data. Modul Kode Pekerja ada di direktori worker , desainnya terinspirasi oleh Arbiter Gunicorn dan implementasinya tidak dijamin berfungsi seperti yang diharapkan jika Anda mengirim sinyal terlalu cepat, dalam hal ini Anda harus mengetahui proses zombie yang tersisa.
Lihat rilis