diff --git a/README.md b/README.md index 0bb9902..aceef78 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ There are a few things you can configure, this is the most used list:
```OE_VERSION``` is the Odoo version to install, for example ```13.0``` for Odoo V13.
```IS_ENTERPRISE``` will install the Enterprise version on top of ```13.0``` if you set it to ```True```, set it to ```False``` if you want the community version of Odoo 13.
```OE_SUPERADMIN``` is the master password for this Odoo installation.
+```INSTALL_NGINX``` is set to ```False``` by default. Set this to ```True``` if you want to install Nginx.
+```WEBSITE_NAME``` Set the website name here for nginx configuration
#### 3. Make the script executable ``` diff --git a/odoo_install.sh b/odoo_install.sh index 7e519a4..6a106b8 100644 --- a/odoo_install.sh +++ b/odoo_install.sh @@ -17,30 +17,37 @@ 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. +#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.) +#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="13.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! +INSTALL_NGINX="False" # Set the superadmin password - if GENERATE_RANDOM_PASSWORD is set to "True" we will automatically generate a random password, otherwise we use this one OE_SUPERADMIN="admin" # Set to "True" to generate a random password, "False" to use the variable in OE_SUPERADMIN GENERATE_RANDOM_PASSWORD="True" OE_CONFIG="${OE_USER}-server" +# Set the website name +WEBSITE_NAME="_" +# Set the default Odoo longpolling port (you still have to use -c /etc/odoo-server.conf for example to use this.) +LONGPOLLING_PORT="8072" ## ### WKHTMLTOPDF download links ## === 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 ): +## 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 ): +## https://www.odoo.com/documentation/12.0/setup/install.html#debian-ubuntu + 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 #-------------------------------------------------- @@ -90,7 +97,7 @@ if [ $INSTALL_WKHTMLTOPDF = "True" ]; then 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!" + echo "Wkhtmltopdf isn't installed due to choice of the user!" fi echo -e "\n---- Create ODOO system user ----" @@ -112,8 +119,7 @@ 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" + sudo su $OE_USER -c "mkdir -p $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 @@ -134,14 +140,14 @@ 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 su $OE_USER -c "mkdir -p $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" @@ -150,8 +156,13 @@ 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" -sudo su root -c "printf 'xmlrpc_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" +if [ $OE_VERSION == "12.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 '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 @@ -244,6 +255,88 @@ sudo chown root: /etc/init.d/$OE_CONFIG echo -e "* Start ODOO on Startup" sudo update-rc.d $OE_CONFIG defaults +#-------------------------------------------------- +# Install Nginx if needed +#-------------------------------------------------- +if [ $INSTALL_NGINX = "True" ]; then + echo -e "\n---- Installing and setting up Nginx ----" + sudo apt install nginx -y + cat < ~/$OE_USER + server { + listen 80; + + # set proper server name after domain set + server_name $WEBSITE_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; + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-XSS-Protection "1; mode=block"; + + # odoo log files + access_log /var/log/nginx/$OE_USER-access.log; + error_log /var/log/nginx/$OE_USER-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; + text/scss scss; + } + + # 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_header_buffer_size 4k; + large_client_header_buffers 4 64k; + client_max_body_size 0; + + location / { + proxy_pass http://127.0.0.1:$OE_PORT; + # by default, do not forward anything + proxy_redirect off; + } + + location /longpolling { + proxy_pass http://127.0.0.1:$LONGPOLLING_PORT; + } + + # 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:$OE_PORT; + } + } +EOF + + sudo mv ~/$OE_USER /etc/nginx/sites-available/ + sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/$OE_USER + sudo rm /etc/nginx/sites-enabled/default + sudo service nginx reload + sudo su root -c "printf 'proxy_mode = True\n' >> /etc/${OE_CONFIG}.conf" + echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-enabled/$OE_USER" +else + echo "Nginx isn't installed due to choice of the user!" +fi echo -e "* Starting Odoo Service" sudo su root -c "/etc/init.d/$OE_CONFIG start" echo "-----------------------------------------------------------"