【问题标题】:Pyramid set up on a shared host with fastcgi gives the .fcgi file back to the browser使用 fastcgi 在共享主机上设置的 Pyramid 将 .fcgi 文件返回给浏览器
【发布时间】:2016-02-27 05:37:04
【问题描述】:

谁能帮助我在一个共享主机上设置生产服务器与金字塔?我搜索了一整天试图完成这项工作,但没有任何效果。

我在编写 .htaccess 和 index.fcgi 文件时遇到问题。我试图结合这些教程; 1234 想弄清楚,但是当我访问该网站时,我看到的是 index.fcgi 的内容而不是应用程序。我已经完成了这些步骤;

  1. 在home目录下为python创建虚拟环境并激活:

     mkdir temp; cd temp
     curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-12.0.7.tar.gz
     gzip -cd virtualenv-12.0.7.tar.gz |tar xf -
     cd virtualenv-12.0.7
     python2.7 setup.py install --user
     cd ~
     ~/.local/bin/virtualenv pyramid --python=python2.7
     source ~/pyramid/bin/activate
    
  2. 在虚拟环境中安装金字塔。

    pip install pyramid
    
  3. 创建了一个测试项目;

    pcreate -s starter myProject
    cd myProject
    python setup.py install
    
  4. 安装的flup

    pip install flup
    
  5. 在我的 public_html 文件夹中创建了一个 index.fcgi 文件,内容如下:

    #!/home3/reyhane/pyramid/bin/python
    import os
    import sys 
    
    myapp = '/home3/reyhane/myProject'
    inifile = 'production.ini'
    sys.path.insert(0, myapp )
    
    from paste.deploy import loadapp
    wsgi_app = loadapp('config:' + myapp + '/' + inifile)
    if __name__ == '__main__':
        from flup.server.fcgi import WSGIServer
        WSGIServer(wsgi_app).run()
    
  6. 使 index.fcgi 可执行;

    cd public_html
    chmod +x index.fcgi 
    

    它的权限是0755。

  7. 将public_html文件夹中的.htaccess文件修改为:

    AddHandler fastcgi-script .fcgi
    DirectoryIndex index.fcgi
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.fcgi$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.fcgi/$1 [L]
    AddType "text/html; charset=UTF-8" html
    AddType "text/plain; charset=UTF-8" txt 
    AddCharset UTF-8 .html
    AddDefaultCharset UTF-8
    

所以我的目录是这样的:

    home3/reyhane/
    |-- pyramid
    |-- myProject
    |   |-- myProject
    |   |-- production.ini
    |-- public_html/
    |   |-- index.fcgi
    |   |-- .htaccess

.htaccess 文件似乎正在完成它的工作,因为页面被重定向到 index.fcgi,但 index.fcgi 肯定有问题。

【问题讨论】:

  • 我没有更改 production.ini 文件。那里有什么必须做的改变吗?
  • 发生了什么?有错误信息吗?日志中是否有任何内容?
  • Apache 没有如何处理 .fcgi 文件。它认为这是一个需要发送给用户的纯文本文件。 .htaccess 被忽略或AddHandler 不起作用。如果它是共享网络主机,通常意味着您自己可能无法访问 Apache 来了解发生了什么。但在这种情况下,您可以联系托管公司的支持为您解决问题。
  • 如果 Django 工作 Pyramid 也应该工作。 WSGI 是 Python 标准协议,可供服务器端的任何 Python 应用程序使用。
  • 这就是为什么最好遵循 Gator 的说明,因为他们的说明应该 100% 与他们的主机一起工作。如果这些说明不起作用,那么您可以联系他们的支持。您可以交叉参考他们的说明并弄清楚它们与您的 .htaccess 等有何不同。

标签: python apache .htaccess pyramid fastcgi


【解决方案1】:

我有以下 htaccess 文件工作正常:

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ YOUR_APP_NAME.fcgi/$1 [QSA,L]

和FCGI文件:

#$HOME/YOUR_APP_NAME/bin/python
import sys
from paste.deploy
import loadapp
from flup.server.fcgi_fork import WSGIServer
app = loadapp('config:$HOME/YOUR_APP_NAME/src/production.ini')
server = WSGIServer(app)
server.run()

我在文章'Run Pyramid on Shared Hosting' 中描述了这种情况下的金字塔部署。希望对你有用。

【讨论】:

  • 联系hostgator后,我发现正如@MikkoOhtamaa所预测的那样,apache处理程序有问题。所以主要问题出在他们这边。他们说我的站点所在的一些新服务器上没有完全启用 fastCGI。在他们修复了处理程序之后,我再次按照我的步骤操作,但我的 index.fcgi 没有工作,所以我使用了你的,现在一切正常。 -谢谢
猜你喜欢
  • 2011-07-01
  • 2014-10-24
  • 2012-07-15
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多