We are committed to provide service 24 X 7

Deals, Shopping, Training, Tools

Learn how to – How To Install Odoo 15 on CentOS 7 | RHEL 7

Learn how to – How To Install Odoo 15 on CentOS 7 | RHEL 7.

This guide will walk you through the steps to install and configure Odoo 15 on CentOS 7| RHEL 7. Odoo is a popular business software with a range of business applications such as CRM, POS, Website builder, Warehouse Management, Project Management, eCommerce, Marketing, Billing & Accounting, Manufacturing among many others. All these applications are seamlessly integrated and are managed from one web console.

As of this article writing, the latest release of Odoo available for download and use is Odoo v15. In the rest of this article, we will install and configure Odoo 15 on CentOS 7 / RHEL 7. We’ll use PostgreSQL database and Nginx as frontend proxy to Odoo 15 running on CentOS 7.

For Debian / Ubuntu:

Step 1: Add EPEL Repository

Add EPEL repository to CentOS 7 by running the command.

sudo yum -y install epel-release vim bash-completion

Put SELinux in permissive mode.

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

After adding EPEL repository, I recommend you update your system.

sudo yum -y update

Step 2: Install PostgreSQL Database Server

After adding EPEL repository, install PostgreSQL database server on CentOS 7. As of this writing, the latest release of PostgreSQL is version 14. Install it using our guide.

Step 3: Install Python 3 and wkhtmltopdf

In this step we shall perform installation of Python 3.9 and wkhtmltopdf package.

Install Python 3.9 on CentOS 7 / RHEL 7

Follow our guide in the link below to installPython 3.9 on CentOS 7 / RHEL 7:

After installation, check version of Python 3 installed:

$ python3.9 --version
Python 3.9.9

$ pip3.9 --version
pip 21.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

Set Python 3 symlink

$ sudo ln -fs /usr/local/bin/python3.9 /usr/bin/python3

$ python3 -V
Python 3.9.9

Odoo uses wkhtmltopdf to generate reports in PDF format. The recommended version of wkhtmltopdf to install is 0.12.5 and is available on the wkhtmltopdf download page, in the archive section.

sudo yum -y install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm

Confirm installed version.

$ wkhtmltopdf --version
wkhtmltopdf 0.12.5 (with patched qt)

Step 4: Install Odoo 15 on CentOS 7 | RHEL 7

Install all development tools required:

sudo yum -y install gcc git wget nodejs libxslt-devel bzip2-devel openldap-devel freetype-devel libjpeg-devel

Create odoo PostgreSQL user:

sudo su - postgres -c "createuser -s odoo"

Create OS user used by odoo

sudo useradd -m -U -r -d /opt/odoo -s /bin/bash odoo

Switch to odoo user:

sudo su - odoo

Download Odoo 15 into the /opt/odoo directory from the Github repository

git clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 /opt/odoo/odoo15

Create the Python virtual environment for Odoo using the following commands:

cd /opt/odoo
python3 -m venv odoo15-venv

Activate the Virtual environment

source odoo15-venv/bin/activate

Install required modules in requirements file

pip3 install --upgrade pip
pip3 install -r odoo15/requirements.txt

Fixingpsycopg2 installation error

If you encounter an error message like this:

Collecting psycopg2==2.8.6
  Using cached psycopg2-2.8.6.tar.gz (383 kB)
  Preparing metadata (setup.py) ... error
  ERROR: Command errored out with exit status 1:
    command: /opt/odoo/odoo15-venv/bin/python3 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-f56d763j/psycopg2_b01a674969b842af93ecce0951e28bcb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-f56d763j/psycopg2_b01a674969b842af93ecce0951e28bcb/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-j47tvfky

Uncomment

$ vim odoo15/requirements.txt
#psycopg2==2.7.7; sys_platform != 'win32' and python_version < '3.8'
#psycopg2==2.8.6; sys_platform == 'win32' or python_version >= '3.8'

Then install psycopg2-binary module and other requirements:

pip3 install psycopg2-binary===2.8.6
pip3 install -r odoo15/requirements.txt

After installations deactivate and exit the virtual environment:

(odoo15-venv) [odoo@centos ~]$ deactivate
[odoo@centos ~]$ exit
logout

Step 5: Configure Odoo 15 instance on CentOS 7 | RHEL 7

Create a folder for custom addons:

sudo mkdir /opt/odoo/odoo15-custom-addons

Give odoo user permissions to the directory created

sudo chown odoo:odoo /opt/odoo/odoo15-custom-addons

Create a directory for storing odoo logs:

sudo mkdir /var/log/odoo15
sudo touch /var/log/odoo15/odoo.log
sudo chown -R odoo:odoo /var/log/odoo15/

Create Odoo 15 configuration file

sudo tee /etc/odoo.conf<<EOF
[options]
; This is the password that allows database operations:
admin_passwd = OdooAdminPassw0rd
db_host = False
db_port = False
db_user = odoo
db_password = False
xmlrpc_port = 8069
; longpolling_port = 8072
logfile = /var/log/odoo15/odoo.log
logrotate = True
addons_path = /opt/odoo/odoo15/addons,/opt/odoo/odoo15-custom-addons
EOF

Set file permission

sudo chown odoo:odoo /etc/odoo.conf
sudo chmod 640 /etc/odoo.conf

Step 6: Create systemd unit file

Create a systemd file in the for the odoo service

sudo tee /etc/systemd/system/odoo15.service<<EOF
[Unit]
Description=Odoo15

[Service]
Type=simple
User=odoo
Group=odoo
SyslogIdentifier=odoo15
PermissionsStartOnly=true
ExecStart=/opt/odoo/odoo15-venv/bin/python3 /opt/odoo/odoo15/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target
EOF

Reload systemd daemon

sudo systemctl daemon-reload

Start odoo service

sudo systemctl start odoo15.service
sudo systemctl enable odoo15.service

You can now access the Odoo web console on its home page:

http://{hostname_or_ip_address}:8069

Step 7: Configure Nginx Proxy (Without SSL) – Not recommended

Install Nginx on CentOS 7

sudo yum -y install nginx
sudo systemctl enable --now nginx

Create a new configuration file for odoo.

sudo vim /etc/nginx/conf.d/odoo.conf

Modify this configuration snippet to fit your setup.

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name erp.ownyourlife.com.ng;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;


    # Proxy settings
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    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;

    # Request for root domain
    location / {
       proxy_redirect off;
       proxy_pass http://odooserver;
    }

    # Cache static files
    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odooserver;
    }

    # Gzip
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

Replace erp.learnhowto with your domain name, then validate Nginx configuration file.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

If all looks good, restart Nginx.

sudo systemctl restart nginx

Step 6: Configure Nginx Proxy (With SSL Certificate) – Recommended

If your server has a public IP, you can create a DNS A record for your domain to point to Odoo Server and request for free Let’s Encrypt SSL certificate.

Install Nginx on CentOS 7

sudo yum -y install nginx
sudo systemctl enable --now nginx

Install certbot-auto tool.

sudo yum -y install epel-release
sudo yum -y install certbot python2-certbot-nginx

Stop Nginx service.

sudo systemctl stop nginx

Get Let’s Encrypt SSL certificates for your domain.

export DOMAIN="erp.ownyourlife.com.ng"
export EMAIL="myemail@ownyourlife.com.ng"
sudo /usr/bin/certbot certonly --standalone -d ${DOMAIN} --preferred-challenges http --agree-tos -n -m ${EMAIL} --keep-until-expiring

The path to certificate files is shown in the “IMPORTANT NOTES” section.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/erp.ownyourlife.com.ng/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/erp.ownyourlife.com.ng/privkey.pem
   Your cert will expire on 2020-01-19. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Create cron to renew certificate.

$ sudo crontab -e
15 3 * * * /usr/bin/certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

Create Nginx configuration file.

sudo vim /etc/nginx/conf.d/odoo.conf

Paste below into the file and modify it to suit your environment.

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

# http to https redirection
server {
    listen 80;
    server_name erp.ownyourlife.com.ng;
    return 301 https://erp.ownyourlife.com.ng$request_uri;
}

server {
    listen 443 ssl;
    server_name erp.ownyourlife.com.ng;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;
   
   # SSL
    ssl_certificate /etc/letsencrypt/live/erp.ownyourlife.com.ng/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/erp.ownyourlife.com.ng/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/erp.ownyourlife.com.ng/chain.pem;


    # Proxy settings
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    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;

    # Request for root domain
    location / {
       proxy_redirect off;
       proxy_pass http://odooserver;
    }

    # Cache static files
    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odooserver;
    }

    # Gzip Compression
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

Validate your Nginx configurations.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Restart Nginx.

sudo systemctl restart nginx

Step 7: Access Odoo on Debian 10 Linux

Access Odoo Web page on your domain name from a web – https://DNShostname.

On the first page, set database name, admin user email address and password for the admin user.

Use the Apps menu to install other Odoo applications.

Example:

There you have it. Odoo 15 has been installed on CentOS 7 Linux server. Explore more Odoo features and Applications available for installation. The next page to visit is official Odoo Documentation.

For Debian family, check:

Cart

Your Cart is Empty

Back To Shop