如何将Pyramid应用程序部署到DotCloud?

时间:2014-04-21 06:57:32

标签: python postgresql pyramid dotcloud

我有一个带有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 documentationthird-party documentation来达到这一点,但必定会有一些我做得不对的事情。这是我第一次部署网络应用程序,并在本地运行我的应用程序仍然有效。

在MyProject /中(dotcloud.yml文件所在的位置)我执行了dotcloud create mydomainnamedotcloud connect mydomainname,然后dotcloud push。但我收到内部服务器错误。我做错了什么?

此外,文档说如果我使用git,我必须在使用dotcloud createdotcloud connect时明确说明,但确切的命令是什么?

编辑:在转移到DotCloud之前,我尝试使用DigitalOcean,并且在使用pip在requirements.txt中安装依赖项时遇到了一些问题。我必须在CLI上单独执行一个git clone,这样我才能输入我的用户名和密码,而且我还必须手动安装psycopg2。这可能是这里的问题之一吗?如果是这样,我该如何解决?

1 个答案:

答案 0 :(得分:0)

你应该尝试改变几件事。首先,不要推送你的virtualenv目录(env)。 dotCloud构建器将根据您的requirements.txt创建另一个virtualenv。避免推送 env 目录的一种方法是将dotcloud.yml移至MyProject。您似乎认为它就在哪里("在MyProject /中(dotcloud.yml文件所在的位置)" )但这不是您的文件树所说的。

然后,按照您的说法,执行dotcloud connect中的dotcloud createMyProject

您应该从dotcloud.yml中删除approot行。允许approot转到默认值,即当前目录。