Use systemd daemon

pull/87/head
Paul Aswa 8 years ago
parent bf50956675
commit 4ae0a73322

@ -1,6 +1,6 @@
#!/bin/bash #!/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: Yenthe Van Ginneken
# Author: Aswa Paul # Author: Aswa Paul
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
@ -17,7 +17,7 @@
##fixed parameters ##fixed parameters
#odoo #odoo
OE_USER="odoo" OE_USER="openerp"
OE_HOME="/$OE_USER" OE_HOME="/$OE_USER"
OE_HOME_EXT="/$OE_USER/${OE_USER}-server" 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) #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" 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. #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 #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! # Set this to True if you want to install Odoo 11 Enterprise!
IS_ENTERPRISE="True" IS_ENTERPRISE="True"
#set the superadmin password #set the superadmin password
OE_SUPERADMIN="admin" OE_SUPERADMIN="admin"
OE_CONFIG="${OE_USER}-server" OE_CONFIG="${OE_USER}-server"
OE_SERVICE="${OE_USER}.service"
## ##
### WKHTMLTOPDF download links ### 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 sudo zypper install -y libxslt
echo -e "\n---- Install tool packages ----" 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 ----" echo -e "\n---- Install PyChart ----"
sudo zypper addrepo https://download.opensuse.org/repositories/spins:invis:common/openSUSE_Leap_42.3/spins:invis:common.repo 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 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 unittest2 vatnumber vobject pywebdav werkzeug xlwt pyyaml pypdf passlib decorator
sudo pip3 install markupsafe pyusb pyserial paramiko utils pdftools requests xlsxwriter 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 psycogreen ofxparse gevent argparse pyOpenSSL>=16.2.0 lessc
sudo pip3 install pypdf2 Babel Werkzeug html2text pillow ninja2 gdata XlsxWriter ebaysdk suds-jurko greenlet xlrd 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" echo -e "\n--- Install other required packages"
sudo zypper install node-clean-css -y sudo zypper install -y python-gevent
sudo zypper install node-less -y
sudo zypper install python-gevent -y sudo ln -s /usr/local/bin/lessc /usr/bin/lessc
#-------------------------------------------------- #--------------------------------------------------
# Install Wkhtmltopdf if needed # Install Wkhtmltopdf if needed
@ -110,9 +111,10 @@ else
fi fi
echo -e "\n---- Create ODOO system user ----" 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. #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 ----" echo -e "\n---- Create Log directory ----"
sudo mkdir /var/log/$OE_USER sudo mkdir /var/log/$OE_USER
@ -122,9 +124,9 @@ sudo chown $OE_USER:$OE_USER /var/log/$OE_USER
# Install ODOO # Install ODOO
#-------------------------------------------------- #--------------------------------------------------
echo -e "\n==== Installing ODOO Server ====" 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! # Odoo Enterprise install!
echo -e "\n--- Create symlink for node" echo -e "\n--- Create symlink for node"
sudo ln -s /usr/bin/nodejs /usr/bin/node sudo ln -s /usr/bin/nodejs /usr/bin/node
@ -151,8 +153,8 @@ if [ $IS_ENTERPRISE = "True" ]; then
fi fi
echo -e "\n---- Create custom module directory ----" echo -e "\n---- Create custom module directory ----"
sudo su $OE_USER -c "mkdir $OE_HOME/custom" sudo mkdir $OE_HOME/custom
sudo su $OE_USER -c "mkdir $OE_HOME/custom/addons" sudo mkdir $OE_HOME/custom/addons
echo -e "\n---- Setting permissions on home folder ----" echo -e "\n---- Setting permissions on home folder ----"
sudo chown -R $OE_USER:$OE_USER $OE_HOME/* 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" 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 '[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 '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 '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 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" sudo su root -c "printf 'addons_path=${OE_HOME}/enterprise/addons,${OE_HOME_EXT}/addons\n' >> /etc/${OE_CONFIG}.conf"
else else
@ -173,92 +179,35 @@ fi
sudo chown $OE_USER:$OE_USER /etc/${OE_CONFIG}.conf sudo chown $OE_USER:$OE_USER /etc/${OE_CONFIG}.conf
sudo chmod 640 /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" echo -e "* Create init file"
cat <<EOF > ~/$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" cat <<EOF > ~/$OE_SERVICE
sudo mv ~/$OE_CONFIG /etc/init.d/$OE_CONFIG [Unit]
sudo chmod 755 /etc/init.d/$OE_CONFIG Description=Odoo Server Service
sudo chown root: /etc/init.d/$OE_CONFIG 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" echo -e "* Systemd Service"
sudo update-rc.d $OE_CONFIG defaults 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" echo -e "* Starting Odoo Service"
sudo su root -c "/etc/init.d/$OE_CONFIG start" sudo systemctl start $OE_SERVICE
echo "-----------------------------------------------------------" echo "-----------------------------------------------------------"
echo "Done! The Odoo server is up and running. Specifications:" echo "Done! The Odoo server is up and running. Specifications:"
echo "Port: $OE_PORT" echo "Port: $OE_PORT"
@ -266,7 +215,7 @@ echo "User service: $OE_USER"
echo "User PostgreSQL: $OE_USER" echo "User PostgreSQL: $OE_USER"
echo "Code location: $OE_USER" echo "Code location: $OE_USER"
echo "Addons folder: $OE_USER/$OE_CONFIG/addons/" echo "Addons folder: $OE_USER/$OE_CONFIG/addons/"
echo "Start Odoo service: sudo service $OE_CONFIG start" echo "Start Odoo service: sudo systemctl start $OE_SERVICE"
echo "Stop Odoo service: sudo service $OE_CONFIG stop" echo "Stop Odoo service: sudo systemctl stop $OE_SERVICE"
echo "Restart Odoo service: sudo service $OE_CONFIG restart" echo "Restart Odoo service: sudo systemctl restart $OE_SERVICE"
echo "-----------------------------------------------------------" echo "-----------------------------------------------------------"

Loading…
Cancel
Save