Configuring PostgreSQL
- Install PostgreSQL
- Create a django user
sudo -u postgres createuser -P django_user
Also you can alter the user attributes as follow:
sudo su - passwd postgres su postgres psql template1 ALTER USER django_user WITH ENCRYPTED PASSWORD 'mypassword';
- Create the Django project database::
sudo -u postgres psql template1 CREATE DATABASE django_db OWNER django_user ENCODING ‘UTF8’;
- Give comoda access (pg_hba.conf):
local django_db django_user md5
Configuring access to PostgreSQL
- Install psycopg2 Python package.
- Verify the installation
You should be all set now, but let’s verify this right away. Open the
shell and run the following instructions inside the python shell (start
off with the python command):>>> import django >>> print django.VERSION (0, 97, 'pre') >>> import psycopg2 >>> psycopg2.apilevel '2.0'
- Configure Django project settings (settings.py on the project directory):
DATABASE_ENGINE = 'postgresql_psycopg2' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = 'django_db' # Or path to database file if using sqlite3. DATABASE_USER = 'django_user' # Not used with sqlite3. DATABASE_PASSWORD = 'XXXXXX' # Not used with sqlite3. DATABASE_HOST = 'localhost' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '5432' # Set to empty string for default. Not used with sqlite3.
- Install Django Python package.
- Run syncdb from Django project directory:
python manage.py syncdb
Running Django project like FastCGI
- Install Django and Flup Python packages.
- You need also to start Django fastcgi server (from the project folder):
python manage.py runfcgi host=127.0.0.1 port=8000 --settings=settings
If you need to add something to pythonpath:
python manage.py runfcgi host=127.0.0.1 port=8000 --settings=settings --pythonpath=/a/path/to/somewhere/
Configuring Nginx to serve the Django FastCGI service
- Configure Nginx:
server { listen 80; #server_name localhost;
location / { root html; rewrite ^ https://172.2.30.31$request_uri redirect; } access_log /var/log/nginx/localhost.access.log; }
server { listen 443; # server_name localhost;
access_log /var/log/nginx/localhost-ssl.access.log;
ssl_prefer_server_ciphers on; ssl on; ssl_certificate /etc/nginx/ssl/all_com.crt; ssl_certificate_key /etc/nginx/ssl/all_com.key; ssl_session_timeout 5m;
#ssl_protocols SSLv2 SSLv3 TLSv1; #ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
location / { # host and port to fastcgi server fastcgi_pass 127.0.0.1:8000; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_intercept_errors off; }
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } }
- Access to http://<django-server>/.