0

I am now deploying a django test project on aws-ec2 and the AMI is Ubuntu18.04 with Python 3.6, Django 2.1, Apache2.

The project is under /var/www/Project and I am trying to add the setting to apache.conf.

The project is simply generated by django-admin startproject Project and I want make sure that when hit the public IP provided by the instance, it should show up the django default page.

WSGIDaemonProcess ubuntu  processes=2 threads=12 python-path=/var/www/Project
WSGIProcessGroup ubuntu
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /var/www/Project/Project/wsgi.py

<Directory /var/www/Project/Project>
    Require all granted
</Directory>

Now i got the internal server error.

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

I have tried this previously. And it seems like it only works when i use python2.7 with django 1.11.

WSGIScriptAlias / /var/www/Project/Project/wsgi.py

WSGIPythonPath /var/www/Project

<Directory /var/www/Project/Project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

what's wrong with my conf file?

fancylynn
  • 139
  • 1
  • 12

1 Answers1

0

I finally come up with the following solution.

If you are using Apache2, Python2 and Ubuntu18.04 LTS, you can change the apache2.conf file by adding the following:

WSGIScriptAlias / [path_to_wsgi.py]

WSGIPythonPath [path_to_project]

<Directory [path_to_project]>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

If you want to use the latest Django 2+ version, change the /etc/apache2/sites-available/000-default.conf which is the settings for HTTP port 80. (000-default.conf file can't contains WSGIPythonPath in virtualhost)

<VirtualHost *:80>
ServerAdmin webmaster@localhost
Alias /static [path_to_static_folder]

<Directory [path_to_static_folder]>
Require all granted
</Directory>

<Directory [path_to_project]>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

WSGIDaemonProcess [name] python-home=[path_to_virtualenv] python-path=[path_to_project]
WSGIProcessGroup [name]
WSGIScriptAlias / [path_to_project_wsgi.py]

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
fancylynn
  • 139
  • 1
  • 12