Связка Apache2 + mod_wsgi оказалась мало пригодной для web разработки. Когда приложение отлажено и стабильно работает, претензий нет, а вот отладка и переключение между разными экспериментальными ветками крайне не удобны. Пока конфиги исправишь, уже забыл чего хотел делать. К сожалению, дневник на PyBlosxom как раз этот случай.
Версия 1.4.3 безнадежно устарела, в trunk постоянно какие-то изменения, да и меня регулярно тянет что-то поправить. После очередного изменения, вовсе не факт, что что-то вообще работать будет. Нужен способ, быстро проверять разные версии настроек и кода в работе и при необходимости откатываться назад.
В документации нашел Installing PyBlosxom with Paste. Фактически, тот же WSGI, только Python Paste — это Python и приложение можно по-быстрому запускать. Описанный вариант не многим лучше Apache, но его достаточно просто подогнать под мои нужды. Поскольку paster ищет конфиги и код в PYTNONPATH,
можно использовать оболочку, которая будет подставлять нужные значения перед запуском. Сильно не заморачивался, сделал такой вот run_blog.py
:
import sys
import os
import os.path
paster = "путь до paster"
inifile = "blog.ini"
def main(argv=None):
if argv is None:
argv = sys.argv
confdir = argv[1]
codedir = argv[2]
env = os.environ.copy()
env["PYTHONPATH"] = os.pathsep.join(
[ os.path.join(os.getcwd(), "etc", confdir),
os.path.join(os.getcwd(), "src", "pyblosxom", codedir)
] + env.get("PYTHONPATH", "").split(os.pathsep)
)
return os.spawnle(os.P_WAIT, paster, paster, "serve", inifile, env)
if __name__ == "__main__":
sys.exit(main(sys.argv))
Конфигурационный файл blog.ini
для Paste Script:
[DEFAULT]
debug = True
[server:main]
use = egg:Paste#http
host = 127.0.0.1
port = 5000
[app:main]
paste.app_factory = Pyblosxom.pyblosxom:pyblosxom_app_factory
Структура каталогов:
+- etc -- каталоги с config.py
| +- main -- настрйки используемые в Apache
| | +- config.py
| +- ...
+- data -- содержимое дневника
+- src
| +- pyblosxom -- исходники движка
| | +- main -- "стабильный" код используемый в Apache
| | +- up-trunk -- код из SVN trunk
| | +- ...
+- run_blog.py
+- blog.ini
В результате, имеем возможность запускать блог в для любой комбинации настроек и кода, с тривиальным переключением между ветками.
run_blog.py main main
то же, что и в Apache, но проще отлаживаться.
run_blog.py main up-trunk
проверка, как ведет себя движок из SVN trunk
hg clone src/pyblosxom/main src/pyblosxbom/my-branch
run_blog.py main my-branch
создание экспериментальной ветки и запуск блога с неё
Остается, правда, небольшая проблема - кое-где в настройках прописаны абсолютные пути. Как результат, не всякие настройки подходят ко всякому коду. Это лечится исправлением движка, что теперь сделать будет проще.
Комментариев нет:
Отправить комментарий