Forum

You are not logged in.

#1 13-01-2015 02:10:10

defie
Membre
Registered: 11-01-2015
Posts: 4

Tuto python 3.4.2 et django 1.7.2

HEBERGEMENT ET VIRTUALISATION D’ENVIRONNEMENTS PYTHON/LINUX

1-Installation de python (version au choix, ici exemple python 3.4)

En console ssh

On créé un répertoire ou mettre python

user@ssh: ~ $ mkdir –p $HOME/.python/src

On se positionne dans le répertoire précédemment créé

user@ssh: ~ $ cd $HOME/.python/src

On télécharge la version python désirée

user@ssh: ~ /.python/src  $ wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz --no-check-certificate
user@ssh: ~ /.python/src $ tar xvfz Python-3.4.2.tgz
user@ssh: ~ /.python/src $ cd Python-3.4.2

Ici on à récupérer l'archive comprenant les fichiers nécessaires pour l'installation de python 3.4.
On utilise --no-check-certificate car le chemin pour récupérer l'archive est valide et on lui fait confiance.
Ensuite on a utilisé la commande tar pour désarchiver cette archive, puis on positionne dans le nouveau dossier grâce à cd.

On créé un répertoire ou mettre python à extraire, et on installe python 3.4.2

user@ssh: ~/.python/src /Python-3.4.2 $ mkdir $HOME/.python/python34
user@ssh: ~/.python/src /Python-3.4.2 $ ./configure --prefix=$HOME/.python/python
user@ssh: ~/.python/src /Python-3.4.2 $ make
user@ssh: ~/.python/src /Python-3.4.2 $ make install	
user@ssh: ~/.python/src /Python-3.4.2 $ cd 

Ici, on crée le répertoire python34, dans le répertoire .python .
Le dossier .python commence par un . pour qu’il soit invisible par défaut.
Les 3 lignes du milieu permettent de configurer l'installation le chemin d’installation, de créer les fichiers compilés et lancer l'installation.
Et la commande "cd .." nous permet de revenir d'un répertoire en arrière.

On installe les librairies de notre futur environnement virtuel

user@ssh: ~ $ pip3 install virtualenv
user@ssh: ~ $ pip3 install virtualenvwrapper

On créé notre environnement virtuel

user@ssh: ~ $ cd
user@ssh: ~ $ mkdir .virtualenvs
user@ssh: ~ $ mkvirtualenv <virtEnv>

On installe les librairies nécessaires pour notre environnement virtuel

<virtEnv>user@ssh: ~ $ pip3 install psycopg2
<virtEnv>user@ssh: ~ $ pip3 install django

On installe la librairie flup pour que le WSGI de django puisse fonctionner (sur alwaysdata.com)

Il existe un problème pour flup, c’est qu’il n’est pas à jour pour python 3.4.2, nous allons donc être obligé de faire une manip.
Il faut télécharger sur votre propre pc, le zip sur : http://hg.saddi.com/flup-py3.0 (en bas à droite), puis extraire les fichiers.

Modifier le fichier flup/server/fcgi_base.py avec la démarche ci après, (toujours avec votre propre PC) ;

Dans le fichier fcgi_base.py :

Changement des lignes suivantes :

import thread

En

try:    
    import thread 
except ImportError:
    import _thread as thread

Et aux environs de la ligne 372 changement des lignes suivantes :

self._file.write(data)

En

self._file.buffer.write(data)

Une fois ces changements effectués il faut transférer, depuis votre propre PC, le répertoire flup (et seulement celui-ci, avec par exemple Filezilla), dans le répertoire : .virtualenvs/<myenv>/lib/python3.4/site-packages

(Nota : Faites bien attention aux points il faut les mettre)

Voilà pour la partie installation, on attaque maintenant les configurations, avec les fichiers qui vont bien :

------------------------------------------------- ***** -------------------------------------------------

On créé le répertoire des projets :

<virtEnv>user@ssh: ~ $ mkdir projects
<virtEnv>user@ssh: ~ $ cd projects
<virtEnv>user@ssh: ~ projects $ mkdir webSite

On créé les fichiers :

<virtEnv>user@ssh: ~ projects $ cd website/public
<virtEnv>user@ssh: ~ projects/website/public $ touch django.fcgi
<virtEnv>user@ssh: ~ projects/website/public $ touch .htaccess

On édite les fichiers (vous pouvez lancer la commande : emacs django.fcgi)

django.fcgi doit ressembler à ceci :

#!/home/<username>/.virtualenvs/<myenv>/bin/python
import os, sys

_PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
_PROJECT_NAME = _PROJECT_DIR.split('/')[-1]

sys.path.insert(0, _PROJECT_DIR)
sys.path.insert(0, os.path.dirname(_PROJECT_DIR))

os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME

os.chdir(_PROJECT_DIR)

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

..htaccess doit ressembler à ceci :

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]

On doit, faire une manipulation sur le fichier .htaccess :

<virtEnv>user@ssh: ~ projects/website/public $ dos2unix django.fcgi
<virtEnv>user@ssh: ~ projects/website/public $ chmod +x django.fcgi
<virtEnv>user@ssh: ~ projects/website/public $ cd

On peut quitter l’environnement virtuel :

<virtEnv>user@ssh: ~ projects/website/public $ deactivate

Vous devriez maintenant avoir l’arborescente suivante :

-- .virtualenvs
-- projects
    -- website
        -- website
            settings.py
        -- ...
        -- public
            django.fcgi
            .htaccess

------------------------------------------------- ***** -------------------------------------------------

Dernière ligne droite …….

On créé le fichier .bash_profile :

user@ssh: ~ $ .bash_profile 

On édite les fichiers (vous pouvez lancer la commande : emacs django.fcgi)

.bash_profile  doit ressembler à ceci :

# Python
export PYTHONPATH=/home/<username>/.python/python34
mkdir -p $PYTHONPATH
export PATH=$PYTHONPATH:$PYTHONPATH/bin:$PATH
# Virtualenv
export WORKON_HOME=/home/<username>/.virtualenvs 
mkdir -p $WORKON_HOME
source /home/<username>/.python/python34/bin/virtualenvwrapper.sh

On doit, faire une manipulation sur le fichier . bash_profile :

user@ssh: ~ $ dos2unix .bash_profile 

------------------------------------------------- ***** -------------------------------------------------

Voilà pour la partie configurations, on attaque maintenant la mise en place des éléments sur l’admin de votre compte, sur l’hébergeur :


Il faut cliquer sur le menu Sites, puis sur la roue pour modifier

Ensuite modifier la configuration, comme ci-après, puis validez

Type = WSGI

Chemin de l'application = /projects/siteWeb/public/django.fcgi

ET VOILA !, votre site web devrait fonctionner :

Merci à Kite et mijamo, qui ont permis de réaliser ce petit tuto.

Last edited by defie (13-01-2015 02:13:58)

Offline

#2 13-01-2015 14:50:45

stilobique
Membre
Registered: 02-01-2015
Posts: 3

Re: Tuto python 3.4.2 et django 1.7.2

Ola,
merci pour le tuto. Mais je ne comprend pas tout. Pip3 est installé avec l'archive de python ? Moi il essai d'installé tout via mon python 2.6 (celui de base sur le serveur). Comment remédier à ça ?

Offline

#3 13-01-2015 17:54:01

defie
Membre
Registered: 11-01-2015
Posts: 4

Re: Tuto python 3.4.2 et django 1.7.2

en suivant bien le tuto, il ne devrait pas y avoir de soucis.

en fait pip3 vient dans le python télécharger, les fichiers vont aller ce mettre dans votre environnement virtuel.

Offline

#4 01-02-2015 16:51:59

K'niyl
Membre
Registered: 25-10-2012
Posts: 14

Re: Tuto python 3.4.2 et django 1.7.2

Les bouts de code n’ont pas l’air complètement juste. Par exemple, au début, la ligne de ./configure n’utilise pas le répertoire créé juste au dessus. De même pour le cd à la fin, tu parles de cd .. dans le paragraphe juste en dessous (d’ailleurs par rapport à la suite des manips, j’aurais écrit cd ~/.python/python34/bin).
Et tant qu’à faire un tuto avec python 3.4, tu pourrais utiliser pyvenv, fourni avec la distribution plutôt que virtualenv.

Oh, et quand tu utilises les exécutables hors du path, exécute les avec ./ (ça évitera que des gens comme stilobique se posent des questions).

Si tu pouvais éditer ton message pour corriger ces erreurs, ça aiderait mieux les autres. Sinon, merci, j’y ai quand même trouvé les informations que j’étais venu chercher.

Offline

#5 02-08-2015 00:27:59

adm1993
Membre
Registered: 02-08-2015
Posts: 1

Re: Tuto python 3.4.2 et django 1.7.2

pour information (parce que j'ai beaucoup galéré), pour faire faire à différentes problématiques en suivant le tuto j'ai fait les opérations suivantes:
./configure --prefix=$HOME/.python/python34  #logique et surement une faute de frappe
j'ai dû éditer le .bash_profile avant de pouvoir utiliser la commande pip3
après avoir installé psycopg2 et django==1.7 et à la place du paragraphe sur flup j'ai fait: pip3 install flup6
dans l'admin/Sites j'ai mis l'application en apache standard et le chemin à:  /monprojet/public/

Offline

Board footer

Powered by FluxBB