本人实测在阿里云的 CentOS 7.4 下安装 Odoo 11 实例(git和wget tar.gz版)
- 
本人实测在阿里云的CentOS 7.4 下安装 Odoo 11实例(git和wget tar.gz版) 
 由于 CentOS 的yum只能用python2.x执行,因此无法用rpm安装odoo11.
 下面是本人的实操经验, 若有不对,请指正,谢谢!
 (由于时间原因,暂时未标注命令代码,待有时间再编辑,SORRY!)
 GIT版:
 1: 先创建个odoo用户
 sudo groupadd odoo
 sudo adduser -g odoo odoo
 passwd odoo
 *** (后面安装和登陆均会用到,请牢记!)
 2:给root 权限: 
 sudo vi /etc/sudoers
 修改文件参考如下:Allow root to run any commands anywhereroot ALL=(ALL:ALL) ALL 
 odoo ALL=(ALL:ALL) ALL (增加部分)
 保存退出,odoo用户就拥有了root权限。
 reboot
 这样便可通过远程Putty和WinSCP用odoo用户登录了.
 3: 进入odoo的家目录 cd ~, 开始安装旅程.
 第一步: 更新安装依赖并克隆Odoo源码
 1.1更新系统
 sudo yum update
 注:更新完毕后,最好重启下服务器。
 reboot
 1.2 安装python3以及pip3
 sudo yum install epel-release
 sudo yum install python36
 sudo yum install python36-devel libxslt-devel libxml2-devel openldap-devel
 sudo wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
 sudo python36 get-pip.py(这样会导致原来的pip指向pip3,因此建议修改pip,因此需要执行以下代码还原pip为python2.X, sudo mv /usr/bin/pip /usr/bin/pip-bak , sudo ln -s /usr/bin/pip2 /usr/bin/pip , 然后执行 pip –V看看是不是指向Python2.X)
 1.3 安装nodejs:
 sudo yum install nodejs
 sudo yum install npm (若上条代码附带安装了npm则无需再安装)
 sudo npm install -g less
 sudo npm install -g less-plugin-clean-css
 1.4 安装wkhtmltopdf
 sudo yum install wkhtmltopdf
 1.5进入odoo的家目录(默认为/home/odoo, 若没有则创建 mkdir -p /home/wwwroot) cd ~, 克隆odoo源码 ,下面的命令会克隆到odoo的子目录内即:/home/odoo/odoo,建议改为/home/odoo/odoo11:
 sudo yum install git
 git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0第二步:安装Odoo系统所需的依赖: 
 2.1
 cd ./odoo11
 sudo pip3 install -r requirements.txt
 sudo pip3 install -r ./doc/requirements.txt
 注:安装这些依赖时,注意看下载速度,有些时间段会比较慢.有时候还会无法访问到服务器,注意成功安装后的提示. 不行换个时间段安装 就会发现快很多(比如早上8点前)
 安装成功后提示:Successfully installed
 2.2 安装PostgreSQL以及数据库用户:
 sudo yum install postgresql-server –y
 sudo postgresql-setup initdb
 sudo systemctl enable postgresql
 sudo systemctl start postgresql
 sudo su - postgres
 createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo
 Enter password for new role: *****
 Enter it again:*****
 exit
 进入odoo源码目录(/home/odoo/odoo11)运行odoo-bin 并生成配置文件.
 (备注,由于未改动原python2.X,因此需要修改odoo-bin第1行
 #!/usr/bin/env python3
 为
 #!/usr/bin/python36
 )
 ./odoo-bin -s
 从启动日志可以看到,会在当前用户根目录生成配置文件 .odoorc (这个配置文件第三步会用到)
 Using configuration file at /home/odoo/.odoorc (日志内容,无需执行)
 再用root开一个新的终端窗口,使用ps aux |grep odoo 可以看到odoo的使用情况,比如:
 odoo 1010 0.9 1.6 421168 66852 pts/0 Sl+ 12:22 0:00 python3 ./odoo-bin -c /etc/odoo/odoo.conf
 确定是用python3 启动的 odoo.
 再用netstat -ant 可以看端口使用的情况 8069是odoo,22用于ssh,5432用于postgresl :
 tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN
 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
 如果不用随着系统启动启动odoo,到这里odoo已经可以手动启动了.
 如果希望随着系统自动启动,请继续看下去.
 注:还可以用sudo python36 odoo-bin -s 启动试试 ,ps aux | grep odoo里面看到是这样的:
 odoo 1058 2.7 1.6 422340 66012 pts/0 Sl+ 12:25 0:00 python3.5 odoo-bin
 用python3 和 python3.5 启动的,好像crtl + c 关不干净
 ctrl + c 应该可以终止,不过有时候好像会停不干净,需要reboot系统.
 第三步:设置配置文件
 3.1
 sudo mkdir /etc/odoo
 sudo cp /home/odoo/.odoorc /etc/odoo/odoo.conf
 sudo chown -R odoo /etc/odoo
 3.2 我们还需要创建存储Odoo日志的目录,通常位于/var/log内:
 sudo mkdir /var/log/odoo
 sudo chown odoo /var/log/odoo
 3.3 编辑配置文件。
 sudo vi /etc/odoo/odoo.conf
 下面是2个建议增加的值 :
 [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
 注意:因为设置了日志文件,所以不会跳出日志,
 ctrl + c 应该可以终止,不过有时候好像会停不干净,需要reboot系统.
 要看 日志的话,可以 再开一个终端 ,用odoo 用户,使用:
 tail -f /var/log/odoo/odoo.log 查看 日志。
 Odoo服务 启动后 试试看在界面 创建 数据库
 8:安装中文字体:
 sudo yum install wqy*
 第四步:创建 /lib/systemd/system/odoo.service 文件,让odoo随着系统自动启动
 4.1 编辑 /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/odoo11/odoo-bin -c /etc/odoo/odoo.conf
 [Install]
 WantedBy=multi-user.target
 4.2 需要注册新的服务: sudo systemctl enable odoo.service
 4.3 开启这个新服务:
 sudo systemctl start odoo
 检查它的状态:
 sudo systemctl status odoo如下所示,其中 Active active(running)表示正确运行,而且我们可以看到是运行在python3下的 
 ● odoo.service - Odoo
 Loaded: loaded (/lib/systemd/system/odoo.service; enabled; vendor preset: enabled)
 Active: active (running) since Sun 2018-06-12 10:46:54 CST; 6s ago
 Main PID: 930 (python3)
 CGroup: /system.slice/odoo.service
 └─930 python3 /home/wwwroot/odoo/odoo11/odoo-bin -c /etc/odoo/odoo.confOct 15 12:46:54 ****(vps名) systemd[1]: Started Odoo. 
 如果您希望停止它,使用下面的命令:
 sudo systemctl stop odoo
 也可以用 service odoo start 和 service odoo stop 来开启停止服务。
 现在可以确认我们的Odoo实例启动了,并能响应请求。
 如果Odoo正常运行,我们可以在日志文件中获得信息。我们可以检查Odoo是否响应HTTP请求:
 curl http://localhost:8069
 要检查日志文件,我们可以使用:
 sudo less /var/log/odoo/odoo.log (Q键退出)
 您还可以使用tail -f:
 sudo tail -f /var/log/odoo/odoo.log (Ctrl+C退出)PS, 企业版安装教程 
 基于上述社区安装
 1: 下载企业版相关addons
 sudo git clone --depth 1 --branch 11.0 [检测到链接无效,已移除] /home/odoo/odoo11/enterprise/addons (此步骤需要有企业版下载权限,并输入账号密码才能下载)
 将压缩包解压到对应的文件夹下面,比如我是放在/home/odoo/odoo11/enterprise/addons下面.
 2: 编辑odoo.conf文件,增加enterprise的addons
 sudo vi /etc/odoo/odoo.conf
 将addons_path = /home/odoo/odoo11/odoo/addons,/home/odoo/odoo11/addons
 更改为:
 addons_path = /home/odoo/odoo11/enterprise/addons,/home/odoo/odoo11/odoo/addons,/home/odoo/odoo11/addons
 3: 重启odoo: sudo systemctl restart odoo,
 4: 创建企业版数据库(安装步骤同社区版):
 http://ip:8069/web/database/manager或者域名+ web/database/manager然后选择新建的数据库,输入账号密码登陆即进入企业版. WGET TAR.GZ版: 
 1: 先创建个odoo用户
 sudo groupadd odoo
 sudo adduser -g odoo odoo
 passwd odoo
 *** (后面安装和登陆均会用到,请牢记!)
 2:给root 权限: 
 sudo vi /etc/sudoers
 修改文件参考如下:Allow root to run any commands anywhereroot ALL=(ALL:ALL) ALL 
 odoo ALL=(ALL:ALL) ALL (增加部分)
 保存退出,odoo用户就拥有了root权限。
 reboot
 这样便可通过远程Putty和WinSCP用odoo用户登录了.
 3: 进入odoo的家目录 cd ~, 开始安装旅程.
 第一步: 更新安装依赖并克隆Odoo源码
 1.1更新系统
 sudo yum update
 注:更新完毕后,最好重启下服务器。
 reboot
 1.2 安装python3以及pip3
 sudo yum install epel-release
 sudo yum install python36
 sudo yum install python36-devel libxslt-devel libxml2-devel openldap-devel
 sudo wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
 sudo python36 get-pip.py(这样会导致原来的pip指向pip3,因此建议修改pip,因此需要执行以下代码还原pip为python2.X, sudo mv /usr/bin/pip /usr/bin/pip-bak , sudo ln -s /usr/bin/pip2 /usr/bin/pip , 然后执行 pip –V看看是不是指向Python2.X)
 1.3 安装nodejs:
 sudo yum install nodejs
 sudo yum install npm (若上条代码附带安装了npm则无需再安装)
 sudo npm install -g less
 sudo npm install -g less-plugin-clean-css
 1.4 安装wkhtmltopdf
 sudo yum install wkhtmltopdf
 1.5进入odoo的家目录, (默认为/home/odoo, 若没有则创建 mkdir -p /home/wwwroot) cd /home/odoo, 克隆odoo源码 ,下面的命令会解压到odoo的子目录内即:/home/odoo/odoo-11.0.post2018****,建议修改为/home/odoo/odoo11
 http://nightly.odoo.com/11.0/nightly/src/odoo_11.0.latest.tar.gz第二步:安装Odoo系统所需的依赖: 
 2.1
 cd ./odoo11
 sudo pip3 install -r requirements.txt
 (根据git版的提示,建议在执行命令前在最后2行插入:
 sphinx>=1.2
 sphinx-patchqueue>=1.0
 )
 注:安装这些依赖时,注意看下载速度,有些时间段会比较慢.有时候还会无法访问到服务器,注意成功安装后的提示. 不行换个时间段安装 就会发现快很多(比如早上8点前)
 安装成功后提示:Successfully installed
 2.2 安装PostgreSQL以及数据库用户:
 sudo yum install postgresql-server –y
 sudo postgresql-setup initdb
 sudo systemctl enable postgresql
 sudo systemctl start postgresql
 sudo su - postgres
 createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo
 Enter password for new role: *****
 Enter it again:*****
 exit
 由于wget版没有odoo-bin文件,可以新建一个odoo-bin,也可以直接copy odoo github下的这个文件. 内容如下:
 #!/usr/bin/env python3set server timezone in UTC before time module importedimport('os').environ['TZ'] = 'UTC' 
 import odooif name == "main": 
 odoo.cli.main()
 进入odoo源码目录(/home/odoo/odoo11)运行odoo-bin, 并生成配置文件.
 (备注,由于未改动原python2.X,因此需要修改odoo-bin第1行
 #!/usr/bin/env python3
 为
 #!/usr/bin/python36
 )
 ./odoo-bin -s
 从启动日志可以看到,会在当前用户根目录生成配置文件 .odoorc (这个配置文件第三步会用到)
 Using configuration file at /home/odoo/.odoorc (日志内容,无需执行)
 再用root开一个新的终端窗口,使用ps aux |grep odoo 可以看到odoo的使用情况,比如:
 odoo 1010 0.9 1.6 421168 66852 pts/0 Sl+ 12:22 0:00 python3 ./odoo-bin -c /etc/odoo/odoo.conf
 确定是用python3 启动的 odoo.
 再用netstat -ant 可以看端口使用的情况 8069是odoo,22用于ssh,5432用于postgresl :
 tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN
 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
 如果不用随着系统启动启动odoo,到这里odoo已经可以手动启动了.
 如果希望随着系统自动启动,请继续看下去.
 注:还可以用sudo python36 odoo-bin -s 启动试试 ,ps aux | grep odoo里面看到是这样的:
 odoo 1058 2.7 1.6 422340 66012 pts/0 Sl+ 12:25 0:00 python3.5 odoo-bin
 用python3 和 python3.5 启动的,好像crtl + c 关不干净
 ctrl + c 应该可以终止,不过有时候好像会停不干净,需要reboot系统.
 第三步:设置配置文件
 3.1
 sudo mkdir /etc/odoo
 sudo cp /home/odoo/.odoorc /etc/odoo/odoo.conf
 sudo chown -R odoo /etc/odoo
 3.2 我们还需要创建存储Odoo日志的目录,通常位于/var/log内:
 sudo mkdir /var/log/odoo
 sudo chown odoo /var/log/odoo
 3.3 编辑配置文件。
 sudo vi /etc/odoo/odoo.conf
 下面是2个建议增加的值 :
 [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
 注意:因为设置了日志文件,所以不会跳出日志,
 ctrl + c 应该可以终止,不过有时候好像会停不干净,需要reboot系统.
 要看 日志的话,可以 再开一个终端 ,用odoo 用户,使用:
 tail -f /var/log/odoo/odoo.log 查看 日志。
 Odoo服务 启动后 试试看在界面 创建 数据库
 8:安装中文字体:
 sudo yum install wqy*
 第四步:创建 /lib/systemd/system/odoo.service 文件,让odoo随着系统自动启动
 4.1 编辑 /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/odoo11/odoo-bin -c /etc/odoo/odoo.conf
 [Install]
 WantedBy=multi-user.target
 4.2 需要注册新的服务: sudo systemctl enable odoo.service
 4.3 开启这个新服务:
 sudo systemctl start odoo
 检查它的状态:
 sudo systemctl status odoo如下所示,其中 Active active(running)表示正确运行,而且我们可以看到是运行在python3下的 
 ● odoo.service - Odoo
 Loaded: loaded (/lib/systemd/system/odoo.service; enabled; vendor preset: enabled)
 Active: active (running) since Sun 2018-06-12 10:46:54 CST; 6s ago
 Main PID: 930 (python3)
 CGroup: /system.slice/odoo.service
 └─930 python3 /home/wwwroot/odoo/odoo11/odoo-bin -c /etc/odoo/odoo.confOct 15 12:46:54 ****(vps名) systemd[1]: Started Odoo. 
 如果您希望停止它,使用下面的命令:
 sudo systemctl stop odoo
 也可以用 service odoo start 和 service odoo stop 来开启停止服务。
 现在可以确认我们的Odoo实例启动了,并能响应请求。
 如果Odoo正常运行,我们可以在日志文件中获得信息。我们可以检查Odoo是否响应HTTP请求:
 curl http://localhost:8069
 要检查日志文件,我们可以使用:
 sudo less /var/log/odoo/odoo.log (Q键退出)
 您还可以使用tail -f:
 sudo tail -f /var/log/odoo/odoo.log (Ctrl+C退出)PS, 企业版安装教程 
 Wget版是将社区版和企业版放在一个addons下面了, 只要下载source包即可按照社区版的安装方式安装即可.
 1: 下载
 用你的账号进入Odoo官网下载页面: https://www.odoo.com/zh_CN/page/download
 选择source 一列下载.2: 安装(省略, 详见社区版安装步骤) 若您在使用过程中还有什么问题,您可以联系我大家一起探讨.
 我的QQ 65016198, 谢谢.感谢: 本文参照了卓亿的文章<整理及测试:Odoo11安装,Odoo11生产环境部署:在Ubuntu Server16.04下Odoo11安装并配置为服务>, 在此表示感谢! 
 相关链接:
 https://odoo.net.cn/topic/4772/整理及测试-odoo11安装-odoo11生产环境部署-在ubuntu-server16-04下odoo11安装并配置为服务
- 
sudo pip3 install -r requirements.txt 这一步报错。 Running setup.py install for lxml ... error 
 Complete output from command /bin/python36 -u -c "import setuptools, tokenize;file='/tmp/pip-install-7ykoshrh/lxml/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-pr1kzk2_/install-record.txt --single-version-externally-managed --compile:gcc -pthread -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/libxml2 -Isrc/lxml/includes -I/usr/include/python3.6m -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-3.6/src/lxml/lxml.etree.o -w 
 unable to execute 'gcc': No such file or directory
 Compile failed: command 'gcc' failed with exit status 1
 cc -I/usr/include/libxml2 -I/usr/include/libxml2 -c /tmp/xmlXPathInitw6u_9bo6.c -o tmp/xmlXPathInitw6u_9bo6.o
 unable to execute 'cc': No such file or directory
 *********************************************************************************
 Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
 *********************************************************************************
 error: command 'gcc' failed with exit status 1----------------------------------------Command "/bin/python36 -u -c "import setuptools, tokenize;file='/tmp/pip-install-7ykoshrh/lxml/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-pr1kzk2_/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-7ykoshrh/lxml/ 
- 
- 
@beckham1977 
 lxml未安装成功,请确认安装了相关开发环境 libxml2-devel ?
