3

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 localhostI 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.

Jacobian
  • 10,122
  • 29
  • 128
  • 221
  • 1
    haha, the username Jacobian makes us Django people think you are Jacob Kaplan-Moss – David Lam Oct 08 '14 at 06:19
  • p.s. the default /etc/apache2/apache2.conf looks for configs in *sites-enabled* (not sites-available! so maybe symlink it there) – David Lam Oct 08 '14 at 06:23
  • 1
    If you want to make clean reinstall of a package you have to purge it, not remove it: `sudo apt-get purge apache2`. It will remove also any configuration files belonging to the packages. – cezar Oct 08 '14 at 19:20
  • 1
    I did it three times in different way. Both `remove` and `purge` leave apache2.conf untouched – Jacobian Oct 08 '14 at 19:48
  • 1
    I had many problems with this as well. Maybe reading through the steps I took and what others suggested to me will help http://stackoverflow.com/questions/24233282/django-application-hosted-on-ubuntu-vm-with-apache-and-mod-wsgi-not-showing-up – Deepend Oct 13 '14 at 09:34

2 Answers2

3

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.

Daniel Roseman
  • 588,541
  • 66
  • 880
  • 895
  • I did all this, but still have the same problem. I will try to do it again step by step. What really drives me nuts, is that there is an Ocean of tutorials and guides and manuals, but there is no single document that you could follow step by step and get what you want. – Jacobian Oct 08 '14 at 07:08
1

Did you check your local hosts file from the following path which contains the 'dynamics' as a localhost?

File Location: /etc/hosts

127.0.0.1   localhost
127.0.1.1   dynamics
It's me
  • 1,065
  • 6
  • 15
  • 30
  • As I have written, I followed Danel Roseman advice. And, yes, I did it this way. But it does not solve the part of django problem. – Jacobian Oct 10 '14 at 11:10