我有一段时间设置web2py服务器的方式允许我从localhost
以外的任何地方访问admin和appadmin接口,这对我来说是一个要求,因为web2py服务器托管在没有浏览器或X服务器的云位置。我理解从外部localhost
访问web2py的admin或appadmin接口,我必须使用SSL / HTTPS。
web2py文档似乎声明了两种不同的方法。首先,来自general web2py startup tutorial:
管理界面admin只能从localhost访问 除非你用mod_proxy在Apache后面运行web2py。如果管理员检测到 代理,会话cookie设置为安全,管理员登录不设置 除非客户端和代理之间的通信进行 通过HTTPS
这导致我在网上搜索如何设置web2py和apache,它引导我进入web2py部署配方页面where it describes setting up web2py behind apache using mod_wsgi instead of mod_proxy。这些是我目前正在遵循的指令,除了将/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
,我会得到通用的“/ of / apache”服务器
页。在这个页面上,“/”包含一个目录链接“html”,其中
是Apache2 Ubuntu默认页面的链接(“它工作!”页面)。其他信息:
/home/www-data/web2py
安装了一个未触及的web2py实例,但我已将/home/www-data/web2py/handlers/wsgihandler.py
移至/home/www-data/web2py/wsgihandler.py
/etc/apache2/site-available/
目录的内容是:
000-default.conf
(未被我感动)default-ssl.conf
(未被我感动)web2py
(由我创建)python ~/web2py/web2py.py --ip 10.7.166.27
手动启动web2py(这是foo.bar.com的IP(省略了真实域名))www-data
这是我的/ 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>
答案 0 :(得分:0)
好的!写这篇文章时我发现了我的愚蠢错误。我从来没有打扰过正确配置apache本身:
/etc/apache2/sites-available/000-default.conf
和/etc/apache2/sites-available/default-ssl.conf
是我分别浏览foo.bar.com:80
和foo.bar.com:443
时看到的内容的原因。.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导入错误,这意味着apache&lt; - &gt; mod_wsgi&lt; - &gt; web2py链接是启动并运行foo.bar.com:443/web2py
时,Chrome浏览器的黄色屏幕抱怨我的自签名证书,点击后我得到了一个拒绝权限的页面,大概是因为我还没有在web2py中设置的内容/ SSL 这意味着我的原始问题已得到解答,但如果我再次难以让SSL工作,我可能会回到这里评论/编辑。