title: Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configuration
body: <p>I am trying to set up a Django server for production. In my browser, if I type in the IP address that corresponds to my server, I get the default Apache page "It works!" instead of a Django-related page.</p>
  
  <p>I have modified httpd.conf to include the line:</p>
  
  <pre><code>WSGIScriptAlias / /var/the-1/django/The1/apache/django.wsgi
  </code></pre>
  
  <p>And I created the actual file django.wsgi, which looks like:</p>
  
  <pre><code>import os
  import sys
  
  path = '/var/the-1/django/The1'
  if path not in sys.path:
      sys.path.append(path)
  
  os.environ['DJANGO_SETTINGS_MODULE'] = 'The1.settings'
  
  import django.core.handlers.wsgi
  application = django.core.handlers.wsgi.WSGIHandler()
  </code></pre>
  
  <p>But when I restart the server, I receive the error:</p>
  
  <pre><code>AH00526: Syntax error on line 506 of /usr/local/apache2/conf/httpd.conf:
  Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configuration
  </code></pre>
  
  <p>when I try to restart Apache using:</p>
  
  <pre><code>/usr/local/apache2/bin/apachectl -k restart
  </code></pre>
  
  <p>However, if I use the command:</p>
  
  <pre><code>sudo service apache2 restart
  </code></pre>
  
  <p>I don't receive the error (though I think they're not really doing the same thing).</p>
  
  <p>If I run apache2ctl -M, the following two lines appear (among others):</p>
  
  <pre><code>alias_module (shared)
  wsgi_module (shared)
  </code></pre>
  
  <p>so I believe those modules are running correctly.</p>
  
  <p>I have already tried completely uninstalling and reinstalling libapache2-mod-wsgi. The server I am working on is a Raspberry Pi running Raspbian. This is my first time setting up a server, so I know very little about Apache or how to set up Django.</p>
  
  <p><strong>EDIT</strong>: Below is my httpd.conf file (note that because the actual file is so long, I have removed all comments):</p>
  
  <pre><code>ServerRoot "/usr/local/apache2"
  
  Listen 80
  
  LoadModule authn_file_module modules/mod_authn_file.so
  LoadModule authn_core_module modules/mod_authn_core.so
  LoadModule authz_host_module modules/mod_authz_host.so
  LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
  LoadModule authz_user_module modules/mod_authz_user.so
  LoadModule authz_core_module modules/mod_authz_core.so
  LoadModule access_compat_module modules/mod_access_compat.so
  LoadModule auth_basic_module modules/mod_auth_basic.so
  LoadModule reqtimeout_module modules/mod_reqtimeout.so
  LoadModule filter_module modules/mod_filter.so
  LoadModule mime_module modules/mod_mime.so
  LoadModule log_config_module modules/mod_log_config.so
  LoadModule env_module modules/mod_env.so
  LoadModule headers_module modules/mod_headers.so
  LoadModule setenvif_module modules/mod_setenvif.so
  LoadModule version_module modules/mod_version.so
  LoadModule unixd_module modules/mod_unixd.so
  LoadModule status_module modules/mod_status.so
  LoadModule autoindex_module modules/mod_autoindex.so
  LoadModule dir_module modules/mod_dir.so
  LoadModule alias_module modules/mod_alias.so
  LoadModule wsgi_module modules/mod_wsgi.so
  
  &lt;IfModule unixd_module&gt;
  User daemon
  Group daemon
  &lt;/IfModule&gt;
  
  ServerAdmin you@example.com
  ServerName [SERVER_IP_ADDRESS]:80 # Removed for security reasons
  
  #&lt;Directory /&gt;
  #    AllowOverride none
  #    Require all denied
  #&lt;/Directory&gt;
  
  DocumentRoot "/usr/local/apache2/htdocs"
  &lt;Directory "/usr/local/apache2/htdocs"&gt;
      Options Indexes FollowSymLinks
      AllowOverride None
      Require all granted
  &lt;/Directory&gt;
  
  &lt;IfModule dir_module&gt;
      DirectoryIndex index.html
  &lt;/IfModule&gt;
  
  &lt;Files ".ht*"&gt;
      Require all denied
  &lt;/Files&gt;
  
  ErrorLog "logs/error_log"
  
  LogLevel warn
  
  &lt;IfModule log_config_module&gt;
      LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
      LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common
      &lt;IfModule logio_module&gt;
        LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
      &lt;/IfModule&gt;
      CustomLog "logs/access_log" common
  &lt;/IfModule&gt;
  
  &lt;IfModule alias_module&gt;
      ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
  &lt;/IfModule&gt;
  
  &lt;IfModule cgid_module&gt;
  &lt;/IfModule&gt;
  
  &lt;Directory "/usr/local/apache2/cgi-bin"&gt;
      AllowOverride None
      Options None
      Require all granted
  &lt;/Directory&gt;
  
  &lt;IfModule mime_module&gt;
          TypesConfig conf/mime.types
      AddType application/x-compress .Z
      AddType application/x-gzip .gz .tgz
  &lt;/IfModule&gt;
  
  &lt;IfModule proxy_html_module&gt;
  Include conf/extra/proxy-html.conf
  &lt;/IfModule&gt;
  
  &lt;IfModule ssl_module&gt;
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin
  &lt;/IfModule&gt;
  
  &lt;VirtualHost *:80&gt;
      ServerName [SERVER_IP_ADDRESS]:80 # Removed for security reasons
      WSGIScriptAlias / /var/the-1/django/The1/apache/django.wsgi
      &lt;Directory /var/the-1/django/The1/apache&gt;
          ###&lt;Files django.wsgi&gt;
              Order allow,deny
              Allow from all
          ###&lt;/Files&gt;
      &lt;/Directory&gt;
  &lt;/VirtualHost&gt;
  </code></pre>
  
  <p><strong>EDIT 2 (Solution)</strong>: There were some problems with my above config file. I was missing a LoadModule line for mod_wsgi.so and I also had to comment out one of the  sections. The comments in the first solution go through it a bit.</p>