部署python CGI应用程序

时间:2009-11-18 21:27:50

标签: python linux hosting cgi

我开发了一个python CGI应用程序,它在我的开发盒上运行得很好。然而,我的托管服务提供商对我的服务器几乎无法控制:我在我的python环境中使用了很多自定义内容(比如sqlalchemy和mako模板),服务器python版本太旧了,无法使用。我的问题是:如何在我的主目录中设置一个独立的,完整的独立python环境并安装我所需的模块来运行我的应用程序? ......最简单的方法;)

4 个答案:

答案 0 :(得分:4)

  

如何在我的主目录中设置一个隔离的,完整的独立python环境

  1. mkdir /home/me/.local(如果它尚不存在。您不必使用.local,但它已成为放置此内容的正常位置)
  2. mkdir /home/me/.local/src(同上)
  3. cd /home/me/.local/src
  4. wget http://python.org/ftp/python/2.6.4/Python-2.6.4.tgz
  5. gzip -d Python-2.6.4.tgz
  6. tar xf Python-2.6.4.tar
  7. cd Python-2.6.4
  8. ./configure --prefix=/home/me/.local
  9. make
  10. make install
  11. 希望您现在可以运行Python:

    • /home/me/.local/bin/python

    使用常用的setup.py脚本安装所需的软件包,但使用的是Python版本:

    • /home/me/.local/bin/python setup.py install

    在CGI文件上设置hashbang以使用您的Python版本:

    • #!/home/me/.local/bin/python

    如果可以,请考虑将应用程序迁移到WSGI。当然,您现在仍然可以使用wsgiref.handlers.CGIHandler通过CGI部署WSGI应用程序,但是将来当您拥有一个不那么糟糕的托管环境时,您将能够使用更少浪费的服务器接口进行部署,例如{{ 1}}。

答案 1 :(得分:1)

您可以使用pyinstaller将Python,我的代码和所有依赖项捆绑到一个安装程序可执行文件中,上传并运行它。请务必使用pyinstaller的SVN主干 - “已发布”的版本已过时。

请注意,使用SQLAlchemy和其他所有内容,使用CGI,您可能会发现自己真的很慢,因为每次访问页面时都要支付全部启动价格。但如果你能负担得起CGI,我想这就是我试图应对的方式! - )

答案 2 :(得分:0)

这看起来像是virtualenv的工作。来自网站:

  

另外,如果您无法将软件包安装到全局site-packages目录中,该怎么办?例如,在共享主机上。

这看起来就在你的小巷里。

答案 3 :(得分:0)

我正在Dreamhost的共同计划中。除了CGI,它们还提供FastCGI,这使得事情比CGI快得多。您应该检查您的托管服务提供商是否提供。或者也许他们提供Passenger for Ruby你可以用你的Python捎带。

如果您自己编译Python,请记住UCS设置,如果您尝试安装预编译的软件包并遇到故障。请参阅StackOverflow article。 Dreamhost的wiki对你如何build and deploy Python自己在他们的服务器上有一些建议;你可能想要适应你的需要。