2017-07-19 132 views
3

我已經在ubuntu 16.04上安裝了odoo 10。現在我需要爲odoo創建一個服務。我曾嘗試下面的步驟,但得到一個錯誤:運行odoo作爲服務

Starting odoo-server: start-stop-daemon: --start needs --exec or --startas 
Try 'start-stop-daemon --help' for more information. 
/etc/init.d/odoo-server: 39: /etc/init.d/odoo-server: --chuid: not found 
odoo-server. 

odoo服務器

#!/bin/sh 
### BEGIN INIT INFO 
# Provides: odoo-server 
# Required-Start: $remote_fs $syslog 
# Required-Stop: $remote_fs $syslog 
# Should-Start: $network 
# Should-Stop: $network 
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
# Short-Description: Odoo ERP 
# Description: Odoo is a complete ERP business solution. 
### END INIT INFO 
PATH=/bin:/sbin:/usr/bin 
# Change the Odoo source files location according your needs. 
DAEMON=/opt/odoo/odoo-10.0/odoo-bin 
# Use the name convention of your choice 
NAME=odoo-server 
DESC=odoo-server 
# Specify the user name (Default: odoo). 
USER=odoo 
# Specify an alternate config file (Default: /etc/odoo-server.conf). 
CONFIGFILE="/etc/odoo.conf" 
# pidfile 
PIDFILE=/var/run/$NAME.pid 
# Additional options that are passed to the Daemon. 

DAEMON_OPTS="-c $CONFIGFILE" 
[ -x $DAEMON ] || exit 0 
[ -f $CONFIGFILE ] || exit 0 
checkpid() { 
[ -f $PIDFILE ] || return 1 
pid=`cat $PIDFILE` 
[ -d /proc/$pid ] && return 0 
return 1 
} 
case "${1}" in 
    start) 
echo -n "Starting ${DESC}: " 
start-stop-daemon --start --quiet --pidfile ${PIDFILE} 
--chuid ${USER} --background --make-pidfile \ 
--exec ${DAEMON} -- ${DAEMON_OPTS} 
echo "${NAME}." 
;; 
stop) 
echo -n "Stopping ${DESC}: " 
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \ 
--oknodo 
echo "${NAME}." 
;; 
restart|force-reload) 
echo -n "Restarting ${DESC}: " 
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \ 
--oknodo 
sleep 1 
start-stop-daemon --start --quiet --pidfile ${PIDFILE} 
--chuid ${USER} --background --make-pidfile \ 
--exec ${DAEMON} -- ${DAEMON_OPTS} 
echo "${NAME}." 
;; 
*) 
N=/etc/init.d/${NAME} 
echo "Usage: ${NAME} {start|stop|restart|force-reload}" 
exit 1 
;; 
esac 
exit 0 

我執行此命令:

chmod 755 /etc/init.d/odoo-server 

chown ubuntu: /etc/init.d/openerp-server 

用戶:odoo

配置文件:/etc/odoo.conf

Odoo運行過程中出現像這樣:

sudo su - odoo -s /bin/bash ~/odoo-10.0/odoo-bin

但我不能作爲服務開始。

回答

2

我認爲你在文件中缺少一件事。

請仔細看看你的缺失部分,粘貼init腳本就像下面的文件一樣。

#!/bin/sh 
### BEGIN INIT INFO 
# Provides: odoo-server 
# Required-Start: $remote_fs $syslog 
# Required-Stop: $remote_fs $syslog 
# Should-Start: $network 
# Should-Stop: $network 
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
# Short-Description: Odoo ERP 
# Description: Odoo is a complete ERP business solution. 
### END INIT INFO 
PATH=/bin:/sbin:/usr/bin 
# Change the Odoo source files location according your needs. 
DAEMON=/opt/odoo/odoo-10.0/odoo-bin 
# Use the name convention of your choice 
NAME=odoo-server 
DESC=odoo-server 
# Specify the user name (Default: odoo). 
USER=odoo 
# Specify an alternate config file (Default: /etc/odoo-server.conf). 
CONFIGFILE="/etc/odoo.conf" 
# pidfile 
PIDFILE=/var/run/$NAME.pid 
# Additional options that are passed to the Daemon. 

DAEMON_OPTS="-c $CONFIGFILE" 
[ -x $DAEMON ] || exit 0 
[ -f $CONFIGFILE ] || exit 0 
checkpid() { 
[ -f $PIDFILE ] || return 1 
pid=`cat $PIDFILE` 
[ -d /proc/$pid ] && return 0 
return 1 
} 
case "${1}" in 
    start) 
echo -n "Starting ${DESC}: " 
start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ 
--chuid ${USER} --background --make-pidfile \ 
--exec ${DAEMON} -- ${DAEMON_OPTS} 
echo "${NAME}." 
;; 
stop) 
echo -n "Stopping ${DESC}: " 
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \ 
--oknodo 
echo "${NAME}." 
;; 
restart|force-reload) 
echo -n "Restarting ${DESC}: " 
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \ 
--oknodo 
sleep 1 
start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ 
--chuid ${USER} --background --make-pidfile \ 
--exec ${DAEMON} -- ${DAEMON_OPTS} 
echo "${NAME}." 
;; 
*) 
N=/etc/init.d/${NAME} 
echo "Usage: ${NAME} {start|stop|restart|force-reload}" 
exit 1 
;; 

esac 
exit 0 

我覺得你錯過了一些重要的部分「\」,這是對於unix命令,當一個命令多於一行時。

在$ {PIDFILE}後面的兩行內容中缺少「\」,這些行如下所示。

1) "Inside Start case" : 
start-stop-daemon --start --quiet --pidfile ${PIDFILE} 
--chuid ${USER} --background --make-pidfile \ 
--exec ${DAEMON} -- ${DAEMON_OPTS} 

2) "Inside Restart Case" : 
start-stop-daemon --start --quiet --pidfile ${PIDFILE} 
--chuid ${USER} --background --make-pidfile \ 
--exec ${DAEMON} -- ${DAEMON_OPTS} 

這就是爲什麼你得到如下錯誤:

Starting odoo-server: start-stop-daemon: --start needs --exec or --startas 
Try 'start-stop-daemon --help' for more information. 
/etc/init.d/odoo-server: 39: /etc/init.d/odoo-server: --chuid: not found 
odoo-server. 

我希望你得到的東西,並且可以使用服務成功運行Odoo。