在企业数字化转型的浪潮中,Odoo作为一款强大的开源企业资源规划(ERP)软件,备受关注。今天,我们将深入探讨如何在Ubuntu 22.04操作系统上从源代码安装Odoo,并详细解释每个步骤背后的原理。
建议使用Linux Ubuntu操作系统进行Odoo的安装。这是因为Odoo在其所有测试、调试和企业版安装中都使用该系统,而且大多数Odoo开发者也使用GNU/Linux发行版,遇到操作系统级问题时更易从社区获得支持。若工作站使用不同操作系统,可在工作站上设置虚拟机并安装GNU/Linux发行版。本书使用Ubuntu Server 22.04 LTS,但也可选择其他Debian GNU/Linux操作系统。使用前需对所选Linux发行版的命令行操作有一定了解。
假设已成功运行Ubuntu 22.04,并且拥有root访问权限或已配置sudo。在后续操作中,部分配置需要系统登录用户名,此时将使用$(whoami)
命令来获取当前登录用户名。若没有GitHub账户,建议前往https://github.com创建一个,这会使一些操作更加便捷。
打开终端,依次执行以下命令:
sudo apt-get update
sudo apt install openssh-server fail2ban python3-pip python3-dev libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev build-essential libssl-dev libffi-dev libmysqlclient-dev libpq-dev libjpeg8-dev liblcms2-dev libblas-dev libatlas-base-dev git curl python3-venv python3.10-venv fontconfig libxrender1 xfonts-75dpi xfonts-base -y
这些依赖项包含了各种工具,如git
、pip3
、wget
以及Python的一些开发和配置工具等。它们是后续安装其他Odoo依赖项的基础,能够帮助我们通过简单命令完成复杂的安装过程。
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb
若在执行上述命令后遇到错误,可使用以下命令强制安装依赖项:
sudo apt-get install -f
wkhtmltopdf
用于在Odoo中打印PDF文档,如销售订单、发票和其他报告。Odoo 17.0需要特定版本(0.12.6.1)的wkhtmltopdf
,该版本可能未包含在当前Linux发行版中,因此我们从官方提供的地址下载并安装。
在终端中执行:
sudo apt install postgresql -y
PostgreSQL将用于Odoo的数据库管理。
依次执行以下命令:
sudo -i -u postgres createuser -s $(whoami)
sudo su postgres
psql
alter user $(whoami) with password 'your_password';
\q
exit
这里创建了一个与系统登录名相同的数据库用户,并赋予超级用户权限(-s
选项)。这是因为Odoo默认使用psycopg2
库连接PostgreSQL数据库,默认情况下会尝试使用与当前用户相同的用户名进行本地连接,以实现无密码认证(适用于开发环境)。本地连接使用Unix域套接字,数据库服务器监听端口为5432。对于开发服务器,给予超级用户权限方便操作;但在生产环境中,应使用--createdb
命令行选项来限制权限,避免因超级用户权限带来安全风险。若要使用不同登录名的数据库用户,创建用户时需通过--pwprompt
标志提供密码。若用户已创建但需设置或修改密码,可使用psql -c "alter role $(whoami) with password 'newpassword'"
命令。若该命令因数据库不存在而失败,可添加--dbname
选项指定现有数据库名,如--dbname template1
。
在终端中输入以下命令,将"Your Name"
替换为你的真实姓名,[email protected]
替换为你的邮箱地址:
git config --global user.name "Your Name"
git config --global user.email [email protected]
配置git用户信息,方便后续从GitHub获取Odoo代码库及进行相关操作。
执行以下命令:
mkdir ~/odoo-dev
cd ~/odoo-dev
git clone -b 17.0 --single-branch --depth 1 https://github.com/odoo/odoo.git
首先创建odoo-dev
目录,进入该目录后,使用git clone
命令从Odoo官方GitHub仓库下载源代码。这里指定了-b 17.0
表示只下载17.0版本的分支,--single-branch
仅获取单一分支,--depth 1
避免下载分支的完整提交历史,可加快下载速度。若需要,也可省略这些选项获取完整代码。
在终端中依次执行:
python3 -m venv ~/venv-odoo-17.0
source ~/venv-odoo-17.0/bin/activate
创建一个名为venv-odoo-17.0
的Python虚拟环境,并激活它。在虚拟环境中安装Odoo的Python依赖项,可避免与系统Python环境的冲突。
在激活虚拟环境后,执行以下命令:
cd ~/odoo-dev/odoo/
pip3 install -r requirements.txt
进入Odoo代码目录,使用pip3
安装requirements.txt
文件中列出的Python依赖项,确保Odoo正常运行。
在终端中输入:
createdb odoo-test
python3 odoo-bin -d odoo-test -i base --addons-path=addons --db-filter=odoo-test$
首先创建一个名为odoo-test
的数据库,然后使用python3 odoo-bin
命令启动Odoo实例。-d
指定数据库名称,-i
指定要安装的模块(这里为基础模块base
),--addons-path
指定附加模块的路径,--db-filter
设置数据库过滤器。
打开浏览器,访问http://localhost:8069,使用admin
账户登录,密码为admin
。若需要RTL(从右到左)支持,可执行以下命令安装node
和rtlcss
:
sudo apt-get install nodejs npm -y sudo
npm install -g rtlcss
在第一步安装主要依赖项时,这些依赖项构成了一个基础工具集。它们为后续安装其他Odoo依赖项提供了便利,例如通过pip3
可以方便地安装Python库,git
用于获取代码库等。
Odoo在处理PDF文档打印功能时依赖wkhtmltopdf
。由于Odoo 17.0对其版本有特定要求(0.12.6.1),而当前Linux发行版可能未包含该版本,因此从官方提供的针对不同发行版的预构建包下载地址获取并安装,以确保Odoo的PDF打印功能正常工作。
PostgreSQL作为Odoo的数据库管理系统,其配置与Odoo的连接方式紧密相关。Odoo默认使用psycopg2
库连接PostgreSQL,在开发环境中,通过创建与当前用户同名且具有超级用户权限的数据库用户,利用默认的本地连接方式(无密码认证、Unix域套接字、端口5432)实现便捷的数据库连接。但在生产环境中,为了安全考虑,应限制用户权限,避免因超级用户权限带来的潜在安全风险。
配置git用户信息后,通过git clone
命令从GitHub获取Odoo代码库。选择特定版本分支和下载选项可以根据需求灵活获取代码,例如只获取17.0版本的代码且避免下载完整提交历史可加快下载速度,同时也方便在不同版本间切换和管理代码。