Installing Odoo 15 along with the CentOS 7 and the latest PGSQL repo has changed pretty a lot. I will try to cover solutions to a few errors along with the straightforward steps on installing Odoo 15 in CentOS 7.
First Step First
Update your CentOS 7 installation and install Epel-release
yum update -y yum install epel-release
Install Python 3.8
We will use Python 3.8 for Odoo 15. We will use Software Collection Repository or SCL to install our Python binary. You may find details of SCL here:
First, install SCL in CentOS:
yum install centos-release-scl -y
Once done, you can now install Python 3.8 using the following:
yum install rh-python38 -y
Also, install python38-devel as Python.h is used to compile psycopg2 and python-ldap package. From Odoo 15, you need this to get going:
yum install rh-python38-python-devel -y
Note: The above is used to resolve an error like the following
fatal error: Python.h: No such file or directory
Now, we will install a few prerequisites to install Odoo 15. One difference between the old version installed and the new is that you need to load GCC-c+ now along with the GCC compiler. Otherwise, you will see an error like the following:
gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory
So, to install the pre-requisites, run the following:
yum install git gcc nano wget nodejs-less libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel gcc-c++ -y
Once done, now, you can create the user odoo:
useradd -m -U -r -d /opt/odoo -s /bin/bash odoo
We are done with the primary setup, now we move to install database
Install PostgreSQL 13 in CentOS 7
To install PGSQL 13 in CentOS 7, you need to first install the pgsql official repository. You may install this using the following:
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Once done, now you can install PostgreSQL 13 and related things:
yum install postgresql13 postgresql13-server postgresql13-contrib postgresql13-libs -y
Once done, now can you initiate the PostgreSQL and start the database server
/usr/pgsql-13/bin/postgresql-13-setup initdb systemctl start postgresql-13.service systemctl enable postgresql-13.service # create the postgres user odoo su - postgres -c "createuser -s odoo"
Brilliant, now, one more additional thing we need to resolve. With the latest Postgresql 13, you might still not be able to use the libpq. You need to install it manually. Otherwise, you will see an error like the following:
fatal error: libpq-fe.h: No such file or directory
To resolve this error, you need to install these libraries manually with the following command:
yum install libpq5 libpq5-devel -y
Remember to install libpq5-devel as the source of the libpq would be used to compile psycopg2.
Install Wkhtmltox
Now, let’s move to the next step of installing wkhtmltox. The version for wkhtmltox has remained the same for pretty long. The following shall work till now:
cd /opt wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.x86_64.rpm yum localinstall wkhtmltox-0.12.6-1.centos7.x86_64.rpm
This specific tool is used to generate reports in Odoo, without this, you might not be able to use pdf/html reports using Qweb in Odoo.
Final Step: Install and Configure Odoo 15
We will here download the source from Github and install all the dependent packages. First, we switch to the user odoo
su - odoo
Now, clone the git repo for Odoo 15 to a folder odoo15 using the following:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 /opt/odoo/odoo15
Once done, now, we can enable python3.8 and create a virtual environment for our Odoo installation. First, enable the Python3.8 using scl:
scl enable rh-python38 bash
Now create a virtual environment for our Odoo15 installation:
cd /opt/odoo python3 -m venv odoo15-venv
Activate the virtual environment we just created
source odoo15-venv/bin/activate
Now, we upgrade the pip and install wheel package:
pip install --upgrade pip pip3 install wheel
Now, before we can install the requirements file using pip3 package installer, here is an error you will face when compiling psycopg2
Error: pg_config executable not found.
Now the problem is understandable, pg_config file is usually placed under the binary folder of pgsql which is:
/usr/pgsql-13/bin
For some reason, our installer fails to identify this. To solve the issue, we first, load this in the $PATH variable before running pip3 for requirements.
export PATH=/usr/pgsql-13/bin/:$PATH
Now, you can run the pip3 installer:
pip3 install -r odoo15/requirements.txt
This shall be complete without any error if you have solved the solutions I had given above. If any of them are missed, you should double-check all the mentioned errors above.
Now exit the venv:
deactivate && exit ; exit
Now, the first step for configuration, edit the /etc/odoo.conf file
nano /etc/odoo.conf
Paste the following:
[options] ; This is the password that allows database operations: admin_passwd = set_the_password_to_create_odoo_database db_host = False db_port = False db_user = odoo db_password = False addons_path = /opt/odoo/odoo15/addons ; You can enable log file with uncommenting the next line ; logfile = /var/log/odoo15/odoo.log
Replace ‘set_the_password_to_create_odoo_database’ with the one you want to use to allow odoo installer to create the database for you.
Odoo15 Service File
Now, we will create a service file to start/stop/restart our Odoo 15 installation.
nano /etc/systemd/system/odoo15.service
Paste the following:
[Unit] Description=Odoo15 Requires=postgresql-13.service After=network.target postgresql-13.service [Service] Type=simple SyslogIdentifier=odoo15 PermissionsStartOnly=true User=odoo Group=odoo ExecStart=/usr/bin/scl enable rh-python38 -- /opt/odoo/odoo15-venv/bin/python3 /opt/odoo/odoo15/odoo-bin -c /etc/odoo.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target
We are now done with the service installation.
Now reload the system daemon:
systemctl daemon-reload
Finally, now we can start Odoo 15 with the following:
systemctl start odoo15
Check the status:
[root@cloud-accounts ~]# systemctl status odoo15 ● odoo15.service - Odoo15 Loaded: loaded (/etc/systemd/system/odoo15.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2021-12-27 08:47:30 EST; 42min ago Main PID: 5012 (scl) CGroup: /system.slice/odoo15.service ├─5012 /usr/bin/scl enable rh-python38 -- /opt/odoo/odoo15-venv/bin/python3 /opt/odoo/odoo15/odoo-bin -c /etc/odoo.conf ├─5013 /bin/bash /var/tmp/sclAlWADi └─5016 /opt/odoo/odoo15-venv/bin/python3 /opt/odoo/odoo15/odoo-bin -c /etc/odoo.conf Dec 27 08:47:30 cloud-accounts systemd[1]: Started Odoo15.
You can enable the Odoo15 when the system reboots
systemctl enable odoo15
Now, if you want to enable logging, uncomment the following line from /etc/odoo.conf
logfile = /var/log/odoo15/odoo.log
If everything goes right, you should now be able to access the Odoo in port 8069:
http://ip:8069
Thanks so much for this blog, it’s really helped me. I ran into several hurdles in Centos 7 upgrade and overcome some of them but others were more tricky! You’re a lifesaver, keep up the good work.