启动Apache时出现“Invalid command 'WSGIScriptAlias'”错误。

24
我希望将我的Django项目部署到EC2服务器上。我已安装mod_wsgi,并按照Django教程中的配置进行设置。但是我遇到以下问题:
Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configuration

为什么mod_wsgi没有正确安装?

LoadModule wsgi_module     libexec/httpd/mod_wsgi.so
LoadModule alias_module    libexec/httpd/mod_alias.so


WSGIScriptAlias / /usr/local/apache2/htdocs/mysite/mysite/wsgi.py
WSGIPythonPath /usr/local/apache2/htdocs/mysite/mysite


<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

你确定运行Apache的用户对mod_wsgi.so有读取权限吗? - Clodoaldo Neto
4个回答

51

问题在于 mod_wsgi 没有正确安装。

解决方法(使用 Apache 2):

  1. 安装 Apache:

    $ sudo apt-get install apache2
    
  2. 安装libapache2-mod-wsgi

  3. $ sudo apt-get install libapache2-mod-wsgi
    

这应该可以正常工作。


为什么libapache2-mod-wsgi没有包含在官方文档中?非常感谢@om choudhary。 - brennan
1
我不得不安装 libapache2-mod-wsgi-py3 - stackprotector

19

这个错误明确表示 mod_wsgi 没有被加载到 Apache 中。

在哪个文件中包含着:

LoadModule wsgi_module     libexec/httpd/mod_wsgi.so

您是否使用适当的Linux发行版管理命令启用了mod_wsgi模块,以便在使用发行版二进制包安装mod_wsgi时自动加载?


2
对我来说,通过发出以下命令解决了问题:sudo a2enmod wsgi (https://dev59.com/vWIj5IYBdhLWcg3wGRmN#20627328) - A. K.

1

我在openSUSE 12.2上遇到了完全相同的问题,使用的是apache 2.2。

即使已经安装了wsgi,检查是否已激活仍然是个好主意。我的意思是这样的:

#outputs a list of registered modules
/usr/sbin/httpd2 -M

如果没有出现wsgi_module (shared),请将wsgi添加到变量APACHE_MODULES中,在文件/etc/sysconfig/apache2内实现。这样,我完全可以避免在httpd.conf中使用LoadModule这一行。

1

补充一下,我是如何解决我的问题的。 如果您不知道模块的位置 只需搜索它们即可。

 locate mod_alias.so

然后你可能会得到以下输出:
/usr/lib/apache2/modules/mod_alias.so

然后您可以将该位置添加到配置文件中

LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接