整理及测试:部署Odoo生产环境:在Ubuntu Server16.04源码安装Odoo10并配置为服务

2017/06/2510:35:06 评论 8,498 views

整理及验证:部署Odoo生产环境:在Ubuntu Server16.04源码安装Odoo10并配置为服务

 

 

使用 非 root 用户 进行下面的测试:

本文使用 有sudo 权限的 odoo  用户进行测试()

 如果是 阿里云,可以先创建 odoo 用户,并给它 sudo 权限:
 参考: http://www.linuxidc.com/Linux/2012-06/62985.htm
1:  sudo adduser  odoo ,并且设置密码sudo passwd odoo
供参考命令:sudo adduser --system --home=/home/odoo --group odoo

2:  切换 用户: su odoo
3:  进入 odoo的 家目录 cd ~
如果是已经创建好了用户,想给root 权限:
root@ubuntu:~# sudo vi /etc/sudoers
修改文件如下:
# User privilege specification
root ALL=(ALL) ALL
odoo ALL=(ALL) ALL
保存退出,odoo用户就拥有了root权限。

 

第一步: 更新安装依赖并克隆Odoo源码

1
2
3
$ sudo apt update  #注:16.04下只需要输入"sudo apt update" ,-get可以省略
$ sudo apt upgrade
$ sudo apt install git  # 注:16.04.3自带了git,无需再安装

更新完毕后,最好重启下 服务器。

:安装nodejs:

(ubuntu14.04之后的版本)

1
2
3
$ sudo apt-get install -y npm
$ sudo ln -s /usr/bin/nodejs /usr/bin/node
$ sudo npm install -g less   # 安装时注意成功安装的提示


下载odoo源码 ,
下面是为下载到odoo10的 子目录内,
$ git clone https://github.com/odoo/odoo.git odoo10 -b 10.0 --depth=1

如果是从别的电脑复制过来的可能会需要把源码的 所有者 改为odoo 用户:

sudo chown -R odoo odoo10

可以用ls -all 看 目录所属的 用户 及组

第二步:安装Odoo系统所需的依赖:

 

进入 odoo10 的 setup 目录

 

1
$ python setup_dev.py setup_deps  # 留意看提示的话,会发现这步还会安装 postgresql

安装PostgreSQL以及数据库用户:

 

1
 python setup_dev.py setup_pg  # 这步是否必要,待近一步核实
如果不是用odoo用户安装的,需要在数据库创建 odoo这个用户():
sudo su - postgres createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo
Enter password for new role: *****
Enter it again:*****
exit

运行odoo 并生成配置文件 (也可以自己创建一个简单的配置文件)

$ ./odoo-bin -s 

从启动日志可以看到,会在当前用户根目录 生成 配置文件 .odoorc  

第三步:设置配置文件

 

$ sudo mkdir /etc/odoo
$ sudo cp /home/odoo/.odoorc /etc/odoo/odoo.conf
$ sudo chown -R odoo /etc/odoo

我们还需要创建存储Odoo日志的目录,通常位于/var/log内:

$ sudo mkdir /var/log/odoo
$ sudo chown odoo /var/log/odoo

现在我们需要确认配置文件中一些重要的参数。sudo vi /etc/odoo/odoo.conf下面是一些建议的值 :

[options]

logfile = /var/log/odoo/odoo.log
logrotate = True


让我们来解释一下:

  • addons_path 使用,逗号分隔的扩展路径,会在路径中寻找模块,从左至右阅读,最左侧拥有最高的优先级。
  • admin_passwd 是master主控密码,用于访问web客户端数据库管理。建议设置一个足够强的密码,设置为False能让此功能失效。
  • db_user 数据库实例在服务器启动序列期间进行初始化。
  • dbfilter 用于筛选可访问的数据库,它是Pythoninterpreted正则表达式. 用于不让用户选择数据库,及未验证的URLs正常工作,它应该以^dbname$设置, 例如 dbfilter=^odoo-prod$。 它支持%h和%d占位符, 用来HTTP请求的主机名和子域名.
  • logfile Odoo服务日志写入的地方。系统服务的日志通常位于/var/log. 留空,或者设为False,日志则会以标准方式输出。
  • logrotate = True 按天存放日志
  • proxy_mode 当使用反向代理时,应当设为True。
  • without_demo 在生产环境中应设为True,这样新的数据库中就不会有演示数据。
  • workers 值为启用的处理器数量。
  • xmlrpc_port 服务监听的端口号。默认使用8069

下面的参数也会很有帮助:

  • data_dir 会话数据和附件存储的位置,记得备份它。
  • xmlrpc-interface 设置监听的地址。默认值会监听所有端口 0.0.0.0, 在使用反向代理时,可以设置为127.0.0.1 目的是只对本地请求响应。

通过-c参数运行服务,我们可以检查配置的效果:

./odoo-bin -c /etc/odoo/odoo.conf

注意:因为设置了日志文件,所以不会跳出日志,

要看 日志的话,可以 再开一个终端 ,用odoo 用户,使用:

tail -f /var/log/odoo/odoo.log 查看 日志。


Odoo服务 启动后 试试看在界面 创建 数据库

如果 在odoo管理界面 无法创建数据库的,会报权限错误

(可能权限还和data_dir 对应的目录 有关)

sudo chmod -R 777 /home/xxx/.local/share/

可能 要先 createdb --owner=odoo odoo-prod 创建一个数据库

 

$ createdb --owner=odoo odoo-prod

 

 

8:安装中文字体:

 

1
2
sudo apt-get install ttf-wqy-zenhei
sudo apt-get install ttf-wqy-microhei

9:安装报表所需的wkhtmltopdf

$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
$ sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb   # 会提示要安装xfonts-75dpi 等,这时候用apt-get -f install会安装这2个依赖
$ sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin 
$ sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin

 

 

 

第四步:创建 /lib/systemd/system/odoo.service 文件,让odoo随着系统自动启动

 

由于16.04 使用了systemd作为init,因此把Odoo配置为服务,稍有不同。

要检查您的系统是否使用systemd,运行下面的命令:

$ man init

这会打开当前使用的init系统的文档,您能检查到底使用的是哪种。

 

如果您的服务器使用的是systemd。

 

使用systemd init系统。要为系统增加新的服务。 创建 /lib/systemd/system/odoo.service 文件:

sudo vi /lib/systemd/system/odoo.service  :

 

[Unit]
Description=Odoo
After=postgresql.service
[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/home/odoo/odoo10/odoo-bin -c /etc/odoo/odoo.conf
[Install]
WantedBy=multi-user.target

第六步:我们需要注册新的服务:

 

$ sudo systemctl enable odoo.service

要开启这个新服务使用下面的命令:

$ sudo systemctl start odoo 

检查它的状态:

$ sudo systemctl status odoo 

最后,如果您希望停止它,使用下面的命令:

$ sudo systemctl stop odoo 
 也可以用 service odoo start 和 stop 来开启停止服务。

现在可以确认我们的Odoo实例启动了,并能响应请求。

如果Odoo正常运行,我们可以在日志文件中获得信息。我们可以检查Odoo是否响应HTTP请求:

$ curl http://localhost:8069

要检查日志文件,我们可以使用:

$ sudo less /var/log/odoo/odoo.log 

您还可以使用tail -f:

$ sudo tail -f /var/log/odoo/odoo.log


参考文档:https://www.linode.com/docs/websites/cms/install-odoo-10-on-ubuntu-16-04

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: