我想在我的一个临时站点上运行不同的Web服务器,它提供了更多调试友好的错误处理.我想知道是否/如何实现这一点,而无需在我的暂存和生产部署之间更改Procfile.
我试过这个:
web: newrelic-admin run-program python manage.py run_gunicorn -b 0.0.0.0:$PORT -w 4 -k gevent
debug: newrelic-admin run-program python manage.py runserver_plus 0.0.0.0:$PORT --threaded
Run Code Online (Sandbox Code Playgroud)
然后将web缩放到0并调试为1,但现在我从本文中清楚地看到web是一个特殊的保留关键字,这是唯一获取http请求的进程.那么有没有办法管理这个,而无需维护一个单独的分支或类似的?
你当然可以.
如您所知,您需要使用"Web"流程类型.
请记住,进程类型实际上只是命名命令:"每个进程类型是在启动该进程类型的dyno时执行的命令的声明"
您可以控制命令.
在一个小测试应用程序中,我刚创建了一个bin目录,添加了一个文件,并赋予它执行权限 - 如下所示:
mkdir bin
vi bin/go.sh
chmod a+x bin/go.sh
Run Code Online (Sandbox Code Playgroud)
内容看起来像这样:
echo $*
echo $FOOBAR
thin --rackup config.ru start $*
Run Code Online (Sandbox Code Playgroud)
然后我修改我的Procfile看起来像这样:
web: ~/bin/go.sh --port $PORT
Run Code Online (Sandbox Code Playgroud)
我还在我的应用程序中添加了一个config var:
heroku config:添加FOOBAR = 123
然后我在开始后查看了日志
2013-03-14T11:49:42+00:00 heroku[web.1]: Starting process with command `~/bin/go.sh --port 47302`
2013-03-14T11:49:43+00:00 app[web.1]: --port 47302
2013-03-14T11:49:43+00:00 app[web.1]: 123
2013-03-14T11:49:44+00:00 heroku[web.1]: State changed from starting to up
优秀.你能看到发生了什么吗?
所以我认为这就是你所需要的.只需编写一个bash脚本,根据config var,在staging vs production上执行不同的命令.在暂存时,设置config var.在生产上,不要.
归档时间: |
|
查看次数: |
470 次 |
最近记录: |