I scanned tons of links on this topic, devoted to the deployment of Django and Apache on Ubuntu server. Finally, I found this link Django Deployement Installation to Ubuntu 12.04 Server which brought me further than any other guide. So, now, I'm at this point - I installed all software and dependencies, enabled mod_WSGI, installed Python environment and Django, started a new project etc. I called my domain name 'dynamics'. So, my dynamics
file in /etc/apache2/sites-available
folder now looks like this:
<VirtualHost *:80>
ServerAdmin root@dynamics
ServerName dynamics
Alias /site_media/ /srv/my_project/app/webapp/site_media/
Alias /static/ /srv/my_project/venv/lib/python2.7/site-packages/django/contrib/admin /static/
Alias /robots.txt /srv/my_project/app/webapp/site_media/robots.txt
Alias /favicon.ico /srv/my_project/app/webapp/site_media/favicon.ico
CustomLog "|/usr/sbin/rotatelogs /srv/my_project/logs/access.log.%Y%m%d-%H%M%S 5M" combined
ErrorLog "|/usr/sbin/rotatelogs /srv/my_project/logs/error.log.%Y%m%d-%H%M%S 5M"
LogLevel warn
WSGIDaemonProcess dynamics user=itsme group=itsme processes=1 threads=15 maximum- requests=10000 python-path=/srv/my_project/venv/lib/python2.7/site-packages python- eggs=/srv/my_project/run/eggs
WSGIProcessGroup dynamics
WSGIScriptAlias / /srv/my_project/app/conf/apache/django.wsgi
<Directory /srv/my_project/app/webapp/site_media>
Order deny,allow
Allow from all
Options -Indexes FollowSymLinks
</Directory>
<Directory /srv/my_project/app/conf/apache>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
But, when I start apache and go to localhost
I see Not found
error, if I instead try to go to http://dynamics/
I'm redirected to google search page. I think I need to make some extra configurations, but I do not know which ones. Probably, I need to specify ServerRoot in apache.conf
(but again with all this django folders I do not know where I should exactly point to).
EDIT Now, it is even worse. I tried to reinstall apache, but when I go to localhost, browser wants to load a page like a file. So, what I did step by step:
1. sudo apt-get remove apache2 # remove to install from scratch
2. sudo apt-get update
3. sudo apt-get install apache2
4. sudo a2dissite default # disable the default site
5. create dynamics file in /etc/apache2/sites-available
6. dynamics file contains these lines:
<VirtualHost *:80>
ServerAdmin root@dynamics
ServerName dynamics
DocumentRoot /home/username/Sites/dynamics
<Directory /home/username/Sites/dynamics/>
Options Indexes FollowSymLinks MultiViews
AllowOverride Node
Order allow,deny
allow from all
</Directory>
</VirtualHost>
7. /etc/apache2/apache2.conf contains `ServerName dynamics`.
If I also specify SeverRoot to /home/username/Sites/dynamics
I get hundreds of errors, when I restart apache, so I do not specify it.
Problems:
1. If I go to `http://dynamics`, I'm redirected to google search page
2. If I go to localhost, the browser wants to load a page like a file
So, after reinstallation I even one step back. I can't even make a virtual host. During this process I encountered one thing - if you do sudo apt-get remove
or sudo apt-get purge
, in spite of what they say, I still see apache config files untouched - just as they were before uninstallation. So, I now have one extra question:
1. How to uninstall completely apache. All guides and tips that I followed left apache config files just as they were.
EDIT
Well, I reinstalled apache from the very start, added a virtual host dynamics
(firstly, without any link with django), then I followed Daniel Roseman advice - corrected hosts
file a little bit. And not, at least, this part works. I can add index.html file to dynamics folder and if I go to http://dynamics/
I see this page rendered. BUT, all my attempts to build a django project and run in at the same URL http://dynamics
ended in failure. Every time I get this error 'Not found'. Tons of guides, hundreds of blogs and oceans of manuals seem to be completely useless to make (I think) the simplest possible task - just to run a django project on Apache.
EDIT
I will start a bounty question. Now, I just want to formalize everything beforehand. The question is How to deploy Django and Apache on Ubuntu? Requirements:
Strongly required:
1. Ubuntu 12.04
2. Python 3.3.4
3. Apache 2.2.22
4. mod_wsgi
Not so strongly: 5. If someone will make a running test-case, that wiil be cool. So, my final aim is to make a tiny web-project where I could use f2py
to call fortran
subroutines. If that connection is possible to do in this environment, I will be totally over the moon. And lets say I want to have a concrete virtualhost called dynamics
. So, I want to store all project's files in this directory /home/victor/dynamics/. I need a step by step instruction, not just shreds of tips. And hope this instruction, if someone will manage to make it, will be incredibly popular among django newbeis like me.
You need to run sudo a2ensite dynamics
to enable the dynamics conf (or you can manually symlink it to sites-enabled), then restart Apache with sudo /etc/init.d/apache2 restart
.
Edit Looks like the other problem is that you're trying to associate your virtualhost with a domain name that doesn't exist and isn't associated with your machine, ie dynamics
. If you want to access it like that, you'll need to edit your /etc/hosts
to point that name to your localhost: add this line to that file:
127.0.0.1 dynamics
Don't forget, this is just a hack for your machine. For real deployment, you'd need a proper domain name that is resolvable via DNS.