我在设置 web2py 服务器时遇到了麻烦,它允许我从任何地方访问 admin 和 appadmin 界面localhost
,这对我来说是必需的,因为 web2py 服务器托管在没有浏览器或 X 服务器。我知道要从外部访问 web2py 的管理员或 appadmin 界面localhost
,我必须使用 SSL/HTTPS。
web2py 文档似乎声明了两种不同的方法来做到这一点。首先,来自一般的 web2py 启动教程:
管理界面 admin 只能从 localhost 访问,除非您使用 mod_proxy 在 Apache 后面运行 web2py。如果管理员检测到代理,则会话 cookie 设置为安全且管理员登录不起作用,除非客户端和代理之间的通信通过 HTTPS
这导致我在网上搜索如何设置 web2py 和 apache,这导致我进入 web2py 部署食谱页面,其中描述了使用 mod_wsgi 而不是 mod_proxy 在 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
,我会得到通用的“索引 /”apache 服务器页面。在此页面上,“/”包含一个目录链接“html”,它是指向 Apache2 Ubuntu 默认页面(“It works!”页面)的链接。
其他信息:
- 我有一个未改动的 web2py 实例安装在
/home/www-data/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
(由我创建)
- 我已经手动启动了 web2py
python ~/web2py/web2py.py --ip 10.7.166.27
(这是 foo.bar.com 的 IP(省略了真实域名)) - apache2 以用户身份运行
www-data
- 服务器操作系统是 Ubuntu Server 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>