Newsgroup: it.comp.os.linux.iniziare
Titolo: Avviare automaticamente un demone...

Ciao,
Ho installato su ubuntu 16.04.1 ODOO 10 con successo, nel senso che 
digitando l' URL parte.
 
Pero', all' avvio del server, lo devo lanciare tramite terminale con i 
comandi :
 
cd /opt/odoo/odoo-10.0
 
./odoo-bin
 
Vorrei rendere automatico l' avvio, ho cercato in rete ma quasi tutti 
gli articoli si riferiscono ad una vesrione obsoleta di Odoo, la 8, dove 
i path possono essere diversi.
 
Ad esempio o cercato di applicare quanto scritto in questa pagina :
 
https://goo.gl/hdm01C
 
 
Ma nn ci riesco, in particolare non so dove intervenire per modificare 
lo script :
 
*****************
Potreste voler avviare automaticamente Odoo all'avvio del sistema.
 
Non prenderemo in considerazione in questo how-to l'utilizzo di 
strumenti quali Supervisord e simili, quindi ci limiteremo a creare un 
file di init valido per Debian, Ubuntu e derivate, usando quello 
presente di default nei sorgenti di Odoo.
 
sudo cp /opt/odoo/buildout/parts/odoo/debian/init /etc/init.d/odoo
 
Ora apriamo il file creato con il nostro editor preferito, modifichiamo 
il path del demone (parametro DAEMON), eliminiamo il richiamo al file di 
configurazione e a quello di log (gestiti da buildout).
 
Il file risultante dovrebbe assomigliare al seguente:
 
#!/bin/bash
### BEGIN INIT INFO
# Provides:          odoo.py
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start odoo daemon at boot time
# Description:       Enable service provided by daemon.
# X-Interactive:     true
### END INIT INFO
## more info: 
http://wiki.debian.org/LSBInitScripts
 
 
. /lib/lsb/init-functions
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DAEMON=/opt/odoo/buildout/bin/start_odoo
NAME=odoo
DESC=odoo
PIDFILE=/var/run/${NAME}.pid
USER=odoo
export LOGNAME=$USER
 
test -x $DAEMON || exit 0
set -e
 
function _start() {
     start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid 
$USER:$USER --background --make-pidfile --exec $DAEMON --
}
 
function _stop() {
     start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
     rm -f $PIDFILE
}
 
function _status() {
     start-stop-daemon --status --quiet --pidfile $PIDFILE
     return $?
}
 
 
case "$1" in
         start)
                 echo -n "Starting $DESC: "
                 _start
                 echo "ok"
                 ;;
         stop)
                 echo -n "Stopping $DESC: "
                 _stop
                 echo "ok"
                 ;;
         restart|force-reload)
                 echo -n "Restarting $DESC: "
                 _stop
                 sleep 1
                 _start
                 echo "ok"
                 ;;
         status)
                 echo -n "Status of $DESC: "
                 _status && echo "running" || echo "stopped"
                 ;;
         *)
                 N=/etc/init.d/$NAME
                 echo "Usage: $N 
{start|stop|restart|force-reload|status}" >&2
                 exit 1
                 ;;
esac
 
exit 0
 
Ora come ultima cosa rendiamo il file di init eseguibile e 
configuriamolo per avviarsi automaticamente all'avvio del sistema e 
testiamone il corretto funzionamento:
 
$ sudo chmod +x /etc/init.d/odoo
$ sudo update-rc.d odoo defaults
   Adding system startup for /etc/init.d/odoo ...
    /etc/rc0.d/K20odoo -> ../init.d/odoo
    /etc/rc1.d/K20odoo -> ../init.d/odoo
    /etc/rc6.d/K20odoo -> ../init.d/odoo
    /etc/rc2.d/S20odoo -> ../init.d/odoo
    /etc/rc3.d/S20odoo -> ../init.d/odoo
    /etc/rc4.d/S20odoo -> ../init.d/odoo
    /etc/rc5.d/S20odoo -> ../init.d/odoo
$sudo /etc/init.d/odoo start
Starting odoo: ok
 
**************
 
 
Tra l' altro cosa sono queste righe dopo il comando : $ sudo update-rc.d 
odoo defaults ?
 
   Adding system startup for /etc/init.d/odoo ...
    /etc/rc0.d/K20odoo -> ../init.d/odoo
    /etc/rc1.d/K20odoo -> ../init.d/odoo
    /etc/rc6.d/K20odoo -> ../init.d/odoo
    /etc/rc2.d/S20odoo -> ../init.d/odoo
    /etc/rc3.d/S20odoo -> ../init.d/odoo
    /etc/rc4.d/S20odoo -> ../init.d/odoo
    /etc/rc5.d/S20odoo -> ../init.d/odoo
 
e' quello che mi dovrebbe rispondere ubuntu ?
 
Grazie
 

non c'e' tra i servizi ?
 
systemctl list-unit-files
 

 systemctl list-unit-files
 
 
dice questo :
 
administrator@SRVODOO:~$ systemctl list-unit-files
UNIT FILE                                  STATE
proc-sys-fs-binfmt_misc.automount          static
org.freedesktop.hostname1.busname          static
org.freedesktop.locale1.busname            static
org.freedesktop.login1.busname             static
org.freedesktop.network1.busname           static
org.freedesktop.resolve1.busname           static
org.freedesktop.systemd1.busname           static
org.freedesktop.timedate1.busname          static
dev-hugepages.mount                        static
dev-mqueue.mount                           static
proc-sys-fs-binfmt_misc.mount              static
sys-fs-fuse-connections.mount              static
sys-kernel-config.mount                    static
sys-kernel-debug.mount                     static
acpid.path                                 enabled
systemd-ask-password-console.path          static
systemd-ask-password-plymouth.path         static
systemd-ask-password-wall.path             static
systemd-networkd-resolvconf-update.path    static
accounts-daemon.service                    enabled
acpid.service                              disabled
apport-forward@.service                    static
lines 1-23...skipping...
UNIT FILE                                  STATE
proc-sys-fs-binfmt_misc.automount          static
org.freedesktop.hostname1.busname          static
org.freedesktop.locale1.busname            static
org.freedesktop.login1.busname             static
org.freedesktop.network1.busname           static
org.freedesktop.resolve1.busname           static
org.freedesktop.systemd1.busname           static
org.freedesktop.timedate1.busname          static
dev-hugepages.mount                        static
dev-mqueue.mount                           static
proc-sys-fs-binfmt_misc.mount              static
sys-fs-fuse-connections.mount              static
sys-kernel-config.mount                    static
sys-kernel-debug.mount                     static
acpid.path                                 enabled
systemd-ask-password-console.path          static
systemd-ask-password-plymouth.path         static
systemd-ask-password-wall.path             static
systemd-networkd-resolvconf-update.path    static
accounts-daemon.service                    enabled
acpid.service                              disabled
apport-forward@.service                    static
apt-daily.service                          static
atd.service                                enabled
autovt@.service                            enabled
bootlogd.service                           masked
bootlogs.service                           masked
bootmisc.service                           masked
cgmanager.service                          enabled
cgproxy.service                            enabled
checkfs.service                            masked
checkroot-bootclean.service                masked
checkroot.service                          masked
lines 1-34
 

sembra non sia presente il servizio in systemd
 
funziona l'abiltazione di /etc/init.d/odoo
con 



Fa cosi' :
 
administrator@SRVODOO10:/opt/odoo/odoo-10.0$ sudo update-rc.d odoo defaults
[sudo] password for administrator:
administrator@SRVODOO10:/opt/odoo/odoo-10.0$
 
Cosa vuol dire ?
 
Grazie

ha abilitato l'avvio del servizio "odoo" nel runlevel di default
 
prova a riavviare e vedere se parte

 abilitato l'avvio del servizio "odoo" nel runlevel di default
 
No, non funziona.
 
Ho provato a lanciare il file a mano :
 
 
administrator@SRVODOO10:~$ sudo /etc/init.d/odoo start
[sudo] password for administrator:
/etc/init.d/odoo: 1: /etc/init.d/odoo: 
administrator@SRVODOO10:/etc/init.d$: not found
[....] Starting odoo (via systemctl): odoo.serviceJob for odoo.service 
failed because the control process exited with error code. See 
"systemctl status odoo.service" and "journalctl -xe" for details.
  failed!
administrator@SRVODOO10:~$
----
 
a parte che mi chiede la password e, quindi, non puo' essere lanciato 
automaticamente, ma perche' mi dice :
 
/etc/init.d$: not found ?
 
Il file odoo esiste...
 
Quello dopo cosa vuo dire ?
 
Dove sbaglio ?
 
Grazie
 
 

- il file /etc/init.d/odoo esiste vero?
 
- quel messaggio dopo sembra avviare il servizio in systemd
 
per avviarlo:
sudo systemctl start odoo.service
 
e per vedere lo stato:
sudo systemctl status odoo.service
 
per vedere errori:
journalctl -xe


Ok, mi da' un sacco di errori, a proposito, nel file  /etc/init.d/odoo 
Mi dicono di cambiare i DAEMON :
 
DAEMON=/usr/bin/odoo
 
Con cosa lo cambio ?
 
Dentro /usr/bin/ non vedo nesun file di nome : odoo
 
a mano lancio odoo con :
 
 
cd /opt/odoo/odoo-10.0
 
./odoo-bin
 
Grazie
 

prova 
 
/opt/odoo/odoo-10.0/odoo-bin 
 


 
Niente da fare, non parte :
 
per avviarlo:
 
sudo systemctl start odoo.service
 
administrator@SRVODOO10:~$ sudo systemctl start odoo.service
[sudo] password for administrator:
Job for odoo.service failed because the control process exited with 
error code.                              See "systemctl status 
odoo.service" and "journalctl -xe" for details.
 
 
 
------
 
e per vedere lo stato:
sudo systemctl status odoo.service
 
administrator@SRVODOO10:~$ sudo systemctl status odoo.service
● odoo.service - LSB: Start odoo daemon at boot time
    Loaded: loaded (/etc/init.d/odoo; bad; vendor preset: enabled)
    Active: failed (Result: exit-code) since Wed 2016-12-14 17:09:32 
CET; 23s ago
      Docs: man:systemd-sysv-generator(8)
   Process: 1273 ExecStart=/etc/init.d/odoo start (code=exited, 
status=203/EXEC)
 
Dec 14 17:09:32 SRVODOO10 systemd[1]: Starting LSB: Start odoo daemon at 
boot ti
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Control process 
exited, code
Dec 14 17:09:32 SRVODOO10 systemd[1]: Failed to start LSB: Start odoo 
daemon at
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Unit entered failed 
state.
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Failed with result 
'exit-cod
lines 1-11/11 (END)...skipping...
● odoo.service - LSB: Start odoo daemon at boot time
    Loaded: loaded (/etc/init.d/odoo; bad; vendor preset: enabled)
    Active: failed (Result: exit-code) since Wed 2016-12-14 17:09:32 
CET; 23s ago
      Docs: man:systemd-sysv-generator(8)
   Process: 1273 ExecStart=/etc/init.d/odoo start (code=exited, 
status=203/EXEC)
 
Dec 14 17:09:32 SRVODOO10 systemd[1]: Starting LSB: Start odoo daemon at 
boot time...
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Control process 
exited, code=exited status=203
Dec 14 17:09:32 SRVODOO10 systemd[1]: Failed to start LSB: Start odoo 
daemon at boot time.
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Unit entered failed 
state.
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Failed with result 
'exit-code'.
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
...skipping...
● odoo.service - LSB: Start odoo daemon at boot time
    Loaded: loaded (/etc/init.d/odoo; bad; vendor preset: enabled)
    Active: failed (Result: exit-code) since Wed 2016-12-14 17:09:32 
CET; 23s ago
      Docs: man:systemd-sysv-generator(8)
   Process: 1273 ExecStart=/etc/init.d/odoo start (code=exited, 
status=203/EXEC)
 
Dec 14 17:09:32 SRVODOO10 systemd[1]: Starting LSB: Start odoo daemon at 
boot time...
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Control process 
exited, code=exited status=203
Dec 14 17:09:32 SRVODOO10 systemd[1]: Failed to start LSB: Start odoo 
daemon at boot time.
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Unit entered failed 
state.
Dec 14 17:09:32 SRVODOO10 systemd[1]: odoo.service: Failed with result 
'exit-code'.
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
lines 1-11/11 (END)
 
 
 
------
 
per vedere errori:
 
journalctl -xe
 
administrator@SRVODOO10:~$ journalctl -xe
Dec 14 22:29:16 SRVODOO10 systemd[1328]: odoo.service: Failed at step 
EXEC spawn
-- Subject: Process /etc/init.d/odoo could not be executed
-- Defined-By: systemd
-- Support: 
http://lists.freedesktop.org/mailman/listinfo/systemd-devel
 
--
-- The process /etc/init.d/odoo could not be executed and failed.
--
-- The error number returned by this process is 8.
Dec 14 22:29:16 SRVODOO10 systemd[1]: odoo.service: Control process 
exited, code
Dec 14 22:29:16 SRVODOO10 systemd[1]: Failed to start LSB: Start odoo 
daemon at
-- Subject: Unit odoo.service has failed
-- Defined-By: systemd
-- Support: 
http://lists.freedesktop.org/mailman/listinfo/systemd-devel
 
--
-- Unit odoo.service has failed.
--
-- The result is failed.
Dec 14 22:29:16 SRVODOO10 systemd[1]: odoo.service: Unit entered failed 
state.
Dec 14 22:29:16 SRVODOO10 systemd[1]: odoo.service: Failed with result 
'exit-cod
Dec 14 22:29:16 SRVODOO10 sudo[1323]: pam_unix(sudo:session): session 
closed for
Dec 14 22:29:55 SRVODOO10 sudo[1332]: administrator : TTY=pts/0 ; 
PWD=/home/admi
Dec 14 22:29:55 SRVODOO10 sudo[1332]: pam_unix(sudo:session): session 
opened for
Dec 14 22:30:19 SRVODOO10 sudo[1332]: pam_unix(sudo:session): session 
closed for
lines 2011-2033/2033 (END)
 
-----
 
Hai qualche idea ?
 
Grazie


 
Aggiornamento: con il file /etc/init.d/odoo  originale :
 
.....
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DAEMON=/usr/bin/odoo
NAME=odoo
DESC=odoo
CONFIG=/etc/odoo/odoo.conf
LOGFILE=/var/log/odoo/odoo-server.log
PIDFILE=/var/run/${NAME}.pid
USER=odoo
export LOGNAME=$USER
....
 
il servizio parte ma odoo no perche', probabilmente, il paramentro 
DAEMON=/usr/bin/odoo
 
non e' corretto, ed il demone giusto non parte.
 
con DAEMON=/opt/odoo/odoo-10.0/odoo-bin
 
non parte nemmeno il ervizio, quindi, forse, e' proprio sbagliato questo 
parametro.
 
Hai idea di cosa dovrei mettere ?
Grazie
 


 
Ultreriore aggiornamento :
 
Adesso il servizi parte anche con le modifiche :
 
 
DAEMON=/opt/odoo/odoo-10.0/odoo-bin
 
e
 
LOGFILE=/var/log/odoo/odoo.log
 
----
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DAEMON=/opt/odoo/odoo-10.0/odoo-bin
NAME=odoo
DESC=odoo
CONFIG=/etc/odoo/odoo.conf
LOGFILE=/var/log/odoo/odoo.log
PIDFILE=/var/run/${NAME}.pid
USER=odoo
export LOGNAME=$USER
----
 
administrator@SRVODOO10:~$ service odoo status
● odoo.service - LSB: Start odoo daemon at boot time
    Loaded: loaded (/etc/init.d/odoo; bad; vendor preset: enabled)
    Active: active (exited) since Thu 2016-12-15 05:53:52 CET; 1min 51s ago
      Docs: man:systemd-sysv-generator(8)
   Process: 1084 ExecStart=/etc/init.d/odoo start (code=exited, 
status=0/SUCCESS)
     Tasks: 0
    Memory: 0B
       CPU: 0
 
Dec 15 05:53:52 SRVODOO10 systemd[1]: Starting LSB: Start odoo daemon at 
boot ti
Dec 15 05:53:52 SRVODOO10 odoo[1084]: Starting odoo: ok
Dec 15 05:53:52 SRVODOO10 systemd[1]: Started LSB: Start odoo daemon at 
boot tim
lines 1-12/12 (END)
----
 
Ma il sito Odoo non si apre, devo dare, per forza, da terminale questi 
comandi :
 
cd /opt/odoo/odoo-10.0
 
./odoo-bin
 
----
 
che differenza c'e' tra questi comandi ed il servizio in /etc/init.d/ ?
 
Con il parametro : DAEMON=/opt/odoo/odoo-10.0/odoo-bin  non si fa la 
stessa cosa ?
 
Grazie
 
 

- il servizio sembra partire in effetti
lo puoi controllare col comando: ps aux|grep odoo
 
- eseguire:
cd /opt/odoo/odoo-10.0 
./odoo-bin 
 
equivale a eseguire /opt/odoo/odoo-10.0/odoo-bin
l'unica cosa che puo' cambiare e' l'utente che lo lancia
(se anteponi "sudo" lo esegui da root)


Partito !! era sbagliato un parametro nel file /etc/init.d/odoo :
 
Non era : CONFIG=/etc/odoo/odoo.conf  ma : CONFIG=/etc/odoo.conf
 
Il bello e' che nell' articolo che avevo seguito non ne faceva 
menzione.. :-(
 
Cmq tutto bene quello che finisce bene, e... soprattutto :  grazie a te !!!
 
Ciao