部署Python CGI应用

1 投票
4 回答
912 浏览
提问于 2025-04-15 16:08

我开发了一个用Python写的CGI应用程序,在我的开发电脑上运行得很好。不过,我的托管服务商对服务器的控制权很小:我在Python环境中使用了很多自定义的东西(比如sqlalchemy和mako模板),而且服务器上的Python版本太旧,没法用了。我的问题是:我该如何在我的主目录下设置一个独立、完整、独立的Python环境,并安装我需要的模块来运行我的应用程序呢?...希望能找到最简单的方法;)

4 个回答

0

这看起来是使用 virtualenv 的好机会。从网站上可以看到:

还有,如果你不能把软件包安装到全局的 site-packages 目录怎么办?比如说,在一个共享主机上。

这正好适合你。

1

如果我是你,我会使用 pyinstaller 来把Python、我的代码和所有需要的东西打包成一个安装程序,这样就可以上传并运行了。只要记得使用pyinstaller的SVN主干版本,因为“发布”的版本太过时了。

要注意的是,使用SQLAlchemy和其他东西时,如果用CGI,你可能会发现速度很慢,因为每次访问页面时都要重新加载所有内容,这样会消耗很多时间。不过如果CGI是你唯一能用的选择,那我想这也是我会尝试的办法!-)

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

希望你现在可以运行Python了:

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

用你自己的Python版本安装需要的包,方法是使用常规的setup.py脚本:

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

在CGI文件中设置hashbang,使用你自己的Python版本:

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

如果可以的话,考虑把你的应用迁移到WSGI。如果你现在还在使用CGI,你当然可以通过一个wsgiref.handlers.CGIHandler来部署WSGI应用,但将来当你有一个更好的托管环境时,你可以使用更高效的服务器接口,比如mod_wsgi来部署。

撰写回答