Odoo12 项目发布与部署 - Ubuntu1804源码安装

Posted odoo开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Odoo12 项目发布与部署 - Ubuntu1804源码安装相关的知识,希望对你有一定的参考价值。

本文主要介绍odoo12源码安装项目发布与部署在 Ubuntu1804

首先可以用deb包安装,过程最简单,但是也有很多问题。如不能使用venv,如添加了apt-get源,导致升级时自动更新odoo包,引起系统不稳定。

另外可使用odoo官方的src源码包或github源码安装,过程比较复杂,但是一般推荐线上环境使用这种方式安装部署。

下面我们分别介绍一下。

本节介绍,在ubuntu server上安装部署odoo。这里仍然是用源码安装,rpm deb等安装部署方式在其他的课程中介绍。
>注意 不要使用windows部署线上环境,原因是windows不能开启odoo的多进程worker功能,大大降低了服务器性能(等研究过windows相关的服务器优化方案后,再做补充)。

因为是部署线上生产环境,所以使用odoo版本应该和开发版本保持一致。
如果开发用的github源码,可以通过git log找到最后一天更新的日期(20170408),然后选择一个相同的日期(20170408)的源码压缩包下载(避免修复的bug不一致)。

可以在下面的地址下载到odoo官方每日打包的版本。
> 选择tar.gz压缩版本下载,这个源码包不包含git相关记录,所以比较小(目前大小仅为84MB)

https://nightly.odoo.com/

> 安装odoo过程与ubuntu开发环境配置稍有不同,请按照步骤学习。另如果使用odoo用户输入命令,加odoo@头。如果是root用户命令使用#开头,登录系统后可使用sudo su切换到root身份。如过是virtualenv ,命令使用(venv)开头。

这里推荐使用Ubuntu 16.04.2 或 18.04 LTS(长期支持版本)系统

ssh登录后,先更新一下系统

apt-get update && apt-get upgrade
通过odoo每日构建源码包安装
首先创建一个odoo用户

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

python2.7
odoo11及以下版本使用以下命令

apt-get install python

python和编译依赖库
> 不推荐使用deb方式安装python依赖包,可能会因为依赖库版本问题导致一些bug。

python2编译依赖

apt-get install build-essential python-dev python-setuptools -y
python3编译依赖

apt-get install build-essential python3-dev python3-setuptools -y

如果没有pip使用easy_install安装
> python-pip版本比较老,所以这里使用easy_install安装。如果是阿里云,系统镜像自动安装了pip,可跳过此步骤,否则可能导致No module named urllib3问题。

easy_install pip
或者用apt-get 安装 python3-pip

odoo编译依赖

lxml依赖

apt-get install zlib1g-dev libxslt1-dev libxml2-dev

ldap依赖

apt-get install libsasl2-dev libldap2-dev libssl-dev

pillow 依赖库

apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev

一键安装上面的依赖

apt-get install zlib1g-dev libxslt1-dev libxml2-dev libsasl2-dev libldap2-dev libssl-dev libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev -y
安装postgresql数据库
ubuntu16.04的自带的postgresql是9.5版本, ubuntu19.04的自带的postgresql是10版本, 目前最新为11,不久发布12。

建议开发和部署使用相同的postgresql版本。
需要安装其他版本的postgresql可以参考 https://devecho.com/v/224/
~~~
# apt-get install postgresql-9.5 postgresql-server-dev-9.5
~~~
创建用户
~~~
# sudo -u postgres psql
postgres=# create user "odoo10" with password ‘odoo10‘ createdb;
postgres=# q
~~~

postgresql 依赖库
~~~
apt-get install libpq-dev -y
~~~
virtualenv
~~~
# pip install virtualenv
~~~

##安装nodejs
~~~
# curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
# apt-get install -y nodejs
# npm install -g less less-plugin-clean-css
~~~

##安装打印程序wkhtmltopdf和中文字体
参考 https://devecho.com/v/229/

##安装odoo
首先使用su命令切换到刚才创建的odoo用户
~~~
root# su odoo
~~~
~~~{.bash}
odoo@$ cd /opt/odoo
odoo@$ mkdir odoo10
odoo@$ cd odoo10
~~~
使用virtualenv创建虚拟环境
~~~
odoo@$ virtualenv venv
source venv/bin/activate
~~~
##下载odoo nightly包
> 下面的地址和文件名,请替换为你所用的日期。

~~~{.bash}
(venv) odoo@$ wget https://nightly.odoo.com/10.0/nightly/src/odoo_10.0.20170408.tar.gz
(venv) odoo@$ tar xf odoo_10.0.20170408.tar.gz
(venv) odoo@$ cd odoo-10.0-20170408
~~~
##安装odoo python模块
~~~
(venv) pip install -r requirements.txt -i https://pypi.douban.com/simple
~~~
> 这里必须先安装requirements.txt,因为odoo的源码中,setup.py依赖没有版本号,导致安装的python依赖和odoo requirements.txt里版本不一致。

##安装odoo包
~~~{.bash}
(venv) odoo@$ python setup.py install
(venv) odoo@$ cd ..
(venv) odoo@$ rm -rf odoo-10.0-20170408
~~~
这里把odoo src包作为python的包安装到venv的lib里去,安装完成后删除整个目录。此时多出一个odoo命令,你可以通过这个命令来启动odoo项目。

> nightly的src包和github的目录结构略有不同(根目录无odoo-bin等脚本),适合部署安装用,开发仍然推荐使用git的。

##odoo项目配置
创建data目录
~~~{.bash}
(venv) odoo@$ cd /opt/odoo/odoo10
(venv) odoo@$ mkdir data
(venv) odoo@$ nano odoo10.conf
~~~
odoo配置内容
~~~
[options]
db_host = 127.0.0.1
db_port = 5432
db_user = odoo10
db_password = odoo10
data_dir = /opt/odoo/odoo10/data
~~~
>这里没有配置addons_path参数,因为odoo是以包的形式安装的,所以目录为 /opt/odoo/odoo10/venv/lib/python2.7/site-packages/odoo-10.0.post20170408-py2.7.egg/odoo/addons。此版本的odoo把核心模块和业务模块都放在一个目录

##启动服务器测试
(venv) odoo@$ odoo -c odoo10.conf
浏览器访问 http://Server_IP:8069

配置开机启动脚本

> 使用systemd模式,如不了解请看FAQ。
~~~
# nano /etc/systemd/system/odoo10.service
~~~
配置内容

[Unit]
Description=Odoo10
Requires=postgresql.service
After=postgresql.service
[Service]
Type=simple
PermissionsStartOnly=true
User=odoo
Group=odoo
SyslogIdentifier=odoo10
ExecStart=/opt/odoo/odoo10/venv/bin/python /opt/odoo/odoo10/venv/bin/odoo -c /opt/odoo/odoo10/odoo10.conf
[Install]
WantedBy=default.target

运行
~~~
# systemctl enable odoo10.service
# systemctl start odoo10.service
~~~
这样配置之后,ubuntu重启了,odoo服务自动启动(nginx和postgresql的自启动服务系统以及帮我们添加)
> 之后更新odoo10.service,需通过systemctl daemon-reload和systemctl restart odoo10.service重启odoo进程,另外使用systemctl status odoo10.service 可以了解当前服务的状态。

浏览器访问 http://Server_IP:8069
重启服务器验证

配置nginx反向代理

安装

apt-get install nginx
rm /etc/nginx/sites-enabled/default
nano /etc/nginx/conf.d/odoo_nginx.conf

odoo_nginx.conf

upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
server {
listen 80;
# proxy
proxy_buffers 16 64k;
proxy_buffer_size 128k;
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;proxy_set_header Host $host;
proxy_set_header X-Forwarded-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;#gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;location / {
access_log /var/log/nginx/odoo10_access.log;
error_log /var/log/nginx/odoo10_error.log;
proxy_redirect off;
proxy_pass http://odoo;
client_max_body_size 200m;
}location /longpolling {
proxy_redirect off;
proxy_pass http://odoochat;
}
}
如果要绑定域名,在server块里添加 server_name www.yourdomain.com;
service nginx restart
> 注意如过设置了longpolling单独转发upstream,下文中设置workers不能为0(打印支持必须大于1)。

## odoo日志配置
log_level = warn
logfile = /opt/odoo/odoo10/odoo10.log

Odoo配置安全项
启用web数据库管理密码 admin_passwd(不能设置为admin,无效密码)
admin_passwd = 123456

监听IP段改为本地(127.0.0.1), 可实现禁止外网直接访问odoo(默认0.0.0.0)
xmlrpc_interface = 127.0.0.1
监听端口(默认8069)
xmlrpc_port = 8069

增加workers
workers = 2

import multiprocessing
multiprocessing.cpu_count()
在python解释器里输入上面的代码,获得cpu个数+1 为workers个数

添加自己的插件
mkdir /opt/odoo/odoo10/myaddons
addons_path = /opt/odoo/odoo10/myaddons

测试
重启电脑,访问 http://Server_IP

参考文章

以上是关于Odoo12 项目发布与部署 - Ubuntu1804源码安装的主要内容,如果未能解决你的问题,请参考以下文章

odoo 10.0部署shell 待改进

Odoo14介绍1:Ubuntu18.04通过源码安装Odoo14

Odoo14介绍1:Ubuntu18.04通过源码安装Odoo14

Odoo 12开发之开发环境准备

odoo ubuntu开发环境配置教程

Odoo12开发环境部署在Windows系统