From 4ae0a73322a3b17e720afc59be3114c041c3c5b2 Mon Sep 17 00:00:00 2001 From: Paul Aswa Date: Tue, 6 Feb 2018 16:27:49 +0300 Subject: [PATCH] Use systemd daemon --- odoo_install_suse.sh | 145 ++++++++++++++----------------------------- 1 file changed, 47 insertions(+), 98 deletions(-) diff --git a/odoo_install_suse.sh b/odoo_install_suse.sh index 3efb815..631a762 100644 --- a/odoo_install_suse.sh +++ b/odoo_install_suse.sh @@ -1,6 +1,6 @@ #!/bin/bash ################################################################################ -# Script for installing Odoo 11 on OpenSUSE 42.3 (could be used for other version too) +# Script for installing Odoo 11 on OpenSUSE 42.2 (could be used for other version too) # Author: Yenthe Van Ginneken # Author: Aswa Paul #------------------------------------------------------------------------------- @@ -17,7 +17,7 @@ ##fixed parameters #odoo -OE_USER="odoo" +OE_USER="openerp" OE_HOME="/$OE_USER" OE_HOME_EXT="/$OE_USER/${OE_USER}-server" #The default port where this Odoo instance will run under (provided you use the command -c in the terminal) @@ -27,12 +27,13 @@ INSTALL_WKHTMLTOPDF="True" OE_PORT="8069" #Choose the Odoo version which you want to install. For example: 11.0, 10.0, 9.0 or saas-18. When using 'master' the master version will be installed. #IMPORTANT! This script contains extra libraries that are specifically needed for Odoo 11.0 -OE_VERSION="11.0" +OE_VERSION="7.0" # Set this to True if you want to install Odoo 11 Enterprise! IS_ENTERPRISE="True" #set the superadmin password OE_SUPERADMIN="admin" OE_CONFIG="${OE_USER}-server" +OE_SERVICE="${OE_USER}.service" ## ### WKHTMLTOPDF download links @@ -66,7 +67,7 @@ sudo zypper install python3 python3-pip python-devel python3-devel bzr python-su sudo zypper install -y libxslt echo -e "\n---- Install tool packages ----" -sudo zypper install wget git bzr python-pip -y +sudo zypper install -y wget git bzr python-pip echo -e "\n---- Install PyChart ----" sudo zypper addrepo https://download.opensuse.org/repositories/spins:invis:common/openSUSE_Leap_42.3/spins:invis:common.repo @@ -82,13 +83,13 @@ sudo pip3 install python-dateutil docutils feedparser jinja2 ldap lxml mako mock sudo pip3 install python-openid psycopg2 psutil babel pydot pyparsing reportlab simplejson pytz sudo pip3 install unittest2 vatnumber vobject pywebdav werkzeug xlwt pyyaml pypdf passlib decorator sudo pip3 install markupsafe pyusb pyserial paramiko utils pdftools requests xlsxwriter -sudo pip3 install psycogreen ofxparse gevent argparse pyOpenSSL>=16.2.0 -sudo pip3 install pypdf2 Babel Werkzeug html2text pillow ninja2 gdata XlsxWriter ebaysdk suds-jurko greenlet xlrd +sudo pip3 install psycogreen ofxparse gevent argparse pyOpenSSL>=16.2.0 lessc +sudo pip3 install pypdf2 Babel Werkzeug html2text Pillow>=3.4.2 ninja2 gdata XlsxWriter ebaysdk suds-jurko greenlet xlrd -echo -e "\n--- Install other required packages" -sudo zypper install node-clean-css -y -sudo zypper install node-less -y -sudo zypper install python-gevent -y +echo -e "\n--- Install other required packages" +sudo zypper install -y python-gevent + +sudo ln -s /usr/local/bin/lessc /usr/bin/lessc #-------------------------------------------------- # Install Wkhtmltopdf if needed @@ -110,9 +111,10 @@ else fi echo -e "\n---- Create ODOO system user ----" -sudo useradd -r --shell=/bin/bash -d $OE_HOME -m -g $OE_USER odoo +sudo groupadd $OE_USER +sudo useradd -r --shell /bin/bash -d $OE_HOME -m -g $OE_USER $OE_USER #The user should also be added to the sudo'ers group. -sudo useradd $OE_USER sudo +sudo usermod -a -G root $OE_USER # Edit appropriately echo -e "\n---- Create Log directory ----" sudo mkdir /var/log/$OE_USER @@ -122,9 +124,9 @@ sudo chown $OE_USER:$OE_USER /var/log/$OE_USER # Install ODOO #-------------------------------------------------- echo -e "\n==== Installing ODOO Server ====" -sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/odoo $OE_HOME_EXT/ +sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/odoo "$OE_HOME_EXT/" -if [ $IS_ENTERPRISE = "True" ]; then +if [ $IS_ENTERPRISE == "True" ]; then # Odoo Enterprise install! echo -e "\n--- Create symlink for node" sudo ln -s /usr/bin/nodejs /usr/bin/node @@ -151,8 +153,8 @@ if [ $IS_ENTERPRISE = "True" ]; then fi echo -e "\n---- Create custom module directory ----" -sudo su $OE_USER -c "mkdir $OE_HOME/custom" -sudo su $OE_USER -c "mkdir $OE_HOME/custom/addons" +sudo mkdir $OE_HOME/custom +sudo mkdir $OE_HOME/custom/addons echo -e "\n---- Setting permissions on home folder ----" sudo chown -R $OE_USER:$OE_USER $OE_HOME/* @@ -163,8 +165,12 @@ sudo touch /etc/${OE_CONFIG}.conf echo -e "* Creating server config file" sudo su root -c "printf '[options] \n; This is the password that allows database operations:\n' >> /etc/${OE_CONFIG}.conf" sudo su root -c "printf 'admin_passwd = ${OE_SUPERADMIN}\n' >> /etc/${OE_CONFIG}.conf" +sudo su root -c "printf 'db_host = False\n' >> /etc/${OE_CONFIG}.conf" +sudo su root -c "printf 'db_port = False\n' >> /etc/${OE_CONFIG}.conf" +sudo su root -c "printf 'db_user = ${OE_USER}\n' >> /etc/${OE_CONFIG}.conf" +sudo su root -c "printf 'db_password = False\n' >> /etc/${OE_CONFIG}.conf" sudo su root -c "printf 'xmlrpc_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" -sudo su root -c "printf 'logfile = /var/log/${OE_USER}/${OE_CONFIG}\n' >> /etc/${OE_CONFIG}.conf" +sudo su root -c "printf 'logfile = /var/log/${OE_USER}/${OE_CONFIG}.log\n' >> /etc/${OE_CONFIG}.conf" if [ $IS_ENTERPRISE = "True" ]; then sudo su root -c "printf 'addons_path=${OE_HOME}/enterprise/addons,${OE_HOME_EXT}/addons\n' >> /etc/${OE_CONFIG}.conf" else @@ -173,92 +179,35 @@ fi sudo chown $OE_USER:$OE_USER /etc/${OE_CONFIG}.conf sudo chmod 640 /etc/${OE_CONFIG}.conf -echo -e "* Create startup file" -sudo su root -c "echo '#!/bin/sh' >> $OE_HOME_EXT/start.sh" -sudo su root -c "echo 'sudo -u $OE_USER $OE_HOME_EXT/openerp-server --config=/etc/${OE_CONFIG}.conf' >> $OE_HOME_EXT/start.sh" -sudo chmod 755 $OE_HOME_EXT/start.sh - #-------------------------------------------------- -# Adding ODOO as a deamon (initscript) +# Adding ODOO as a deamon (systemd) #-------------------------------------------------- echo -e "* Create init file" -cat < ~/$OE_CONFIG -#!/bin/sh -### BEGIN INIT INFO -# Provides: $OE_CONFIG -# 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: Enterprise Business Applications -# Description: ODOO Business Applications -### END INIT INFO -PATH=/bin:/sbin:/usr/bin -DAEMON=$OE_HOME_EXT/odoo-bin -NAME=$OE_CONFIG -DESC=$OE_CONFIG -# Specify the user name (Default: odoo). -USER=$OE_USER -# Specify an alternate config file (Default: /etc/openerp-server.conf). -CONFIGFILE="/etc/${OE_CONFIG}.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}" >&2 -exit 1 -;; -esac -exit 0 -EOF -echo -e "* Security Init File" -sudo mv ~/$OE_CONFIG /etc/init.d/$OE_CONFIG -sudo chmod 755 /etc/init.d/$OE_CONFIG -sudo chown root: /etc/init.d/$OE_CONFIG +cat < ~/$OE_SERVICE +[Unit] +Description=Odoo Server Service +Requires=postgresql.service +After=network.target + +[Service] +Type=simple +User=$OE_USER +WorkingDirectory=$OE_HOME +ExecStart=$OE_HOME_EXT/$OE_CONFIG --config=/etc/openerp-server.conf + +[Install] +WantedBy=multi-user.target +EOF -echo -e "* Start ODOO on Startup" -sudo update-rc.d $OE_CONFIG defaults +echo -e "* Systemd Service" +sudo mv ~/$OE_SERVICE /etc/systemd/system/$OE_SERVICE +sudo chmod 664 /etc/systemd/system/$OE_SERVICE +sudo chown root: /etc/systemd/system/$OE_SERVICE echo -e "* Starting Odoo Service" -sudo su root -c "/etc/init.d/$OE_CONFIG start" +sudo systemctl start $OE_SERVICE echo "-----------------------------------------------------------" echo "Done! The Odoo server is up and running. Specifications:" echo "Port: $OE_PORT" @@ -266,7 +215,7 @@ echo "User service: $OE_USER" echo "User PostgreSQL: $OE_USER" echo "Code location: $OE_USER" echo "Addons folder: $OE_USER/$OE_CONFIG/addons/" -echo "Start Odoo service: sudo service $OE_CONFIG start" -echo "Stop Odoo service: sudo service $OE_CONFIG stop" -echo "Restart Odoo service: sudo service $OE_CONFIG restart" +echo "Start Odoo service: sudo systemctl start $OE_SERVICE" +echo "Stop Odoo service: sudo systemctl stop $OE_SERVICE" +echo "Restart Odoo service: sudo systemctl restart $OE_SERVICE" echo "-----------------------------------------------------------"