本地部署odoo16
  • odoo:https://www.odoo.com/documentation/14.0/zh_CN/administration/install/install.html#mac-os
  • https://alanhou.org/odoo14-cookbook/
  • pycharm:https://www.jetbrains.com/pycharm/download/#section=mac
安装其他依赖,这些核心工作帮助我们使用简单命令安装其它Odoo依赖。
  • brew
brew install freetype
brew install jpeg
brew install libpng
brew install libtiff
brew install xz
brew install webp
brew install node # 安装node
  • npm
npm install -g cnpm --registry=https://registry.npm.taobao.org #如果npm太慢,使用cnpm安装包
cnpm install -g less less-plugin-clean-css #使用node安装依赖
sudo cnpm install -g rtlcss
安装PostgreSQL
  • 检查brew:
brew doctor
brew update
  • 安装
brew install postgres
  • 你也可以指定版本:
brew install postgres@11.17
  • 启动 PostgreSQL 作为服务使用;
brew services start postgresql
  • 停止 PostgreSQL
brew services stop postgresql
  • 搭建环境(创建用户和数据库,名字与当前mac用户名字一样)
sudo -u postgres createuser -s $USER
createdb $USER
  • $(whoami) 用于获取系统用户名
  • -s选项用于授予超级用户权限。
  • Odoo使用psycopg2 Python库来与PostgreSQL数据库建立连接。通过psycopg2库访问PostgreSQL数据库。Odoo使用如下的默认值:
  • 默认psycopg2尝试使用本地连接的当前用户相同的用户名来连接数据库,这会启动无密码认证(在开发环境中这样很好)
  • 本地连接使用域套接字
  • 数据库服务监听5432端口
  • 添加环境变量(要添加两个:一个是brew的、一个是PostgreSQL的;需要按照自己的安装目录来)
cat ~/.zshrc
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export PATH="/opt/homebrew/bin:/opt/homebrew/Cellar/postgresql@14/14.5_5/bin:$PATH"

#使配置生效
source ~/.zshrc
  • 修改密码
psql -c "alter role $(whoami) with password 'newpassword'"
  • 如果想使用不同的数据库用户,则需提供该用户的密码。通过在创建用户时在命令行传递
  • -O:指定创建库的所属用户
  • –P:标记来实现,此时命令行会提示你输入密码。
Git获取源码(-b:指定版本号为14.0,不指定则是最新版本)
git clone -b 14.0 https://gitee.com/mirrors/odoo.git
  • 使用pycharm进入项目,创建虚拟环境,进入虚拟环境然后再安装依赖
cd odoo
pip3 install setuptools wheel
pip3 install -r requirements.txt
  • wkhtmltopdf 不是通过 pip 安装的,必须在这里中手动安装 ,进入选择macos的下载,下好后双击安装
  • 用于在Odoo中将销售订单、发票等报告打印为PDF文档。
  • 有些安装包会安装失败需要自己后面手动安装或进行编译安装
pip install 包名
编译安装PyPI下载的包:(https://pypi.org/)
  • 进入包编译:
python setup.py build
  • 安装:
python setup.py install
  • 启动服务
python3 odoo-bin --addons-path=addons -d 库名 -i base
  • 进入系统
localhost:8069

初始账号密码都是admin
docker部署odoo14

参数

解释

-d (–detach)

在后台静默运行容器

-p (–publish)

将指定的容器端口发布映射到宿主机,格式: 宿主机端口:容器端口。小写p

-P (–publish-all)

将容器中所有已被暴露的端口发布映射到宿主机(随机分配,避免端口冲突)大写P

-v (–volume)

将宿主机目录挂载到容器里,格式: 宿主机目录:容器目录

-e (–env)

设置环境变量

–name

为容器分配一个名称

–link

链接添加到另一个容器。–link 连接的容器名:重命名

安装docker
brew install docker
  • 部署PostgreSQL
docker pull postgres:13
docker run -d -p 15432:5432 --name postgresql_13 -v /Users/pert/Documents/odoo/postgresql_13:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres postgres:13
  • 用户POSTGRES_USER:odoo
  • 密码POSTGRES_PASSWORD:odoo
  • 端口号填写映射到宿主机的端口:15432
  • 不要建/Users/pert/Documents/odoo/postgresql_13这个文件夹
  • 部署odoo
docker pull --platform linux/amd64  odoo:14.0
docker run -d -p 18069:8069 --name odoo_14 -v /Users/pert/Documents/odoo/addons:/mnt/extra-addons --link postgresql_13:db odoo:14.0
  • 不要建/Users/pert/Documents/odoo/addons这个文件夹
  • --platform linux/amd64:指定处理器,Mac苹果电脑
  • odoo:14.0:指定版本号
  • amd64 图像性能不佳,有时还会出现崩溃行为。这是 Apple Silicon 芯片上 Docker + qemu 的一个已知问题。因此,Docker 建议尽可能避免使用 amd64 映像。

并非所有映像都可用于 ARM64 架构。您可以添加 --platform linux/amd64 以在仿真下运行 Intel 映像。特别是 mysql 映像不适用于 ARM64。您可以使用 mariadb 映像解决此问题。

  • 本地终端以root身份进入容器并设置root密码,这样在docker软件里就可以进入了root用户了
docker exec -ti --user root odoo_14 /bin/bash
passed root
  • 服务管理
docker start odoo_14
docker stop odoo_14
docker restart odoo_14
  • 部署pgadmin
docker pull dpage/pgadmin4
docker run -d --name pgadmin4 -p 15050:80 -e PGADMIN_DEFAULT_EMAIL=linglonglion@ -e PGADMIN_DEFAULT_PASSWORD=sll -e PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True   -e PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10 dpage/pgadmin4
  • 主机名称/地址 一项,需要填写 host.docker.internal 因为pgadmin运行在docker中,所以这里不能写localhost或127.0.0.1。这里除了 host.docker.internal 还能填写宿主机IP。
进一步使用Odoo
  • 指定存储文件的卷,这样容器被删除后数据依然可以保留
docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo:14.0
  • 指定插件目录
docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t odoo:14.0
  • 指定配置文件,替代容器的配置文件
docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t odoo:14.0
  • 运行多个odoo实例
docker run -d -p 18070:8069 --name odoo14_01 --link postgresql_12:db odoo:14.0
docker run -d -p 18071:8069 --name odoo14_02 --link postgresql_12:db odoo:14.0
  • 数据库 db_filter隔离
docker run -d -p 18072:8069 --name odoo14_03 --link postgresql_13:db --dbfilter=odoo_db_03
  • 查看容器odoo中的文件
docker exec -it -u root odoo bash
  • 查看odoo的源码
cd /usr/lib/python3/dist-packages/odoo
  • 查看docker容器odoo最新10条日志
docker logs -f -t --since="2018-09-04" --tail=10 odoo:12
  • 查看容器中服务的进程(1b0f78a03cd1是docker ps 看到的CONTAINER ID)
docker top 1b0f78a03cd1
  • 挂在本地文件到docker上(将本地的/home/odoo/addons目录下的模块挂载到docker的/mnt/extra-addons目录下)
sudo docker run -v /home/odoo/addons:/mnt/extra-addons  -p 8069:8069 --name odoo11 --link db:db -t odoo
  • 删除镜像83eccbc7dc0c是docker images 看到的IMAGE ID)
docker rmi -f 83eccbc7dc0c
  • 删除容器odoo(先将服务停了docker stop odoo)
docker rm odoo
安装包
  • 更新apt-get指令
apt-get update
  • 安装yum命令
apt-get  install  vim 
apt-get  install  yum

我总结了几种方式改配置文件

1.我上述的 docker容器内安装yum,vim等命令

2.可以cp 复制,将容器内的文件复制出来,在复制进去

3.通过容器卷技术 -v 挂载

4.别人或者你自己的配置好的镜像

odoo:14源码安装
  • 安装包
python setup.py install
pip uninstall PyPDF2

pip install PyPDF2==1.26.0 -i https://mirrors.aliyun.com/pypi/simple/
pip install openpyxl  -i https://mirrors.aliyun.com/pypi/simple/
pip install wechatpy  -i https://mirrors.aliyun.com/pypi/simple/
pip install networkx  -i https://mirrors.aliyun.com/pypi/simple/
pip install pypeg2  -i https://mirrors.aliyun.com/pypi/simple/
pip install requests  -i https://mirrors.aliyun.com/pypi/simple/
pip3 install pandas  -i https://mirrors.aliyun.com/pypi/simple/
pip install --upgrade tencentcloud-sdk-python -i http:///simple/ --trusted-host  --trusted-host 
pip install cryptography -i https://mirrors.aliyun.com/pypi/simple/
pip install chinese_calendar -i https://mirrors.aliyun.com/pypi/simple/
pip install xlrd -i https://mirrors.aliyun.com/pypi/simple/
pip install chardet -i https://mirrors.aliyun.com/pypi/simple/
  • 需要将dingtalk包加到虚拟环境中的site-packages中
  • 启动
./odoo-bin --limit-memory-hard 0 --addons-path=/Users/pert/Downloads/odoo-14.0/addons,/Users/pert/Downloads/odoo-14.0/odoo/addons,/Users/pert/Downloads/odoo-14.0/xzkj  -d lol --db_user pert --db_password sunset --save --config myodoo.cfg --stop-after-init
  • –addons-path:指定插件路径
  • -d:指定数据库
  • –db_user:数据库用户名
  • –db_password:数据库密码
  • –save --config:将这个启动命令创建一个配置文件为myodoo.cfg
  • –stop-after-init:创建好后停止项目启动
  • 使用配置文件启动
./odoo-bin -c myodoo.cfg
  • css问题
pip install libsass
  • 注释掉odoo源码 odoo/service/server.py 中
def set_limit_memory_hard():
    if  == 'posix' and config['limit_memory_hard']:
        rlimit = resource.RLIMIT_RSS if platform.system() == 'Darwin' else resource.RLIMIT_AS
        soft, hard = resource.getrlimit(rlimit)
        # resource.setrlimit(rlimit, (config['limit_memory_hard'], hard))
  • 或者启动加
--limit-memory-hard 0