关于django:启动Apache时出现”无效命令’WSGIScriptAlias'”错误

I am getting “Invalid command 'WSGIScriptAlias' ” error while starting Apache

我想将Django项目部署到EC2服务器。我安装了mod_wsgi。

并像django的教程中那样进行配置。

我得到以下信息:

1
Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configuration

原因是什么? mod_wsgi未正确安装?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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>


问题是mod_wsgi未正确安装。

解决方案(使用Apache 2):

  • 安装Apache:

    1
    $ sudo apt-get install apache2

  • 安装libapache2-mod-wsgi

    1
    $ sudo apt-get install libapache2-mod-wsgi
  • 这应该可以正常工作。


    该错误专门表明mod_wsgi没有被加载到Apache中。

    在什么文件中:

    1
    LoadModule wsgi_module     libexec/httpd/mod_wsgi.so

    您是否使用适当的Linux发行版管理命令启用了mod_wsgi模块,以便在将发行版二进制软件包用于mod_wsgi时加载该模块?


    我刚在Apache 2.2上的openSUSE 12.2上遇到了同样的问题。

    即使已安装了wsgi,也最好检查一下是否已将其激活。我的意思是:

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

    如果未出现wsgi_module (shared),请将wsgi添加到文件/etc/sysconfig/apache2

    中的变量APACHE_MODULES

    这样,我可以完全避免httpd.conf中的行LoadModule


    只是添加,我如何解决我的问题
    如果您不知道模块的位置
    只是搜索它们

    1
     locate mod_alias.so

    然后您可能会得到类似

    的输出

    1
    /usr/lib/apache2/modules/mod_alias.so

    然后您可以在配置文件

    中添加该位置

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