Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法让apache2.4使用mod_wsgi将请求传递给web2py_Apache_Mod Wsgi_Web2py_Wsgi_Apache2.4 - Fatal编程技术网

无法让apache2.4使用mod_wsgi将请求传递给web2py

无法让apache2.4使用mod_wsgi将请求传递给web2py,apache,mod-wsgi,web2py,wsgi,apache2.4,Apache,Mod Wsgi,Web2py,Wsgi,Apache2.4,我在设置web2py服务器时经历了一段痛苦的时光,这种方式允许我从localhost以外的任何地方访问admin和appadmin接口,这是我的一项要求,因为web2py服务器托管在云位置,没有浏览器或X服务器。我明白,要从本地主机外部访问web2py的管理或appadmin接口,我必须使用SSL/HTTPS web2py文档似乎声明了两种不同的方法。首先,从以下方面: 管理界面admin只能从localhost访问 除非您在Apache后面使用mod_代理运行web2py。如果管理员检测到 代

我在设置web2py服务器时经历了一段痛苦的时光,这种方式允许我从localhost以外的任何地方访问admin和appadmin接口,这是我的一项要求,因为web2py服务器托管在云位置,没有浏览器或X服务器。我明白,要从本地主机外部访问web2py的管理或appadmin接口,我必须使用SSL/HTTPS

web2py文档似乎声明了两种不同的方法。首先,从以下方面:

管理界面admin只能从localhost访问 除非您在Apache后面使用mod_代理运行web2py。如果管理员检测到 代理,会话cookie被设置为安全,而管理员登录未设置 除非客户端和代理之间的通信中断,否则无法正常工作 通过HTTPS

这让我在web上搜索如何设置web2py-behind和apache,这让我进入web2py部署方法页面。除了将/etc/apache2/sites available/web2py文件更新为apache2.4语法,并将ServerName指令的值修改为foo.bar.com之外,我目前正在严格遵循以下说明:在整个问题中,包含服务器的云框的域名被foo.bar.com替换

然而,当我到达

当您重新启动Apache时,它应该将所有请求传递给web2py,而无需通过Rocket wsgiserver

作为web2py+apache+mod_wsgi教程的一部分,apache似乎并没有为我向web2py传递任何东西。我继续移动了wsgihandler.py文件,这是本教程中描述的下一步,以下是我的当前状态:

如果我从另一台机器上浏览到foo.bar.com:80,我会得到Apache2 Ubuntu的默认页面,它会正常工作!页 如果我浏览到foo.bar.com:8000 web2py端口,我会打开web2py服务器的默认界面,但由于通道不安全,无法访问admin或appadmin。 如果我尝试浏览foo.bar.com:443,我会得到/apacheserver的通用索引 页在此页上/包含一个目录链接html 是一个指向Apache2 Ubuntu默认页面的链接!页 其他资料:

我在/home/www data/web2py上安装了一个未接触过的web2py实例,但我已将/home/www data/web2py/handlers/wsgihandler.py移动到/home/www data/web2py/wsgihandler.py my/etc/apache2/site available/目录的内容如下: 000-default.conf我没有碰过 default-ssl.conf未被我触及 我创建的web2py 我已经用python~/web2py/web2py.py-ip10.7.166.27手动启动了web2py,这是foo.bar.com真实域名的ip apache2正在作为用户www数据运行 服务器操作系统是Ubuntu服务器14.04 x64 这是我的/etc/apache2/sites available/web2py文件:

<VirtualHost *:80>
  ServerName foo.bar.com
  WSGIDaemonProcess web2py user=www-data group=www-data display-name=%{GROUP}
  WSGIProcessGroup web2py
  WSGIScriptAlias / /home/www-data/web2py/wsgihandler.py

  <Directory /home/www-data/web2py>
    AllowOverride None
    Require all denied
    <Files wsgihandler.py>
      Require all granted
    </Files>
  </Directory>

  AliasMatch ^/([^/]+)/static/(.*)            /users/www-data/web2py/applications/$1/static/$2
  <Directory /users/www-data/web2py/applications/*/static/>
    Order Allow,Deny
    Allow from all
  </Directory>

  <Location /admin>
    Require all denied
  </Location>

  <LocationMatch ^/([^/]+)/appadmin>
    Require all denied
  </LocationMatch>

  CustomLog /private/var/log/apache2/access.log common
  ErrorLog /private/var/log/apache2/error.log
</VirtualHost>

<VirtualHost *:443>
  ServerName foo.bar.com
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/server.crt
  SSLCertificateKeyFile /etc/apache2/ssl/server.key

  WSGIProcessGroup web2py

  WSGIScriptAlias / /users/www-data/web2py/wsgihandler.py

  <Directory /users/www-data/web2py>
    AllowOverride None
    Require all denied
    <Files wsgihandler.py>
      Require all granted
    </Files>
  </Directory>

  AliasMatch ^/([^/]+)/static/(.*)         /users/www-data/web2py/applications/$1/static/$2

  <Directory /users/www-data/web2py/applications/*/static/>
    Require all granted
  </Directory>

  CustomLog /private/var/log/apache2/access.log common
  ErrorLog /private/var/log/apache2/error.log

</VirtualHost>

好的!我在写这篇文章时发现了我愚蠢的错误。我从来没有想过要正确配置apache本身:

/etc/apache2/sites available/000-default.conf和/etc/apache2/sites available/default-ssl.conf是我分别浏览foo.bar.com:80和foo.bar.com:443时看到的内容的原因。 apache2.4似乎需要配置文件上的.conf,我没有,所以我将/etc/apache2/sites available/web2py重命名为/etc/apache2/sites available/web2py.conf 我没有/etc/apache2/sites available/web2py/etc/apache2/sites enabled/web2py的符号链接,所以我做了一个。 因此,到目前为止:

当我浏览foo.bar.com:80时,我会看到同样的Apache2 Ubuntu默认页面,但是 当我浏览foo.bar.com:80/web2py时,我得到一个内部服务器错误,apache日志告诉我这是来自wsgihandler.py的python导入错误,这意味着apachemod_wsgiweb2py链接已启动并运行 当我浏览foo.bar.com:443/web2py时,我看到Chrome的黄色屏幕抱怨我的自签名证书,点击后,我得到一个权限被拒绝的页面,可能是因为我还没有在web2py/SSL中设置某些内容
这意味着我原来的问题已经得到了回答,但如果我在让SSL工作时再次遇到困难,我可能会回到这里进行评论/编辑。

好的,我在写的时候已经解决了这个问题,但我将把这个问题留在这里,等待八个小时,然后发布我的答案。