odoo发布与部署

一,系统为Ubuntu 16.04.2 LTS 64位。不推荐使用Windows部署线上环境,因为其不支持odoo多进程work功能

二,安装方式为源码,使用版本应该和调试环境一致。如果开发用的github源码,可以通过git log找到最后一天更新的日期(20170802),然后选择一个相同的日期(20170802)的源码压缩包下载(避免修复的bug不一致)。

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

三,步骤

操作系统配置

开始前先update ,是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包

# apt-get update 

更新一下系统源。upgrade 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update

# apt-get upgrade 
等待更新完继续

可以开启openssh server方便远程连接,有的服务器已经装好了

# apt-get install openssh-server

首先创建一个odoo用户

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

python2.7

# apt-get install python

python和编译依赖库

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

python编译依赖

# apt-get install build-essential python-dev python-setuptools -y

如果没有pip使用easy_install安装

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

# easy_install pip

lxml依赖

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

ldap依赖

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

pillow 依赖库

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

postgresql 依赖库

apt-get install libpq-dev -y

virtualenv

# pip install virtualenv

安装postgresql数据库

ubuntu16.04的postgresql是9.5的, 建议开发和部署使用相同版本。
需要安装不同版本的postgresql可以参考https://devecho.com/v/postgresql-basic/。

# apt-get install postgresql-9.5 postgresql-server-dev-9.5

安装完postgresql数据库后,数据库会自动创建postgres系统用户,在数据库内也会有同名的数据库用户,可以更改这个用户的密码

创建用户

# sudo -u postgres psql
postgres=# create user "odoo10" with password 'odoo10' createdb;
postgres=# \q

安装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和中文字体

ubuntu 14~16 (trusty代表1404的版本号)

由于wkhtmltopdf没有提供1604的deb安装包,我们可以用1404的替代

# wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
# dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

依赖报错


使用apt-get强制安装解决

# apt-get -f install -y

中文字体

ubuntu

apt-get install ttf-wqy-microhei ttf-wqy-zenhei  -y


验证

可以在命令行中使用wkhtmltopdf来验证wkhtmltopdf是否正确工作

如果出现cannot connect to X server错误,可以参考下面链接在linux服务上安装一个X环境
ubuntu
https://stackoverflow.com/questions/9604625/wkhtmltopdf-cannot-connect-to-x-server



安装odoo

首先使用su命令切换到刚才创建的odoo用户

root# su odoo
odoo@$ cd /opt/odoo
odoo@$ mkdir odoo10
odoo@$ cd odoo10

使用virtualenv创建虚拟环境

odoo@$ virtualenv venv
source venv/bin/activate


下载odoo nightly包

下面的地址和文件名,请替换为你所用的日期。

(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包

(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目录

(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 可以了解当前服务的状态。

# ps -ef

查看进程

# systemctl status odoo10.service

查看服务状态

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


配置nginx反向代理

安装

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

新建odoo10_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;
    }
}

重启nginx服务

# service_nginx restart

注意如过设置了longpolling单独转发upstream,下文中设置workers不能为0(打印支持必须大于1)。


odoo日志配置

在odoo.conf里面加上

log_level = warn

logfile = /opt/odoo/odoo10/odoo10.log

重启odoo服务

# systemctl restart odoo10.service

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()

获得cpu个数+1 为workers个数

更多请看本站 odoo性能调优介绍

添加自己的插件

mkdir /opt/odoo/odoo10/myaddons
addons_path = /opt/odoo/odoo10/myaddons

测试

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



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值