Friday 3 August 2018

Change to port 80 instead of 8069 | Odoo

Odoo is very well known ERP system today. Odoo 9 provides great features that will help to grow business. By default odoo runs over port 8069. So we are accessing server using domain:8069. What if we need to access server using only domain like a standard website? We can do it by configuring web server with odoo. Here I am going to show you configuration of Apache web server and Nginx for odoo.

Using Nginx:

  1. sudo apt-get install -y nginx

  2. cd /etc/nginx/sites-available
  3. sudo nano local.conf
server {
listen 80 default_server;
server_name .local;
#server_name balbina.com;
# log files
access_log  /var/log/nginx/odoo.access.log;
error_log   /var/log/nginx/odoo.error.log;


proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;


proxy_read_timeout 600s;


client_max_body_size 100m;


location /longpolling
{
proxy_pass http://127.0.0.1:8072;
}
location / {
proxy_pass http://127.0.0.1:8069;
}
}
  1. sudo service nginx restart


Configure Apache Web Server with Odoo:


Before configuring apache with odoo, first check whether apache web server is installed on your machine or not. If not installed then execute below command to installed it.


sudo apt-get update
sudo apt-get install apache2


After installing apache on your machine, you need to enable some modes by executing below commands.
sudo a2enmod proxy proxy_http
Now go to the directory, “/etc/apache2/sites-available” and create a file with <domain-name>.conf.  Here I am going to use “demo.surekhatech.com” domain for my odoo server. So the file name will be “demo.surekhatech.conf”. Add the below content into this file.
<VirtualHost *:80>
   ServerName demo.surekhatech.com
   ServerAlias demo.surekhatech.com

   LogLevel warn
   ErrorLog /var/log/apache2/demo.surekhatech.com.error.log
   CustomLog /var/log/apache2/demo.surekhatech.com.access.log combined

   ProxyPass / http://localhost:8069/
   ProxyPassReverse / http://localhost:8069/
</VirtualHost>
After adding the virtual host for odoo server, you need to enable site using the following command.
sudo a2ensite demo.surekhatech.conf
A message will appear showing that site is enabled. After that you need to restart the apache server by executing below command.
sudo service apache2 restart
Make the host file entry in case you have made the configuration on the local machine. Open the “hosts” file by executing below command:
sudo nano /etc/hosts
Add the following entry into this file.
127.0.0.1 demo.surekhatech.com
After completing with above configuration, you can access the odoo server by hitting the “demo.surekhatech.com” in any browser. You can see that the odoo server is running over the “http”. But what if we need to run our odoo server over more secure channel i.e. “https”.
For that you need SSL certificate and key. You can buy the certificate from any trusted vendor. You can also generate certificates and used it. Certificate can be generated using the openssl toolkit. For linux machine you can generate certificate by using the following commands.
To generate key:
openssl genrsa -out demo.surekhatech.com.key 2048
To generate Certificate:
openssl req -new -x509 -key demo.surekhatech.com.key -out demo.surekhatech.com.cert -days 3650
-subj /CN=demo.surekhatech.com
Once you have SSL key and certificate, you need to update the existing virtual host to run odoo server over “https”. Before that first enable the apache SSL mode by executing below command.
sudo a2enmod ssl
Now open “demo.surekhatech.conf” file from the “/etc/apache2/sites-available” and update the virtual host with the below contents.
<VirtualHost *:80>
    ServerName demo.surekhatech.com
    ServerAlias demo.surekhatech.com
    Redirect / https://demo.surekhatech.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName demo.surekhatech.com
    ServerAlias demo.surekhatech.com

    LogLevel warn
    ErrorLog /var/log/apache2/demo.surekhatech.com.error.log
    CustomLog /var/log/apache2/demo.surekhatech.com.access.log combined

    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile /etc/apache2/ssl/demo.surekhatech.com.cert
    SSLCertificateKeyFile /etc/apache2/ssl/demo.surekhatech.com.key

    ProxyPreserveHost On
    ProxyPass / http://localhost:8069/ retry=0
    ProxyPassReverse / http://localhost:8069/
</VirtualHost>
Here we have added the path for the SSL certificate and key file. Create a directory with “ssl” name on “/etc/apache2” location. Copy the SSL certificate and key files into “/etc/apache2/ssl” directory.
Now restart the apache web server using the following command.
sudo service apache2 restart
Open any browser and hit the url “demo.surekhatech.com”. You can see that it will automatically redirect your odoo server over “https”, a more secure channel. Any request to your odoo server will be serve over the “https”.

No comments:

Post a Comment