Koozali.org: home of the SME Server

SME 8.1 commande virtualenv

Offline Xavier.A

  • ***
  • 104
  • +0/-0
Re: SME 8.1 commande virtualenv
« Reply #15 on: March 28, 2014, 10:46:16 AM »
Le soft est fonctionnel mais il n'y a pas de RPMs pour faire une install en prod, je peux m'y coller dès que j'ai du temps mais là je suis en retard sur plusieurs projets. sinon c'est un  projet intéressant pour offrir une alternative "lègère" de gestion de mise à jour pour un parc de PC Micromou, je me le suis casé sur l'oreille pour y revenir dès qu'un de mes clients en aura le besoin ;-)

Si tu as vraiment envie de tester le soft il va quand même falloir un peu te former à Python et au virtualenv, rassures toi c'est pas du Perl des grands qui font des contribs !

Je vais te donner quelques pistes pour installer le soft mais avant de commencer, il faut tout de même faire attention au fait que les super DEV de la SME n'ont toujours pas su paramétrer correctement YUM pour leurs utilisateurs donc il faut penser à régler le "Multilib Policy"

/!\ ATTENTION CE QUI SUIT N'EST PAS UN TUTO, IL PEUT Y AVOIR DES ERREURS /!\
Références :

Pour un serveur SME 8.1 de développement(virtualisé) fraîchement installé:

1) Récupérer le code avec GIT
Code: [Select]
yum --enablerepo=epel install git perl-Git perl-TermReadKey
mkdir -p /opt/UpdatEngine
cd /opt/UpdatEngine
git clone https://github.com/updatengine/updatengine-server.git
cat updatengine-server/requirements/pip-packages.txt
chown -vR www:www /opt/UpdatEngine

2) Installer ce qu'il faut pour python 2.6
Code: [Select]
yum --enablerepo=epel install python26 python26-devel python26-distribute python26-virtualenv PyYAML python26-argparse python26-libs libyaml libffi python26-PyYAML libyaml-devel
yum install gcc cpp glibc-devel glibc-headers  kernel-headers libxslt-devel libxml2-devel libgcrypt-devel libgpg-error-devel pkgconfig zlib-devel
yum install --enablerepo=smedev openssl-devel mysql-devel keyutils-libs-devel krb5-devel libselinux-devel libsepol-devel e2fsprogs-devel

3) Créer l'environnement virtuel :
Code: [Select]
virtualenv-2.6 --python=python26 --distribute --no-site-packages /opt/UpdatEngine
cd /opt/UpdatEngine
source bin/activate
/opt/UpdatEngine/bin/easy_install-2.6 -U distribute
/opt/UpdatEngine/bin/pip-2.6 install -r /opt/UpdatEngine/updatengine-server/requirements/pip-packages.txt
deactivate

4) Créer la base de donnée (faut adapter !)
Code: [Select]
/usr/bin/mysql <<EOF
   CREATE DATABASE updatenginedb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
   GRANT ALL PRIVILEGES ON updatenginedb.* TO updatengineuser@localhost IDENTIFIED BY 'updatenginepw';
   flush privileges;
EOF
à cet étape ça peut être sympas de générer un password de manière aléatoire, tu peux trouver un bout de code à la sauce Super Dev SME quelque part sur le web mais ma religion m'interdit de faire de la pub au "neuneu"  :lol:

5) Configurer UE
Code: [Select]
cp /opt/UpdatEngine/updatengine-server/updatengine/settings.py.model_mysql /opt/UpdatEngine/updatengine-server/updatengine/settings.py
nano /opt/UpdatEngine/updatengine-server/updatengine/settings.py

Tu y colles ce que tu veux pour l'IP et le port:
Code: [Select]
#PROJECT_URL = 'http://##updatengine_server_ip##:1979'
PROJECT_URL = 'https://xxx.xxx.xxx.xxx:1979'

pour les paramètres de connexion à la base
Code: [Select]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME' : 'updatenginedb',
        'USER': 'updatengineuser',                      # Not used with sqlite3.
        'PASSWORD': 'updatenginepw',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

6) Mettre en place le mod WSGI (oulala ça va se compliquer)
Code: [Select]
yum install --enablerepo=epel python26-mod_wsgi
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf
nano /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20LoadModule80mod_wsgi
y coller :
Code: [Select]
LoadModule wsgi_module modules/python26-mod_wsgi.so
Permettre à Apache d'utiliser des scripts wsgi/py
Code: [Select]
nano /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/80AddHandler15
y coller (faut adapter en fonction des extensions utilisées .py / .wsgi)
Code: [Select]
# To use WSGI scripts:
AddHandler wsgi-script .py
WSGISocketPrefix /var/run/wsgi
puis
Code: [Select]
mkdir /var/run/wsgi
chown www:www /var/run/wsgi
expand-template /etc/httpd/conf/httpd.conf
/usr/sbin/apachectl configtest
sv h /service/httpd-e-smith

Vérifier que le module est bien chargé par Apache, on peut aussi jeter un coup d'oeil au log
Code: [Select]
apachectl -t -D DUMP_MODULES

7) Créer le virtualhost pour UE en s'inspirant de ce qui est fourni par les dev et en adaptant aux spécificités un  peu "con-con" de la SME notamment pour le SSL :
Code: [Select]
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf
cat /opt/UpdatEngine/updatengine-server/requirements/apache-updatengine
nano /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/99UpdatEngine
Il faut adapter ce qui suit en lisant bien tout ce qu'il faut sur les sites :

Code: [Select]
# ------------------------------------------------
# UpdatEngine
# ------------------------------------------------
Listen 1979
NameVirtualHost *:1979

<VirtualHost *:1979>
       WSGIDaemonProcess updatengine display-name=updatengine user=www processes=2 threads=15 \
                python-path=/opt/UpdatEngine/updatengine-server/updatengine:/opt/UpdatEngine/lib/python2.6/site-packages
        WSGIProcessGroup updatengine
        WSGIScriptAlias / /opt/UpdatEngine/updatengine-server/updatengine/wsgi.py
        Alias /static/ /opt/UpdatEngine/updatengine-server/updatengine/static/
        Alias /media/ /opt/UpdatEngine/updatengine-server/updatengine/media/

<Directory /opt/UpdatEngine/updatengine-server/updatengine>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

<Directory /opt/UpdatEngine/updatengine-server/updatengine/static>
Order deny,allow
Allow from all
</Directory>

<Directory /opt/UpdatEngine/updatengine-server/updatengine/media>
Order deny,allow
Allow from all
</Directory>

# Enable SSL on UpdatEngine
SSLEngine on
#SSLCertificateFile    /etc/ssl/certs/updatengine.crt
#SSLCertificateKeyFile /etc/ssl/private/updatengine.key
{
    my $crt = $modSSL{'crt'} ||
"/home/e-smith/ssl.crt/${SystemName}.${DomainName}.crt";

    my $key = $modSSL{'key'} ||
"/home/e-smith/ssl.key/${SystemName}.${DomainName}.key";

    $OUT .= <<SSL_END;
SSLCertificateFile $crt
SSLCertificateKeyFile $key
SSL_END

}
</VirtualHost>
pour ce virtualhost même moi j'ai galéré un peu ...un petit peu pendant 10 mn  :lol: il y avait une astuce à trouver pour l'accès au wsgi.py mais je te laisse chercher laquelle.

puis
Code: [Select]
expand-template /etc/httpd/conf/httpd.conf
/usr/sbin/apachectl configtest
sv h /service/httpd-e-smith
config set UpdatEngine service access private status enabled TCPPort 1979
signal-event remoteaccess-update

8 ) Vérification
Code: [Select]
ps aux | grep updatengine
lsof -n -i -P | grep 1979
links https://updatengine_server_ip:1979

9) Initialisation de la base de donnée de UE
Code: [Select]
/opt/UpdatEngine/bin/python26 /opt/UpdatEngine/updatengine-server/manage.py syncdb

Si c'est nécessaire
Code: [Select]
/opt/UpdatEngine/bin/python26 /opt/UpdatEngine/updatengine-server/manage.py migrate

10) Nettoyage du système
un petit "yum remove" de tous les fichiers inutiles sur ton système

--/--
Voilou !  c'était simple, non ? :lol:
Du boulot de 1ère année de DUT ou de BTS SIO mais pour faire un RPM il faut un peu plus adapter l'installation à la sauce Super Dev SME en faisant un RPM générique puis un machin smeserver.


P.S.: pour SME 9 beta 3 c'est encore plus simple mais là, va falloir essayer par soi-même  :P
« Last Edit: March 28, 2014, 11:48:06 PM by kid_of_leognan »
“When the wise man points to the moon, the fool looks at the finger.”

Offline Xavier.A

  • ***
  • 104
  • +0/-0
Re: SME 8.1 commande virtualenv
« Reply #16 on: March 28, 2014, 11:01:21 AM »
Mon opinion sur la SM9 :
La SME9 beta se comporte comme une CentOS 6 avec les hack habituels des Super Dev SME, quelques améliorations et beaucoup de "je suis le plus fort au monde" pour réinventer la roue concernant des problèmes que les autres distributions ont réglé depuis longtemps (cf le pb de /tmp pour PHP). Bref encore et toujours un comportement autiste avec des œillères.

Donc comme dirait bip de Firewall bip, SME 9 beta n'est pas assez mature pour être mis en production! Si je n'ai pas le choix, je préfère utiliser directement une CentOS 6 avec un panel quelconque mais bon j'aime surtout la ligne de commande ;-)

C'est seulement mes 2 cents à moi mais tant que certains incompétents seront dans l'éco-systeme, que la gouvernance ne s'améliore pas et que certains sont dans plusieurs structures (plusieurs fondations) ça risque de ramer sérieux pendant longtemps !

Xavier
« Last Edit: March 28, 2014, 02:42:08 PM by kid_of_leognan »
“When the wise man points to the moon, the fool looks at the finger.”

Offline aquick

  • 9
  • +0/-0
Re: SME 8.1 commande virtualenv
« Reply #17 on: March 31, 2014, 07:56:28 AM »
ok merci pour tout. tout fonctionne.