首页 文章

运行odoo作为服务

提问于
浏览
3

我在ubuntu 16.04上安装了odoo 10 . 现在我需要为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 runnig:

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

但我不能作为服务开始 .

1 回答

  • 2

    我想你在文件中遗漏了一件事 .

    请查看您缺少的部分,并在您的文件中粘贴初始化脚本如下所示 .

    #!/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命令 .

    在$ 后面的两行中你缺少“\”,这些行如下所示 .

    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服务 .

相关问题