这是Odoo系列文章的第一篇,完整目录请见最好用的免费ERP系统Odoo 11开发指南
Ubuntu 安装Odoo 11.0及常见问题
先夸夸Python,我觉得Python非常适合我这种懒散不思进取又喜欢装逼的人,解决了很多编程语言的入门门槛高的问题(装B时间:Python有点像中国人学日语,あいうえお很容易学习,发音也不存在障碍-不像一些语言中的小舌音呀法语中的“吐痰音”啦;又如空港,写真的日语你也许不会读,但肯定知道是什么意思),相关配套也非常齐全。比如Django, Flask等框架,搜索引擎的爬虫(Scrapy等),Tkinter用于封装C/S软件,更不要提仍然炙手可热的各类大数据、人工智能库(如TensorFlow)了,前段时间发现了Odoo(原OpenERP),也挺感兴趣。在Mac上搭了下,还挺简单,但各路Odoo教程都建议在类生产环境上进行搭建,于是决定在本地虚拟机上先进行尝试,计划分别在Ubuntu和CentOS上进行尝试。先从官方推荐的Debian系的Ubuntu开始,本次安装所使用的是较新的16.04版的Ubuntu,先上效果图
1.安装主要所需资源
1 2 3 4 5 6 7 8 9 10 |
# 升级系统源 sudo apt-get update # 更新 virtualenv 安装方法 sudo apt-get install build-essential python-dev python-setuptools build-essential -y sudo easy_install pip sudo pip install virtualenv # 安装主要依赖包,Ubuntu 16.04默认已经为Python 3.5,略去了Python的安装 sudo apt-get install -y git postgresql nano xz-utils wget fontconfig libfreetype6 libx11-6 libxext6 libxrender1 node-less node-clean-css xfonts-75dpi |
如希望安装更新Python版本:
1 2 3 4 5 6 7 8 9 10 11 |
# 访问官网获取最新稳定版 sudo apt-get install zlib* -y # zipimport.ZipImportError: can't decompress data; zlib not available wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz tar -zxf Python-3.6.6.tgz cd Python-3.6.6/ sudo ./configure --prefix=/usr/bin/python3.6 sudo make & sudo make install # 建立软链接使用 python 命令访问(如已存在需执行rm /usr/bin/python) sudo ln -s /usr/bin/python3.6/bin/python3.6 /usr/bin/python # 通过python --version或 python 来进行版本验证 |
2.安装wkhtmltopdf
1 2 3 4 5 6 7 8 |
wget -O wkhtmltox.tar.xz https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz tar xvf wkhtmltox.tar.xz sudo mv wkhtmltox/lib/* /usr/local/lib/ sudo mv wkhtmltox/bin/* /usr/local/bin/ sudo mv wkhtmltox/share/man/man1 /usr/local/share/man/ # 不推荐使用sudo apt-get install wkhtmltopdf安装 # 中文字体 sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei -y |
3.安装build所需依赖
1 |
sudo apt-get install -y gcc python3.5-dev libxml2-dev libxslt-dev libevent-dev libsasl2-dev libssl-dev libldap-dev libpq-dev libpng-dev libjpeg-dev |
4.配置PostgreSQL
1 2 3 4 5 |
#使用当前用户无需设置密码,如需设置密码,请添加--pwprompt sudo -u postgres createuser --createdb $(whoami) createdb $(whoami) #对已存在的用户设置密码可通过类似如下方式 psql -c "alter role $(whoami) with password 'newpassword'" |
通过psql可进入交互界面
1 2 3 4 5 6 7 8 9 10 11 |
# 相关命令 \h:查看SQL命令的解释,比如\h select。 \?:查看psql命令列表。 \l:列出所有数据库。 \c [database_name]:连接其他数据库。 \d:列出当前数据库的所有表格。 \d [table_name]:列出某一张表格的结构。 \du:列出所有用户。 \e:打开文本编辑器。 \conninfo:列出当前数据库和连接的信息。 drop database "odoo-test"; 删除数据库 |
5.git的配置(Odoo的源文件比较大,国内git可考虑自行下载再上传)
1 2 |
git config --global user.name "Alan Hou" git config --global user.email xxx@gmail.com |
6.克隆Odoo代码
1 2 3 4 5 6 7 8 |
mkdir ~/odoo-dev cd ~/odoo-dev # 更正:使用以下链接无需加速在几个时段(尤其在清早)测试时速度还是挺快的 git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 --single-branch # Odoo Community Association (OCA)通常会更快速的包含bug修复内容,如需使用则应更改上述为 git clone -b 11.0 --single-branch https://github.com/OCA/OCB.git odoo # 安装时感觉OCA的下载速度更快,未反复测试,请自行选择 cd odoo |
小技巧:Git clone提速
通过http://tool.chinaz.com/dns/查询如下两个域名,查了几次后选择一个响应比较快的IP
1 2 3 |
# 在/etc/hosts中添加(更换如下IP部分),配置好后重启网络 151.101.229.194 github.global.ssl.fastly.net 151.101.228.133 assets-cdn.github.com |
注:以上加速确实有效果,但文件太大Alan实在没有耐心等待最终是下载了zip安装包来进行安装的
7.创建虚拟环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
virtualenv -p python3 ~/odoo-11.0 source ~/odoo-11.0/bin/activate # 或者使用virtualenvwrapper sudo apt-get install python3-setuptools sudo easy_install3 pip sudo -H pip install3 virtualenv sudo easy_install3 virtualenvwrapper mkvirtualenv --python=python3 odoo vi ~/.bashrc if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then export /usr/local/bin/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh fi source ~/.bashrc mkvirtualenv odoo |
8.安装Python相关包
1 |
pip install -r requirements.txt |
9.Odoo初体验
1 2 3 4 5 6 7 8 9 |
createdb odoo-test # 最后的$符号是通过正则避免有同样名称开头的数据库 python odoo-bin -d odoo-test --addons-path=addons --db-filter=odoo-test$ # 如数据库使用不同用户,还需添加--db_host=,--db_user=,--db_password配置数据库信息 # 通过python odoo-bin --help可查看更多配置选项 # 再次启动进入odoo-dev后可通过(按照文档中可使用简写-p加端口,在不加start时有效,但加start时仍为8069) odoo/odoo-bin start --http-port=8000 -d odoo-test |
命令行对应的参数参见官网Command-line interface: odoo-bin
完成后会看到提示端口号为8069,根据对应的IP加端口号进入登录页面(默认登录用户名和密码均为admin)
快速调试:有时我们想要复制一套环境进行修改以查看效果,以本例而言,仅需
1 2 3 4 5 6 |
# 在odoo-dev下新建目录my-odoo cd ~/odoo-dev mkdir my-odoo cd my-odoo/ # 不添加-d默认会以当前目录为名称创建数据库 ../odoo/odoo-bin start |
数据库图形化界面
除了前述的psql命令行界面,Odoo还提供了网页端管理的方式,需要在启动Odoo服务时访问http://your.ip.address:8069/web/database/manager
在这里可以完成设置或修改主库密码(可通过debian/odoo.conf中的db_password进行查看),备份(生产环境下请选择zip格式,否则备份可能不完全–有一部分文件默认存储在~/.local/share/Odoo/filestore中)、克隆、创建、还原、删除数据库等操作
注:createdb后加–template也可以从现有数据库中进行结构复制
对应的命令行操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 以demo数据初始化创建数据库 createdb testdb && odoo-bin -d testdb # 复制数据库(服务未运行状态下进行) createdb -T dbname newdbname cd ~/.local/share/Odoo/filestore # adapt if you have changed the data_dir cp -r dbname newdbname cd - # 删除数据库 dropdb dbname rm -rf ~/.local/share/Odoo/filestore/dbname # 创建备份 pg_dump -Fc -f dbname.dump dbname tar cjf dbname.tgz dbname.dump ~/.local/share/Odoo/filestore/dbname # 还原备份 tar xf dbname.tgz pg_restore -C -d dbname dbname.dump |
odoo-bin有很多的配置,每次运行都手敲显然太过麻烦,可以通过配置文件来简化
1 2 3 4 5 6 |
# 生成配置文件 odoo-bin --save --config myodoo.cfg --stop-after-init # 通过--help可查看相关配置,仅需去除前面的--再把中间杠替换为下划线即可, # 如--without-demo在配置文件中为without_demo,但存在一些例外,如--db-filter变为dbfilter #使用方法,其中-c是config的简写 odoo-bin -c myodoo.cfg |
开发者模式
开启开发者模式有利于开发中了解更丰富的信息,一种方法是点击后台左上角的Settings,然后在进入的页面右侧Share the Love版块下端可以点击链接进行激活。
其中with assets是指对于JS和CSS代码不进行压缩,方便找到前端代码的问题所在。
另一种简便的开启开发者模式的方式是在URL的#前加上?debug或?debug=assets
如将http://192.168.1.109:8069/web#view_type=kanban&model=ir.module.module&action=31
更改为
http://192.1681.109:8069/web?debug=assets#view_type=kanban&model=ir.module.module&action=31
打开开发者模式的效果如下(悬浮在字段上时会显示详细的开发信息,点击右上角小虫图标可唤出开发中可以使用到的一个菜单列表)
升级
首先备份好数据库,对代码的版本进行一次记录,建议使用:
1 2 3 |
cd ~/odoo-dev/odoo git checkout 11.0 git tag 11.0-before-update-$(date --iso) |
获取最新代码
1 |
git pull –-ff-only origin 11.0 |
更新本地代码(如未配置数据库则需添加-d指定)
1 |
./odoo-bin -c myodoo.cfg --stop-after-init -u base |
如果升级失败,可通过以下方式恢复代码,然后手动恢复备份数据库即可
1 |
git reset --hard 11.0-before-update-$(date --iso) |
常见问题
1.ssh: connect to host 192.168.xxx.xxx port 22: Connection refused
本地虚拟机(Ubuntu)出现以上报错
a.首先通过sudo ufw status查看防火墙是否开启,如开启可尝试通过sudo ufw disable进行关闭
b.安装sshd服务
sudo apt-get install openssh-server
sudo /etc/init.d/ssh restart
2.apt-get安装报错
1 2 3 4 5 6 |
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package python3.6 E: Couldn't find any package by regex 'python3.6' E: Unable to locate package virtualenv |
这个通常和安装源有关
1 2 3 4 5 6 |
# 编辑镜像源文件 sudo vi /etc/apt/sources.list # 加入https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/相应版本中所示内容 sudo apt-get update |
3.Exception in thread odoo.service.httpd:
…
OSError: [Errno 98] Address already in use
查找是否已存在Odoo进程并结该进程
1 2 3 |
ps aux |grep odoo # 以进程号1792为例 sudo kill -9 1792 |
4.忘记后台登录密码
1 2 3 4 5 6 7 8 9 |
# 生成加密的密码 from passlib.context import CryptContext print CryptContext(['pbkdf2_sha512']).encrypt('MY_PASSWORD') #进入数据库(以默认 odoo 为例) sudo su - postgres \c odoo # 更新密码(假设用为 id 为1,可通过 SELECT进行查询) UPDATE res_users SET password_crypt='your new password hash'WHERE id=1; |