From 42163174233e80ed2d75edf37bf87a3ba9dbfd79 Mon Sep 17 00:00:00 2001 From: Beshoy Date: Sat, 5 Oct 2024 20:56:53 +0300 Subject: [PATCH] [UPD] add install version 17 --- odoo_install.sh | 161 +++++++++++++----------------------------------- 1 file changed, 42 insertions(+), 119 deletions(-) diff --git a/odoo_install.sh b/odoo_install.sh index e750689..2a25043 100644 --- a/odoo_install.sh +++ b/odoo_install.sh @@ -1,7 +1,8 @@ #!/bin/bash ################################################################################ -# Script for installing Odoo on Ubuntu 16.04, 18.04 and 20.04 (could be used for other version too) +# Script for installing Odoo on Ubuntu 22.04 (could be used for other version too) # Author: Yenthe Van Ginneken +# Contributed by: Behsoy Nabeih https://linkedin.com/in/beshoynabeih #------------------------------------------------------------------------------- # This script will install Odoo on your Ubuntu 16.04 server. It can install multiple Odoo instances # in one Ubuntu because of the different xmlrpc_ports @@ -23,8 +24,7 @@ INSTALL_WKHTMLTOPDF="True" # Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.) OE_PORT="8069" # Choose the Odoo version which you want to install. For example: 13.0, 12.0, 11.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 13.0 -OE_VERSION="15.0" +OE_VERSION="17.0" # Set this to True if you want to install the Odoo enterprise version! IS_ENTERPRISE="False" # Set this to True if you want to install Nginx! @@ -47,18 +47,12 @@ ADMIN_EMAIL="odoo@example.com" ## === Ubuntu Trusty x64 & x32 === (for other distributions please replace these two links, ## in order to have correct version of wkhtmltopdf installed, for a danger note refer to ## https://github.com/odoo/odoo/wiki/Wkhtmltopdf ): -## https://www.odoo.com/documentation/13.0/setup/install.html#debian-ubuntu +## https://www.odoo.com/documentation/17.0/administration/on_premise/source.html -WKHTMLTOX_X64=https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.trusty_amd64.deb -WKHTMLTOX_X32=https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.trusty_i386.deb #-------------------------------------------------- # Update Server #-------------------------------------------------- echo -e "\n---- Update Server ----" -# universe package is for Ubuntu 18.x -sudo add-apt-repository universe -# libpng12-0 dependency for wkhtmltopdf -sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ xenial main" sudo apt-get update sudo apt-get upgrade -y @@ -66,7 +60,7 @@ sudo apt-get upgrade -y # Install PostgreSQL Server #-------------------------------------------------- echo -e "\n---- Install PostgreSQL Server ----" -sudo apt-get install postgresql postgresql-server-dev-all -y +sudo apt-get install postgresql postgresql-client -y echo -e "\n---- Creating the ODOO PostgreSQL User ----" sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true @@ -75,7 +69,7 @@ sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true # Install Dependencies #-------------------------------------------------- echo -e "\n--- Installing Python 3 + pip3 --" -sudo apt-get install git python3 python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libpng12-0 libjpeg-dev gdebi -y +sudo apt install python3-pip libldap2-dev libpq-dev libsasl2-dev -y echo -e "\n---- Install python packages/requirements ----" sudo -H pip3 install -r https://github.com/odoo/odoo/raw/${OE_VERSION}/requirements.txt @@ -88,25 +82,18 @@ sudo npm install -g rtlcss # Install Wkhtmltopdf if needed #-------------------------------------------------- if [ $INSTALL_WKHTMLTOPDF = "True" ]; then - echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 13 ----" + echo -e "\n---- Install wkhtmltopdf----" #pick up correct one from x64 & x32 versions: - if [ "`getconf LONG_BIT`" == "64" ];then - _url=$WKHTMLTOX_X64 - else - _url=$WKHTMLTOX_X32 - fi - sudo wget $_url - sudo gdebi --n `basename $_url` - sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin - sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin + WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb + sudo wget $WKHTMLTOX_X64 + sudo apt install ./wkhtmltox_0.12.6.1-3.jammy_amd64.deb -y + sudo rm wkhtmltox_0.12.6.1-3.jammy_amd64.deb else echo "Wkhtmltopdf isn't installed due to the choice of the user!" fi echo -e "\n---- Create ODOO system user ----" -sudo adduser --system --quiet --shell=/bin/bash --home=$OE_HOME --gecos 'ODOO' --group $OE_USER -#The user should also be added to the sudo'ers group. -sudo adduser $OE_USER sudo +sudo adduser --system --quiet --shell=/bin/bash --home=$OE_HOME --group $OE_USER echo -e "\n---- Create Log directory ----" sudo mkdir /var/log/$OE_USER @@ -116,38 +103,30 @@ 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://github.com/odoo/odoo.git $OE_HOME_EXT if [ $IS_ENTERPRISE = "True" ]; then # Odoo Enterprise install! sudo pip3 install psycopg2-binary pdfminer.six - echo -e "\n--- Create symlink for node" - sudo ln -s /usr/bin/nodejs /usr/bin/node - sudo su $OE_USER -c "mkdir $OE_HOME/enterprise" - sudo su $OE_USER -c "mkdir $OE_HOME/enterprise/addons" - GITHUB_RESPONSE=$(sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/enterprise "$OE_HOME/enterprise/addons" 2>&1) + GITHUB_RESPONSE=$(sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/enterprise "$OE_HOME" 2>&1) while [[ $GITHUB_RESPONSE == *"Authentication"* ]]; do echo "------------------------WARNING------------------------------" echo "Your authentication with Github has failed! Please try again." - printf "In order to clone and install the Odoo enterprise version you \nneed to be an offical Odoo partner and you need access to\nhttp://github.com/odoo/enterprise.\n" + printf "InOdoo order to clone and install the Odoo enterprise version you \nneed to be an offical Odoo partner and you need access to\nhttp://github.com/odoo/enterprise.\n" echo "TIP: Press ctrl+c to stop this script." echo "-------------------------------------------------------------" echo " " GITHUB_RESPONSE=$(sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/enterprise "$OE_HOME/enterprise/addons" 2>&1) done - echo -e "\n---- Added Enterprise code under $OE_HOME/enterprise/addons ----" + echo -e "\n---- Added Enterprise code under $OE_HOME/enterprise ----" echo -e "\n---- Installing Enterprise specific libraries ----" - sudo -H pip3 install num2words ofxparse dbfread ebaysdk firebase_admin pyOpenSSL + sudo -H pip3 install num2words ofxparse dbfread ebaysdk google_auth pyOpenSSL zeep pyjwt cryptography sudo npm install -g less sudo npm install -g less-plugin-clean-css 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" - echo -e "\n---- Setting permissions on home folder ----" sudo chown -R $OE_USER:$OE_USER $OE_HOME/* @@ -162,104 +141,48 @@ if [ $GENERATE_RANDOM_PASSWORD = "True" ]; then OE_SUPERADMIN=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) fi sudo su root -c "printf 'admin_passwd = ${OE_SUPERADMIN}\n' >> /etc/${OE_CONFIG}.conf" -if [ $OE_VERSION > "11.0" ];then - sudo su root -c "printf 'http_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" -else - sudo su root -c "printf 'xmlrpc_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" -fi +sudo su root -c "printf 'http_port = ${OE_PORT}\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" + sudo su root -c "printf 'addons_path=${OE_HOME}/enterprise,${OE_HOME_EXT}/addons\n' >> /etc/${OE_CONFIG}.conf" else - sudo su root -c "printf 'addons_path=${OE_HOME_EXT}/addons,${OE_HOME}/custom/addons\n' >> /etc/${OE_CONFIG}.conf" + sudo su root -c "printf 'addons_path=${OE_HOME_EXT}/addons\n' >> /etc/${OE_CONFIG}.conf" 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/odoo-bin --config=/etc/${OE_CONFIG}.conf' >> $OE_HOME_EXT/start.sh" -sudo chmod 755 $OE_HOME_EXT/start.sh - #-------------------------------------------------- # Adding ODOO as a deamon (initscript) #-------------------------------------------------- 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=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/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 +[Unit] +Description=$OE_CONFIG +Requires=postgresql.service +After=network.target postgresql.service + +[Service] +Type=simple +SyslogIdentifier=$OE_CONFIG +PermissionsStartOnly=true +User=$OE_USER +Group=$OE_USER +ExecStart=python3 ${OE_HOME_EXT}/odoo-bin -c /etc/${OE_CONFIG}.conf +StandardOutput=journal+console + +[Install] +WantedBy=multi-user.target 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 +sudo mv ~/$OE_CONFIG /etc/systemd/system/$OE_CONFIG.service +sudo chmod 755 /etc/systemd/system/$OE_CONFIG.service +sudo chown root: /etc/systemd/system/$OE_CONFIG.service -echo -e "* Start ODOO on Startup" -sudo update-rc.d $OE_CONFIG defaults +echo -e "* restart daemon" +sudo systemctl daemon-reload #-------------------------------------------------- # Install Nginx if needed @@ -365,7 +288,7 @@ else fi echo -e "* Starting Odoo Service" -sudo su root -c "/etc/init.d/$OE_CONFIG start" +sudo sudo systemctl enable --now $OE_CONFIG.service echo "-----------------------------------------------------------" echo "Done! The Odoo server is up and running. Specifications:" echo "Port: $OE_PORT"