Еще один инструментальный проект для диплома
Перед началом попробуйте проверить основные функции. Среди всех модулей типичными частями для тестирования являются три реализации сервера/прокси:
$ 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 вам может потребоваться использовать проксихен для ускорения тестов HTTPProxy , и, возможно, ошибка, подобная proxychains can't load process может произойти, если ваш терминал использует Dash в качестве оболочки по умолчанию, в данном случае просто указать оболочку с помощью 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 " Наконец, вы можете изменить конфигурации в config/config.yaml , затем запустить основной сервер и посетить сайт, чтобы увидеть, хорошо ли все работает:
$ PYTHONPATH=. python3 main.py Обратите внимание, что host:port по умолчанию- localhost:80 , и для того, чтобы связать такого рода «привилегированные» порты (1-1023) с пользователем, не имеющим корректа, вам нужно установить 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.log Модуль Project FastCgiProxy ComveliNG с FastCGI с использованием cgi-fcgi , который может быть установлен с помощью apt-get install libfcgi0ldbl на серии Debian или yum --enablerepo=epel install fcgi в серии CentOS.
Если вы используете application в качестве демонстрационного проекта, требуются следующие зависимости PHP:
php-mysql для подключения к базе данныхphp-gd для генерации изображений CAPTCHAphp-fpm для работы с FASTCGI в качестве сокета Unix Предполагается, что размер буфера readbuf.first будет достаточно большим, чтобы прочитать всю часть HTTP Head, поскольку в программе используется значение заголовка, чтобы определить, есть ли еще левая часть для получения, и, если это правда, прочитайте остальные, используя размер буфера readbuf.left .
Параметр fastcgi.upstream может быть настроен на host:port или файл сокета домена Unix, однако, существует неизвестная проблема с использованием cgi-fcgi с Unix Domain Docket на платформе WSL: процесс, выполненный с большим вводом из Stdin с помощью трубы с выходом с кодом 11 и выводом NO, в то время как входной размер, который немного больше, чем 655336, но нормально. Таким образом, если есть необходимость загружать большие файлы, а проект развернут на WSL, используйте TCP вместо домена Unix в качестве FastCGI вверх по течению.
Кроме того, есть модуль таймера и работник, которые можно попробовать, которые написаны с целью обучения и напоминают, последний не является стабильным.
Файлы модуля таймера расположены под timer каталога, реализованные с помощью K-Ary Heap или красного черного дерева в качестве структуры данных. Модуль Code of Worker находится в каталоге worker , дизайн вдохновлен арбитром стрелка, и реализация не гарантированно будет работать, как и ожидалось, если вы отправите сигналы слишком быстро, и в этом случае вы должны знать о оставшихся процессах зомби.
Смотрите релизы