Installation

Prérequis

Il faut avoir fait l’install de django_apogee http://django-apogee.readthedocs.org/fr/latest/

Commandes

  1. Création du projet et installation des librairies

    cd ~/projet
    git clone https://github.com/fsx999/duck_inscription.git
    cd duck_inscription
    source ~/.Envs/django_projet/bin/activate
    sudo apt-get install mercurial
    pip install -r requirement.txt
    pip install gunicorn
    sudo apt-get install supervisor nginx
    
  2. Configuration :

    vim test_duck_inscription/local_settings.py
    

    ajout des variables de conf

    # coding=utf-8
    EMAIL_HOST = 'host.server.email'
    EMAIL_USE_TLS = True # en cas de ssl, sinon False
    EMAIL_PORT = 2525 # port du serveur de mail
    EMAIL_HOST_USER = "utilisateur du compte"
    EMAIL_HOST_PASSWORD = "password"
    DEBUG = False # true si developpement
    ALLOWED_HOSTS =['inscription.mondomaine.fr'] # il faut ajoute le nom de domaine qui va être utiliser pour le site
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'ma_database',
            'USER': 'mon_utilisateur',
            'PASSWORD': 'mon_password',
            'HOST': 'url_base_de_donnee',
            'PORT': '',
    
        },
        'oracle': {  # Voir la configuration de django_apogee
            'ENGINE': 'django.db.backends.oracle',
            'NAME': 'nom_base_oracle',
            'USER': 'utilisateur_oracle',
            'PASSWORD': 'password',
            'HOST': 'host_oracle',
            'PORT': 'le_port',
        },
    }
    COMPOSANTE = '034'  # le code de la composante qui utilise l'application (code apogee)
    
    # si besoin en dev :
    # DEV_APPS = ('devserver', 'debug_toolbar')
    
    # Pour ajouter des applications au début de la liste
    # FIRST_APPS = ('mes_application',)  # par exemple ajouter une application pour changer les templates
    
    # Pour ajouter des applications à la fin de la liste
    # LAST_APPS = ()
    

    application des migration

    ./manage.py syncdb
    ./manage.py migrate
    

    initialisation de la base (différente de django_apogee)

    ./manage.py initialisation_inscription
    ./manage.py shell_plus
    

    dans la console le code python suivant

    annee = SettingAnneeUni.objects.get(cod_anu=2014)  # changer par l'année en cours
    annee.inscription = True
    annee.save()
    
  3. Configuration supervisor

    mkdir ~/logs
    cd /etc/supervisor/conf.d
    sudo vim preins.conf
    

    Il faut remplasser tous les user par le bon user

    [program:preins]
    command=/home/$user/.Envs/django_projet/bin/gunicorn -n gunicorn_preins -w 3 -t 30 -b unix:/tmp/gunicorn_preins.sock -p /tmp/gunicorn_preins.pid --log-level debug --error-logfile /home/$user/logs/error_gunicorn_preins.log --settings test_duck_inscription.settings test_duck_inscription.wsgi:application
    directory=/home/$user/projet/duck_inscription
    environment=PATH="/home/$user/.Envs/django_projet/bin"
    user=$user
    autostart=true
    autorestart=true
    redirect_stderr=true
    

    Ensuite il faut rajouter le chemin d’oracle dans le path (méthode a améliorer)

    sudo vim /etc/init.d/supervisor
    

    ajouter au début du fichier juste après PATH=.....

    export ORACLE_HOME=/opt/instantclient_11_2
    export LD_LIBRARY_PATH=:/opt/instantclient_11_2
    
    sudo service supervisor restart
    

    configuration de nginx

    mkdir ~/html
    mkdir ~/projet/static
    mkdir ~/projet/static_tel
    sudo vim /etc/nginx/sites-available/preins
    
    upstream app_server {
        server unix:/tmp/gunicorn_preins.sock fail_timeout=0;
    }
    server {
        # pour https
        #ssl_certificate  wildcard-ssl.crt;
        #ssl_certificate_key  wildcard-ssl.key;
    
        #listen 443; # port 443 pour https, 80 pour http
        listen 80;
        server_name  localhost; #mettre le nom de domaine voulue
    
        #ssl  on;
        #ssl_session_timeout  5m;
        #ssl_protocols  SSLv3 TLSv1;
        #ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
        #ssl_prefer_server_ciphers   on;
    
        root /home/$user/html;
    
        location /static/ {
                # checks for static file, if not found proxy to app
                autoindex on;
                root /home/$user/projet/;
        }
        location /static_tel/ {
                # checks for static file, if not found proxy to app
                autoindex on;
                root /home/$user/projet/;
        }
        location / {
            proxy_pass http://app_server;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Protocol "http"; # "https" si https
            #proxy_set_header X-Forwarded-Ssl on;
        }
    }
    

    ensuite

    cd ../sites-enabled/
    sudo rm default
    sudo ln -s ../sites-available/preins preins
    sudo service nginx restart
    
    source ~/.Envs/django_projet/bin/activate
    cd ~/projet/duck_inscription
    ./manage.py collectstatic