diff --git a/README.md b/README.md index 758ebc7..f702d99 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ There are a few things you can configure, this is the most used list:
```OE_PORT``` is the port where Odoo should run on, for example 8069.
```OE_VERSION``` is the Odoo version to install, for example ```11.0``` for Odoo V11.
```IS_ENTERPRISE``` will install the Enterprise version on top of ```11.0``` if you set it to ```True```, set it to ```False``` if you want the community version of Odoo 11.
+```INSTALL_NGINX``` set to ```False``` if you do not want to install Nginx, if you want to install it you should set it to ```True```.
```OE_SUPERADMIN``` is the master password for this Odoo installation.
#### 3. Make the script executable diff --git a/odoo_install.sh b/odoo_install.sh index c69c356..0ca3990 100644 --- a/odoo_install.sh +++ b/odoo_install.sh @@ -29,6 +29,8 @@ OE_PORT="8069" OE_VERSION="11.0" # Set this to True if you want to install Odoo 11 Enterprise! IS_ENTERPRISE="False" +# Set this to True if you want to install Nginx! +INSTALL_NGINX="True" #set the superadmin password OE_SUPERADMIN="admin" OE_CONFIG="${OE_USER}-server" @@ -36,7 +38,7 @@ OE_CONFIG="${OE_USER}-server" ## ### WKHTMLTOPDF download links ## === Ubuntu Trusty x64 & x32 === (for other distributions please replace these two links, -## in order to have correct version of wkhtmltox installed, for a danger note refer to +## in order to have correct version of wkhtmltox installed, for a danger note refer to ## https://www.odoo.com/documentation/8.0/setup/install.html#deb ): WKHTMLTOX_X64=https://downloads.wkhtmltopdf.org/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb WKHTMLTOX_X32=https://downloads.wkhtmltopdf.org/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-i386.deb @@ -61,14 +63,14 @@ 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 python3 python3-pip +sudo apt-get install python3 python3-pip -y echo -e "\n---- Install tool packages ----" sudo apt-get install wget git bzr python-pip gdebi-core -y echo -e "\n---- Install python packages ----" sudo apt-get install python-pypdf2 python-dateutil python-feedparser python-ldap python-libxslt1 python-lxml python-mako python-openid python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi python-docutils python-psutil python-mock python-unittest2 python-jinja2 python-pypdf python-decorator python-requests python-passlib python-pil -y -sudo pip3 install pypdf2 Babel passlib Werkzeug decorator python-dateutil pyyaml psycopg2 psutil html2text docutils lxml pillow reportlab ninja2 requests gdata XlsxWriter vobject python-openid pyparsing pydot mock mako Jinja2 ebaysdk feedparser xlwt psycogreen suds-jurko pytz pyusb greenlet xlrd +sudo pip3 install pypdf2 Babel passlib Werkzeug decorator python-dateutil pyyaml psycopg2 psutil html2text docutils lxml pillow reportlab ninja2 requests gdata XlsxWriter vobject python-openid pyparsing pydot mock mako Jinja2 ebaysdk feedparser xlwt psycogreen suds-jurko pytz pyusb greenlet xlrd echo -e "\n---- Install python libraries ----" # This is for compatibility with Ubuntu 16.04. Will work on 14.04, 15.04 and 16.04 @@ -148,12 +150,15 @@ sudo chown -R $OE_USER:$OE_USER $OE_HOME/* echo -e "* Create server config file" + 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 'xmlrpc_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" +sudo su root -c "printf 'proxy_mode = True\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 @@ -248,6 +253,85 @@ sudo update-rc.d $OE_CONFIG defaults echo -e "* Starting Odoo Service" sudo su root -c "/etc/init.d/$OE_CONFIG start" +#-------------------------------------------------- +# Install Nginx if needed +#-------------------------------------------------- +if [ $INSTALL_NGINX = "True" ]; then + echo -e "\n---- Installing and setting up Nginx ----" + sudo apt install nginx -y + cat < ~/odoo + server { + listen 80; + + # set proper server name after domain set + server_name _; + + # Add Headers for odoo proxy mode + proxy_set_header X-Forwarded-Host \$host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto \$scheme; + proxy_set_header X-Real-IP \$remote_addr; + + # odoo log files + access_log /var/log/nginx/odoo-access.log; + error_log /var/log/nginx/odoo-error.log; + + # increase proxy buffer size + proxy_buffers 16 64k; + proxy_buffer_size 128k; + + proxy_read_timeout 720s; + proxy_connect_timeout 720s; + proxy_send_timeout 720s; + + # force timeouts if the backend dies + proxy_next_upstream error timeout invalid_header http_500 http_502 + http_503; + + types { + text/less less; + } + + # enable data compression + gzip on; + gzip_min_length 1100; + gzip_buffers 4 32k; + gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png; + gzip_vary on; + + client_max_body_size 0; + + location / { + proxy_pass http://127.0.0.1:8069; + # by default, do not forward anything + proxy_redirect off; + } + + location /longpolling { + proxy_pass http://127.0.0.1:8072; + } + + # cache some static data in memory for 60mins. + location ~ /[a-zA-Z0-9_-]*/static/ { + proxy_cache_valid 200 302 60m; + proxy_cache_valid 404 1m; + proxy_buffering on; + expires 864000; + proxy_pass http://127.0.0.1:8069; + } + } +EOF + + sudo mv ~/odoo /etc/nginx/sites-available/ + sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo + sudo rm /etc/nginx/sites-enabled/default + sudo service nginx reload + +else + echo "Nginx isn't installed due to the choice of the user!" +fi + + echo "-----------------------------------------------------------" echo "Done! The Odoo server is up and running. Specifications:" echo "Port: $OE_PORT" @@ -258,4 +342,7 @@ 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" +if [ $INSTALL_NGINX = "True" ]; then + echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-available/odoo" +fi echo "-----------------------------------------------------------" diff --git a/odoo_install_nginx.sh b/odoo_install_nginx.sh deleted file mode 100644 index a8e34a7..0000000 --- a/odoo_install_nginx.sh +++ /dev/null @@ -1,335 +0,0 @@ -#!/bin/bash -################################################################################ -# Script for installing Odoo on Ubuntu 14.04, 15.04, 16.04 and 18.04 (could be used for other version too) -# Author: Yenthe Van Ginneken -#------------------------------------------------------------------------------- -# 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 -#------------------------------------------------------------------------------- -# Make a new file: -# sudo nano odoo-install.sh -# Place this content in it and then make the file executable: -# sudo chmod +x odoo-install.sh -# Execute the script to install Odoo: -# ./odoo-install -################################################################################ - -##fixed parameters -#odoo -OE_USER="odoo" -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) -#Set to true if you want to install it, false if you don't need it or have it already installed. -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: 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" -# Set this to True if you want to install Odoo 11 Enterprise! -IS_ENTERPRISE="False" -#set the superadmin password -OE_SUPERADMIN="admin" -OE_CONFIG="${OE_USER}-server" - -## -### WKHTMLTOPDF download links -## === Ubuntu Trusty x64 & x32 === (for other distributions please replace these two links, -## in order to have correct version of wkhtmltox installed, for a danger note refer to -## https://www.odoo.com/documentation/8.0/setup/install.html#deb ): -WKHTMLTOX_X64=https://downloads.wkhtmltopdf.org/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb -WKHTMLTOX_X32=https://downloads.wkhtmltopdf.org/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-i386.deb - -#-------------------------------------------------- -# Update Server -#-------------------------------------------------- -echo -e "\n---- Update Server ----" -sudo apt-get update -sudo apt-get upgrade -y - -#-------------------------------------------------- -# Install PostgreSQL Server -#-------------------------------------------------- -echo -e "\n---- Install PostgreSQL Server ----" -sudo apt-get install postgresql -y - -echo -e "\n---- Creating the ODOO PostgreSQL User ----" -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 python3 python3-pip -y - -echo -e "\n---- Install tool packages ----" -sudo apt-get install wget git bzr python-pip gdebi-core -y - -echo -e "\n---- Install python packages ----" -sudo apt-get install python-pypdf2 python-dateutil python-feedparser python-ldap python-libxslt1 python-lxml python-mako python-openid python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi python-docutils python-psutil python-mock python-unittest2 python-jinja2 python-pypdf python-decorator python-requests python-passlib python-pil -y -sudo pip3 install pypdf2 Babel passlib Werkzeug decorator python-dateutil pyyaml psycopg2 psutil html2text docutils lxml pillow reportlab ninja2 requests gdata XlsxWriter vobject python-openid pyparsing pydot mock mako Jinja2 ebaysdk feedparser xlwt psycogreen suds-jurko pytz pyusb greenlet xlrd - -echo -e "\n---- Install python libraries ----" -# This is for compatibility with Ubuntu 16.04. Will work on 14.04, 15.04 and 16.04 -sudo apt-get install python3-suds - -echo -e "\n--- Install other required packages" -sudo apt-get install node-clean-css -y -sudo apt-get install node-less -y -sudo apt-get install python-gevent -y - -#-------------------------------------------------- -# Install Wkhtmltopdf if needed -#-------------------------------------------------- -if [ $INSTALL_WKHTMLTOPDF = "True" ]; then - echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 11 ----" - #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 -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 - -echo -e "\n---- Create Log directory ----" -sudo mkdir /var/log/$OE_USER -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/ - -if [ $IS_ENTERPRISE = "True" ]; then - # Odoo Enterprise install! - 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) - 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" - 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---- Installing Enterprise specific libraries ----" - sudo pip3 install num2words ofxparse - sudo apt-get install nodejs npm - 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/* - -echo -e "* Create server config file" - - -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 'xmlrpc_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" -sudo su root -c "printf 'proxy_mode = True\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 - sudo su root -c "printf 'addons_path=${OE_HOME_EXT}/addons,${OE_HOME}/custom/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/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) -#-------------------------------------------------- - -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 - -echo -e "* Start ODOO on Startup" -sudo update-rc.d $OE_CONFIG defaults - -echo -e "* Starting Odoo Service" -sudo su root -c "/etc/init.d/$OE_CONFIG start" -echo "*installing and setting up nginx" -sudo apt install nginx -y -cat < ~/odoo -server { - listen 80; - - # set proper server name after domain set - server_name _; - - # Add Headers for odoo proxy mode - proxy_set_header X-Forwarded-Host \$host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto \$scheme; - proxy_set_header X-Real-IP \$remote_addr; - - # odoo log files - access_log /var/log/nginx/odoo-access.log; - error_log /var/log/nginx/odoo-error.log; - - # increase proxy buffer size - proxy_buffers 16 64k; - proxy_buffer_size 128k; - - proxy_read_timeout 720s; - proxy_connect_timeout 720s; - proxy_send_timeout 720s; - - # force timeouts if the backend dies - proxy_next_upstream error timeout invalid_header http_500 http_502 - http_503; - - types { - text/less less; - } - - # enable data compression - gzip on; - gzip_min_length 1100; - gzip_buffers 4 32k; - gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png; - gzip_vary on; - - client_max_body_size 0; - - location / { - proxy_pass http://127.0.0.1:8069; - # by default, do not forward anything - proxy_redirect off; - } - - location /longpolling { - proxy_pass http://127.0.0.1:8072; - } - - # cache some static data in memory for 60mins. - location ~ /[a-zA-Z0-9_-]*/static/ { - proxy_cache_valid 200 302 60m; - proxy_cache_valid 404 1m; - proxy_buffering on; - expires 864000; - proxy_pass http://127.0.0.1:8069; - } -} -EOF - -sudo mv ~/odoo /etc/nginx/sites-available/ -sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo -sudo rm /etc/nginx/sites-enabled/default -sudo service nginx reload - -echo "-----------------------------------------------------------" -echo "Done! The Odoo server is up and running. Specifications:" -echo "Port: $OE_PORT" -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 "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-available/odoo" -echo "-----------------------------------------------------------" -