403 错误禁止您无权访问此服务器 mod_wsgi 和 apache 上的 /myapp
Posted
技术标签:
【中文标题】403 错误禁止您无权访问此服务器 mod_wsgi 和 apache 上的 /myapp【英文标题】:403 error forbidden you don't have permission to access /myapp on this server mod_wsgi and apache 【发布时间】:2018-07-12 19:28:23 【问题描述】:我已将 mod_wsgi 作为 Apache 模块安装,我想运行一个简单的 hello world 应用程序以查看该模块是否正常工作。
我遵循了this 指南,该指南基于官方Quick Configuration Guide。
完成所有步骤后,我收到 403 错误Forbidden You don't have permission to access /myapp on this server.
.
我在 Raspbian 上使用 Apache/2.4.10,我安装的 mod_wsgi 版本是libapache2-mod-wsgi-py3 4.3.0-1 armhf Python 3 WSGI adapter module for Apache.
我已将 example.com 添加到我的主机文件中,如下所示:
127.0.0.1 localhost example.com
我在/etc/apache2/sites-enabled/
中创建了example.com.conf 文件,内容如下:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
ServerAdmin test@test.com
DocumentRoot /usr/local/www/documents
<Directory /usr/local/www/documents>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.wsgi
<Directory /usr/local/www/wsgi-scripts>
Order allow,deny
Allow from all
</Directory>
myapp.wsgi 内容:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!\n'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
并使用以下权限为 hello world 应用程序创建文件/文件夹:
drwxr-sr-x 2 root www-data 4096 Feb 1 13:18 documents
drwxr-sr-x 2 root www-data 4096 Feb 1 13:22 wsgi-scripts
我还确保 example.com 在本地提供服务,而不是通过带有 ping 的 DNS。
我不明白为什么我的安装不起作用。
是否缺少任何其他配置选项或我的任何设置有问题?
【问题讨论】:
【参考方案1】:经过几次修改,我想通了。
新的example.com.conf
文件是:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /usr/local/www/documents
<Directory /usr/local/www/documents>
Require all granted
Satisfy Any
</Directory>
WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.wsgi
<Directory /usr/local/www/wsgi-scripts>
<Files myapp.wsgi>
Require all granted
Satisfy Any
</Files>
</Directory>
在语法更改为匹配 apache 2.4 后,我得到 500 Internal Server Error,在 apache error.log
文件中进一步调查后显示以下错误:
[wsgi:error] [pid 11216] [client 127.0.0.1:56642] mod_wsgi (pid=11216): Exception occurred processing WSGI script '/usr/local/www/wsgi-scripts/myapp.wsgi'.
[wsgi:error] [pid 11216] [client 127.0.0.1:56642] TypeError: sequence of byte string values expected, value of type str found
为了解决这个错误,我将 myapp.wsgi
文件中的 output
变量赋值从 output = 'Hello World!\n'
到output = b'Hello World!'
,如here所示。
【讨论】:
以上是关于403 错误禁止您无权访问此服务器 mod_wsgi 和 apache 上的 /myapp的主要内容,如果未能解决你的问题,请参考以下文章
403 - 禁止访问: 访问被拒绝。您无权使用所提供的凭据查看此目录或页面。 怎么解决 ?
Wordpress 403 禁止“您无权访问此服务器上的 /。”
Heroku 上的 Symfony:403 Forbidden 您无权访问此服务器上的 /