setting up django with nginx and apache - django

I just started developing in Django a few days back. After finishing a few applications I read that Django is best served using nginx for static content and a reverse proxy to apache for dynamic contents. Is there a particular reason that this configuration preferred over any other?
Also, although this seems to be the standard approach I havent yet been able to find a proper tutorial or document that walks through such a configuration. Most seem to be incomplete/non-working.
It would be great if someone could explain to me how this is to be done or point in the right direction or maybe link a tutorial here.
Thanks in advance.

I suggest to use nginx and gunicorn/uwsgi configuration, it more common this days and easier to setup/configure that apache. A proper tutorials can be found here:
1) django + gunicorn and a more complete tutorial with supervisor, fabric here
2) django + uwsgi

Related

Django multiple sites using nginx and gunicorn

I am serving multiple websites using nginx and gunicorn and I would like to add another one. Sadly my lack of experience is limiting me, I have some experience with webdesign but always struggle on the server side...|-( (I am using Django because of my Python preference in scientific analysis).
My problem: The new site seems to refer to the port used by another. Checking the gunicorn status I see that the site is running although nginx seems to be unable to refer to the correct Django folder. Could someone point me in the right direction? I have been looking around for the last hour or so...
(I didn't include any code for now as I am not sure where the error might lie at this point...)
Next day update: So I finally came across a post mentioning that the origin of the error might lie on the browser side. I deleted my recent history, this has fixed the error. I believe I somehow loaded a https certificate belonging to one of the other sites, this is no longer the case!
I came across the solution, it was a browser side fix. The answer is provided in an update to the original question.

Launching a Mezzanine site live

I'm new to mezzanine and Django. I have set up a site, everything is working but I can only launch the server on "development". I would like to access de site on the port 80 on the internet instead of internally, as I have no way other than redirecting the port via SSH to access it. I would like to know how to do that.
And another question, is Nginx included with Mezzanine automatically ? Cause I have a tuned up Nginx server there and I'm not sure what I need to do, if run it with my existing Nginx server or with the one included with Django if that is how it works .... thank you for bring some light on this.
NGINX is not included with Mezzanine, it's an entirely separate piece of software, similar to Apache.
Mezzanine includes a fabric script which can automatically set up a production server if you'd like to use it, and will install NGINX on the server for you, among many other things.
Given your question, I can't recommend enough that you read and understand all the related documentation on this topic. Start with the Mezzanine link below, it references many other documentation sites - Django, Fabric, NGINX, plus more.
Enjoy the adventure: http://mezzanine.jupo.org/docs/deployment.html

django-gcm under lighttpd/fastcgi?

Has anyone gotten the django-gcm server running under lighttpd using fastcgi?
I know how to get a general django application running under lighttpd/fastcgi, but I haven't been able to find instructions specifically for running the django-gcm server in this environment.
I've been trying various things and searching for examples, but so far, I have come up empty-handed.
Thanks for any pointers to docs or suggestions.
Django-gcm is reusable application like others. Just create new django project and add 'gcm' to your INSTALLED_APPS in your settings.py file. Btw in django-gcm package you have example of server application which you can simply run under lighttpd/fastcgi.

Modifying existing Django site

I am completely new to this Django world. I haven't tried it ever before.
Now the problem is as below;
One of my clients was hosting his site somewhere else that I don't know and they built the site using Django. The host company doesn't allow to make any changes on their server, instead they provided the zip file for all the files in the site to me; so that now I can host my client's site.
As I don't know anything about Django, can someone please shed a light where I should start from?
Thanks in advance.
Cheers.
Sach
First of all, install Django on the development machine. Start by trying to get the development server run on your machine.
Gather requirements: check the settings.py for installed apps against the default Django settings.py file. See if there are any popular django apps that site depends on. If there are any, then you probably will have to install them, too.
In which format was the database provided? Will you move to another more appropriate format? Python bindings for databases are required too.
Considering the fact that you have inherited this project and probably will need to make some changes, consider installing django-south, so you can easily make changes to the database schema.
If you get the site running properly on your own machine, consider deplyoment. Is there a lot of static content? (if so, consider nginx). Set up apache2 and install the mod_wsgi module. Deploy.
Work your way through the Django tutorial first. Then look into Django Book as has been mentioned. Django IRC channel (#django) on Freenode is also great for help.
Your best bet would be to learn about Django before trying to jump in head first - https://www.djangoproject.com/ contains documentation as well as tutorials on creating Django apps.
Django is fairly easy to setup if you already have the code written. You'll need to install the chosen database and then simply follow the tutorial on the Django website
Django comes with a built-in server so it's very easy to run the website for development without needing Apache, nginx or much else.
I learned using the Django Book. Django is an easy-to-use framework, you should be fine.
Also, in the short-term there's a file called views.py and separate folder containing templates. If you're familiar with MVC (MVT in Django) this contains the views for the site in function form. There's probably (but not always) a folder for templates which contains a lot of the HTML for the site. Just a good starting pointing for basic modifications.
You can perhaps start here. https://docs.djangoproject.com/en/dev/howto/deployment/
First, find out the django version required by your client. Install that on a server (not a production one), setup apache and mod_wsgi. The zip files may go to a dir which can be included in the mod_wsgi configuration.
Find about the static files and setup apache or any other lightweight webserver to server it.
You may not be a developer, but have a try with the django book. It can give you a good idea how its structured.

How can I get django project run in https? and what actually is 'https'?

apache + python + mod_wsgi + django +svn:
I have alreaady get my django project running under http://. Then My boss ask me to get it run in https.
I would like to know what is the difference between http and https? And how can I make my django project run under https?
Thanks
`Oh sorry, I think I have to correct somethings here.
I got my boss wrongly. In fact, he wanted me to build and run django project with svn on apache server and he also wanted it running under https.
So, can anyone tell me or provide me some link of related information of how to setup these? (actually I have very little knowledge about what svn is doing. I think my boss wanted to use svn for managing the website source code.)`
*If possible, please tell more about svn. Thanks!
The Apache documentation has various documentation about HTTPS and setting it up to use it.
http://httpd.apache.org/docs/2.2/ssl/
You just need to put your mod_wsgi configuration within a VirtualHost setup for HTTPS.