部署Python CGI应用
我开发了一个用Python写的CGI应用程序,在我的开发电脑上运行得很好。不过,我的托管服务商对服务器的控制权很小:我在Python环境中使用了很多自定义的东西(比如sqlalchemy和mako模板),而且服务器上的Python版本太旧,没法用了。我的问题是:我该如何在我的主目录下设置一个独立、完整、独立的Python环境,并安装我需要的模块来运行我的应用程序呢?...希望能找到最简单的方法;)
4 个回答
0
1
如果我是你,我会使用 pyinstaller 来把Python、我的代码和所有需要的东西打包成一个安装程序,这样就可以上传并运行了。只要记得使用pyinstaller的SVN主干版本,因为“发布”的版本太过时了。
要注意的是,使用SQLAlchemy和其他东西时,如果用CGI,你可能会发现速度很慢,因为每次访问页面时都要重新加载所有内容,这样会消耗很多时间。不过如果CGI是你唯一能用的选择,那我想这也是我会尝试的办法!-)
4
我怎么在我的家目录里设置一个独立、完整、独立的Python环境呢?
mkdir /home/me/.local
(如果这个文件夹还不存在的话。你不一定要用.local
,但现在这个地方越来越常用了)mkdir /home/me/.local/src
(同上)cd /home/me/.local/src
wget http://python.org/ftp/python/2.6.4/Python-2.6.4.tgz
gzip -d Python-2.6.4.tgz
tar xf Python-2.6.4.tar
cd Python-2.6.4
./configure --prefix=/home/me/.local
make
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
来部署。