我已经将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在本地提供,而不是通过DNS提供ping。
我无法理解为什么我的安装无法正常工作。
是否缺少任何其他配置选项或我的任何设置是否有问题?
答案 0 :(得分:0)
经过一些修改,我发现了它
新的example.com.conf
文件是:
<VirtualHost *:80>
#ServerName cms.laurus-capital.com
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内部服务器错误,在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
要解决此错误,我更改了output
文件中的myapp.wsgi
变量分配output = 'Hello World!\n'
至output = b'Hello World!'
,如here所示。