tryton-test:servertryton

http://tryton.zikzakmedia.com/Develop/ServerTryton

Instal·lació d'un servidor Tryton en un servidor GNU/Linux 'Debian/Ubuntu'.

Per servidors 'RedHat/CentOS', consultar primer la documentació Develop/ServerTrytonCentOS

= PostgreSQL =

Veure documentació PostgreSQL.

= Preparació paquets de Tryton =

1. Instal·lem paquets de sistema:

sudo apt-get install python-lxml python-pip python-pkg-resources python-ldap python-vobject python-tz npm libxml2-dev libxslt-dev libjpeg-dev

Ens assegurem que també estiguin instal·lats:

sudo apt-get install unoconv
sudo apt-get install gcc
sudo apt-get install libffi-dev
sudo apt-get install python-dev

sudo apt-get install python-virtualenv | sudo pip install virtualenv
sudo apt-get install mercurial | sudo pip install mercurial

Els paquets a instal·lar amb npm pel SAO:

npm install -g grunt

Instal·larem les tipografies de Microsoft:

deb http://http.us.debian.org/debian wheezy main contrib

sudo apt-get install ttf-mscorefonts-installer

Instal·larem el RabbitMQ Server pel Celery:

sudo apt-get install rabbitmq-server

Instal·larem Java:

sudo apt-get install openjdk-7-jdk
sudo update-alternatives --config java

Afegim un usuari de sistema amb el nom de la instància (nom de l'empresa) i entrem dintre:

$ sudo adduser <NOM_INSTANCIA>
$ sudo adduser <NOM_INSTANCIA> sudo

Afegim .ssh authorized_keys

$ chmod 700 .ssh
$ vi .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

Ens crearem un 'VIRTUALENV' anomenat tryton (entorn virtual) http://doc.zikzakmedia.com/Python/virtualenv

virtualenv tryton --system-site-packages

I afegim els següents àlies al fitxer de configuració ~/.bashrc:

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias renta='rm -f *~ *.pyc'

alias mhg='more .hg/hgrc'
alias hgl='hg log|less'
alias hgp='hg pull'
alias hgpu='hg pull -u'
alias hgb='hg branch'
alias hgbs='hg branches'
alias hgd='hg diff'
alias hgs='hg status'

virtualcreate() {
    virtualenv $1 --system-site-packages
}
alias virtualactive='source bin/activate'
Instal·lació
  1. Activarem el entorn virtual (virtualactive - si disposem de l'alias)
  2. Ens col·locarem dins del directori del virtualenv i ens baixarem:
  <code>
  hg clone https://bitbucket.org/zikzakmedia/trytontasks tasks
  </code>
 
- Instal·larem els paquets addicionals que trobarem al requeriments de tasks on hi ha totes les llibreries de pypi que necessitarem: 
pip install --upgrade pip
pip install genshi
pip install python-stdnum
pip install -r tasks/requirements.txt

Després d'instal·lar trytond, instalarem el celery_tryton ja que no s'inclou en els requeriments perque no instal·li trytond desde pypi:
pip install celery_tryton

Si tenim problemes amb el PIL:
pip install PIL --allow-external PIL --allow-unverified PIL
  1. Crearem el fitxer per repos personalitzats:
touch local.cfg
  1. Instal·larem tryton, trytond, sao i modules amb Develop/InvokeTask
  1. Crearem el directori data per store files:
mkdir /home/<NOM_INSTANCIA>/tryton/data
  1. Crearem el directori public_data per JS apps (Sao - AngularJS):
mkdir /home/<NOM_INSTANCIA>/tryton/www
  1. Crearem el fitxer de configuració:
sudo cp src/trytond/etc/trytond.conf /etc/trytond/.trytond_nomserver
  1. Donarem permisos de usuari al directori /var/run/trytond/

= Creació del fitxer de configuració =

Al directori 'etc' disposem d'un fitxer de configuració demo pel nostre servidor de Tryton. Copiem aquest fitxer al directori arrel /etc del nostre servidor Linux i el modifiquem segons els nostres paràmetres. Si la línia està comentada o no s'especifica cap opció, el servidor de Tryton agafarà els valors globals.

#!bash
trytond -c /etc/tryton.conf

Els paràmetres que hem de modificar com a mínim són:

jsonrpc = *:8000 #permès per a tothom
xmlrpc = *:8069 #activem el xmlrpc per proteus
db_user = usuari #usuari db
db_password = contrasenya #contrasenya db

admin_passwd = contrasenya_secreta

pidfile = /var/run/trytond/<instancia>_server.pid
logfile = /var/log/trytond/<instancia>_server.log

smtp_server = localhost
smtp_port = 25
smtp_ssl = False
smtp_tls = False
smtp_password = False
smtp_user = False
data_path = /home/nominstancia/tryton/data #directori on es guarden els fitxers adjunts

session_timeout = 3600

auto_reload = False

jasperport = 38033
jasperpid = tryton-nominstancia-jasper.pid

erpdbcopy_server = localhost
erpdbcopy_user = root
erpdbcopy_port = 22

= Arranc, aturada, actualització del servidor Tryton =

Configuració

1. Copiem el fitxer configuració d'arrancada de Tryton.

sudo cp tasks/etc/trytond.config /etc/trytond.config
sudo chmod 775 /etc/trytond.config

2. Creem els fitxers pid i log

sudo mkdir /var/log/trytond/
sudo chown usuari.usuari /var/log/trytond/

sudo mkdir /var/run/trytond/
sudo chown usuari.usuari /var/run/trytond/

pidfile = /var/run/trytond/nominstancia_server.pid
logfile = /var/log/trytond/nominstancia_server.log
Supervisor

Per últim, configurarem l'arranc/parada de Trytond amb Supervisor

= WSGI =

Gunicorn
pip install gunicorn

En el directory tasks tenim el wsgi.py i el ini d'exemple.

cd /home/INSTANCIA/tryton/
cp tasks/app.py .
touch /var/log/trytond/INSTANCIA-wsgi.log

Crearem el fitxer gunicorn.conf.py

bind = "127.0.0.1:38054"
logfile = "/var/log/trytond-wsgi.log"
workers = 2
loglevel = 'info'
#daemon = True
debug = True
Arranc manual

Ara ja el prodriem arrancar amb la comanda:

export TRYTOND_CONFIG=/home/INSTANCIA/trytond.conf
/home/INSTANCIA/tryton/bin/gunicorn --chdir /home/INSTANCIA/tryton app:app -c /home/INSTANCIA/tryton/gunicorn.conf.py
Supervisor
[program:trytond-wsgi_INSTANCIA]
command=/home/INSTANCIA/tryton/bin/gunicorn --chdir /home/INSTANCIA/tryton app:app -c /home/INSTANCIA/tryton/gunicorn.conf.py
directory=/home/INSTANCIA/tryton
autostart=true
autorestart=true
stdout_logfile=/var/log/trytond/INSTANCIA_supervisord.log
redirect_stderr=true
environment=TRYTOND_CONFIG='/home/INSTANCIA/trytond.conf'

Ara ja tenim el servei WSGI per arrancar amb supervisor.

Notes
#!wiki caution
 * bin/trytond executarà crons.
 * WSGI si captura un error de codi s'envia un correu a bugs@domini.com
uWSGI
pip install uwsgi

* app.py

from trytond.application import app as wsgi_app
 
application = wsgi_app
$ uwsgi --socket 127.0.0.1:3031 --chdir ~/virtualenv/nan40 --protocol=http --wsgi-file wsgi.py

O bé:

* uwsgi.ini

</code> [uwsgi] # http://uwsgi-docs.readthedocs.org/en/latest/Options.html

main_path = /home/resteve/virtualenv/nan40

http-socket = :3031 #~ https-socket = :3031,%(main_path)/projectes/tryton/cert/server.pem,%(main_path)/projectes/tryton/cert/server.key

# # store up to 20k sessions # cache = 20000 # # 4k per object is enough for SSL sessions # cache-blocksize = 4096 # # force the SSL subsystem to use the uWSGI cache as session storage # ssl-sessions-use-cache = true # # set SSL session timeout (in seconds) # ssl-sessions-timeout = 30

#chdir = %(path) virtualenv = %(main_path) env = TRYTOND_CONFIG=%(main_path)/trytond.conf

file = %(main_path)/wsgi.py

master = True

processes = 4 threads = 2 #enable-threads = true

#daemonize = %(path)/uwsgi.log #pidfile = %(path)/uwsgi.pid

# It is a monitor (managed by the master process) that will destroy processes # stuck for more than the specified number of seconds. # harakiri = 30

# Try to remove all of the generated file/sockets vacuum = True

# uwsgi –connect-and-read %(path)/server.log1|2|…*processes #py-tracebacker = %(path)/uwsgi_trytond.log

# uwsgitop :8010 #~ stats = :8010

logto = /tmp/trytond-wsgi.log </code>

$ uwsgi uwsgi.ini

= ERP DB Copy =

http://doc.zikzakmedia.com/ErpDbCopy

Configuració del servidor per crear bases de dades de test des del client d'escriptori amb el mòdul dbcopy

= Ant backup =

http://doc.zikzakmedia.com/AntBkp

= Parametrització =

Demanar dades als clients

Parametrització

= Sao - client web =

apt-get install npm
sudo npm install -g grunt-cli
sudo npm install -g grunt-contrib-concat
sudo npm install -g grunt-contrib-jshint
sudo npm install -g grunt-contrib-uglify
sudo npm install -g grunt-contrib-less
sudo npm install -g grunt-contrib-watch

Ens situem al directori sao i executem:

sudo npm install
grunt

Si ens apareix el missatge: no such file or directory: ln -s /usr/bin/nodejs /usr/bin/node = Tasques finals =

Neteja periòdica de la carpeta /tmp

Configurar neteja periòdica de la carpeta /tmp de fitxers temporals creats per JasperReports

sudo touch /etc/cron.daily/clean_tmp
sudo chmod 755 /etc/cron.daily/clean_tmp
sudo vi /etc/cron.daily/clean_tmp

#!/bin/sh

rm -rf /tmp/tmp*

rm -rf /tmp/trytond-jasper*

Log rotates

Creem un arxiu /etc/logrotate.d/tryton amb el següent contingut:

</code> #!bash /var/log/openerp6/*.log {

weekly
rotate 4
delaycompress
compress
missingok

} </code>

Backups

Farem ús de AntBKp. Consultem l'apartat AntBKP per la seva configuració.

Monotorització - Nagios

Configurem Nagios per monitoritzar el servidor i els backups.

sudo nano /etc/nagios3/conf.d/nom_instancia.cfg

Adaptem el següent codi:

# Define a service to check if Backup is made
define service {
        use                     backup-service
        host_name               zzsaas
        service_description     Backup Tryton NomInstancia
        check_command           check_nrpe!check_remote_backup!/home/backups/backup/backup_nom_instancia.sql
}

# Define a service to check if Tryton is running
define service {
        use                     tryton-service
        host_name               zzsaas
        service_description     Tryton NomInstancia
        check_command           check_trytond!8069!nom_instancia!usuari_nagios!password
}

Comprovem que la configuració és correcta:

# /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg

I que funciona remotament:

$ /usr/lib/nagios/plugins/check_nrpe -H <IP-ADDRESS> -c check_remote_backup -a /home/backups/backup/backup_nom_instancia.sql
$ /usr/lib/nagios/plugins/check_openerp -H <IP-ADDRESS> -P <PORT> -d base_dades -u usuari_nagios -p password_nagios
SSL

Howto activate SSL connection: http://code.google.com/p/tryton/wiki/SSLHowto

Crear certificats

Generem el certificat

$ openssl genrsa 1024 > server.pkey
$ openssl req -new -x509 -days 365 -key server.pkey -out server.cert
$ chmod 600 server.pkey
$ chmod 600 server.cert
$ sudo chown root:root server.*
$ sudo mv server.pkey /etc/stunnel
$ sudo mv server.cert /etc/stunnel

I el copiem a:

sudo cp server.* /etc/ssl/tryton/

Al fitxer de configuració Tryton:

privatekey = /etc/ssl/tryton/server.pkey
certificate = /etc/ssl/tryton/server.cert

Ara ja podem comprovar la connexió:

pip install jsonrpclib
 
from jsonrpclib import Server as ServerProxy
import jsonrpclib
import json
import pprint
 
server = ServerProxy("https://5.10.81.11:8000", verbose=0)
try:
    server.common.db.list(None,None)
    a = json.loads( jsonrpclib.history.response)
    pprint.pprint(a["result"])
except TypeError:
    a = json.loads( jsonrpclib.history.response)
    print "error:"
    print a["error"]

CategorySistema

  • tryton-test/servertryton.txt
  • Last modified: 2019/07/05 17:41
  • (external edit)