我有一个带有Postgres数据库的Pyramid webapp,我使用git进行版本控制。
这就是我的文件结构:
myapp/
|----dotcloud.yml
|----env/ # virtualenv
|----MyProject/
|
|----production.ini
|----requirements.txt
|----myapp.sql
|----myapp.psql
|----wsgi.py
|----myproject
|
|----scripts/
|----static/
|----templates/
|----__init__.py
|----views.py
|----models.py
这是我的dotcloud.yml:
www:
type: python
config:
python_version: v2.7
approot: home/home/myapp
db:
type: postgresql
这是我的wsgi.py
:
from pyramid.paster import get_app, setup_logging
ini.ath = '.../myproject/production.ini'
setup_logging(ini_path)
application = get_app(ini_path, 'main')
这是我的(简体)__init__.py
:
def main(global_config, **settings):
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)
config = Configurator(...)
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('index', '/')
# other routes...
config.scan()
return config.make_wsgi_app()
我已经阅读了official documentation和third-party documentation来达到这一点,但必定会有一些我做得不对的事情。这是我第一次部署网络应用程序,并在本地运行我的应用程序仍然有效。
在MyProject /中(dotcloud.yml
文件所在的位置)我执行了dotcloud create mydomainname
,dotcloud connect mydomainname
,然后dotcloud push
。但我收到内部服务器错误。我做错了什么?
此外,文档说如果我使用git,我必须在使用dotcloud create
或dotcloud connect
时明确说明,但确切的命令是什么?
答案 0 :(得分:0)
你应该尝试改变几件事。首先,不要推送你的virtualenv目录(env
)。 dotCloud构建器将根据您的requirements.txt
创建另一个virtualenv。避免推送 env 目录的一种方法是将dotcloud.yml
移至MyProject
。您似乎认为它就在哪里("在MyProject /中(dotcloud.yml文件所在的位置)" )但这不是您的文件树所说的。
然后,按照您的说法,执行dotcloud connect
中的dotcloud create
或MyProject
。
您应该从dotcloud.yml中删除approot
行。允许approot
转到默认值,即当前目录。