如何在 Ubuntu 20.04 上安装 Odoo 14 ERP 软件
本教程适用于这些操作系统版本
- Ubuntu 15.04(Vivid Vervet)
在此页
- 先决条件
- 配置防火墙规则
- 分配主机名
- 安装和配置 PostgreSQL
- 配置基于主机的身份验证
- 配置PostgreSQL监听地址
- 启用并启动 PostgreSQL 服务
- 创建 Odoo 服务
- 设置文件权限
- 启动 Odoo 服务器
Odoo(以前称为 OpenERP)是一个包含 10,000 多个开源应用程序的自托管套件,适用于各种业务需求,包括 CRM、电子商务、会计、库存、项目管理和销售点。这些应用程序完全集成并可通过通用 Web 界面进行访问。
在本教程中,我们将学习在基于 Ubuntu 20.04 的服务器上安装 Odoo 14 Stack。
先决条件
-
A Ubuntu 20.04 based server with a minimum of 2GB RAM to host Odoo Stack.
-
A second Ubuntu 20.04 based server with a minimum of 2GB RAM for hosting the PostgreSQL database. You can however install the database on the same server as Odoo but for production environments, it is highly recommended that you install it on a separate server. You can also choose any of the managed database options available from any provider of your choice.
-
RAM requirement will depend on the number of concurrent users that will be using the stack. A detailed guide on how to calculate system requirements can be found in Odoo's documentation.
-
Keep your systems updated.
$ sudo apt update $ sudo apt upgrade
-
A non-root user with sudo privileges on both servers.
配置防火墙规则
出于本教程的目的,我们假设您在两台服务器上都安装了
ufw
防火墙。在 Odoo 服务器上,我们需要打开端口 22、80、443、6010、5432 和 8069。 22 用于 SSH,80 用于 HTTP,443 用于 HTTPS,6010 用于 Odoo 通信,5432 用于 PostgreSQL,8069 用于 Odoo 服务器应用程序。
运行以下命令在 Odoo 服务器上打开所需的端口。
$ sudo ufw allow "OpenSSH" $ sudo ufw allow 80,443,6010,5432,8069,8072/tcp $ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp $ sudo ufw allow 6010/tcp $ sudo ufw allow 5432/tcp $ sudo ufw allow 8069/tcp $ sudo ufw allow 8072/tcp
在 PostgreSQL 服务器上,我们需要打开端口 22、6010 和 5432。使用我们刚才讨论的命令打开它们。
分配主机名
您可以使用服务器的 IP 地址或使用它们的完全限定域名 (FQDN)(如果可用)。对于我们的教程,我们将使用 FQDN,为此,我们需要在两台服务器上设置主机名。
在 Odoo 服务器上,打开
/etc/hosts
文件。$ sudo nano /etc/hosts
确保它看起来像下面这样。
127.0.0.1 localhost 127.0.0.1 odoo.yourdomain.com odoo 10.1.1.10 postgresql.yourdomain.com postgresql
在 PostgreSQL 服务器上,打开文件并确保其如下所示。
127.0.0.1 localhost 127.0.0.1 postgresql.yourdomain.com postgresql 10.1.2.10 odoo.yourdomain.com odoo
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
安装和配置 PostgreSQL
Ubuntu 20.04 默认附带 PostgreSQL 12,我们将安装它。在 PostgreSQL 服务器上运行以下命令。
$ sudo apt install postgresql-12 postgresql-server-dev-12
接下来,我们需要创建一个数据库用户
odoo.
$ sudo -u postgres createuser odoo -U postgres -dP
选项
-u
以postgres
用户身份执行命令。选项
-U
表示连接的用户名。选项
-d
授予用户创建数据库的权限。选项
-p
提示输入新用户密码。配置基于主机的身份验证
我们需要授予 PostgreSQL 服务权限才能连接到 Odoo 服务器。
首先,停止 PostgreSQL 服务。
$ sudo systemctl stop postgresql
打开文件
/etc/postgresql/12/main/pg_hba.conf
进行编辑。$ sudo nano /etc/postgresql/12/main/pg_hba.conf
在末尾粘贴以下行。
host all odoo odoo.yourdomain.com md5
此行向
odoo
用户授予连接到此服务器中所有数据库的权限。您也可以指定数据库的名称,而不是使用all
关键字。按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
配置PostgreSQL监听地址
接下来,我们需要让数据库服务器监听远程连接。打开文件
/etc/postgresql/12/main/postgresql.conf
进行编辑。$ sudo nano /etc/postgresql/12/main/postgresql.conf
将
listen_addresses
行从#listen_addresses = 'localhost' # what IP address(es) to listen on;
到。
#From CONNECTIONS AND AUTHENTICATION Section listen_addresses = '*'
*
表示它将监听所有的 IP 地址。您可以将其更改为您的 odoo 实例的 IP 地址。按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
启用并启动 PostgreSQL 服务
由于我们的配置已完成,是时候启动并启用 PostgreSQL 服务了。
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
安装 Odoo
安装依赖项并准备安装
创建一个新的系统用户来管理 Odoo 服务器上的 Odoo 进程。
$ sudo adduser --system --home=/opt/odoo --group odoo
我们需要安装一些系统依赖项,但首先,我们需要启用源代码库。为此,请备份原始源列表,然后启用所有源存储库并更新存储库列表。
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~ $ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list $ sudo apt update
安装 Odoo 14 设置所需的系统依赖项。
$ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev $ sudo apt build-dep lxml
安装节点。
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - $ sudo apt install nodejs
使用 Node 安装 Less CSS 包。
$ sudo npm install -g less less-plugin-clean-css
下载
wkhtmltopdf
版本 0.12.6 包。$ cd /tmp $ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
安装软件包。
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
为确保
wkhtmltopdf
正常运行,将二进制文件复制到/usr/bin
并授予它们适当的权限。$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/ $ sudo chmod a+x /usr/bin/wk* $ cd ~
下载 Odoo 文件
将 Odoos Github 存储库克隆到您的系统。
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
出于我们的目的,我们将 Odoo 从安装位置复制到
/opt/odoo
目录。设置 Virtualenv Python 环境
此步骤是可选的,但建议执行,因为 Odoo 的虚拟 Python 环境将有助于避免与操作系统的 Python 模块发生冲突,尤其是在执行操作系统升级时。
为此,我们将使用
virtualenv
。-
Create a new
virtualenv
environment for Odoo.$ python3 -m venv /home/<username>/odoo-env
-
Activate the virtual environment. We are creating an environment under the system user's home directory. You are free to choose any location you like.
$ source /home/<username>/odoo-env/bin/activate
-
Update PIP just in case.
(odoo-env) $ pip3 install --upgrade pip
-
Install Python's wheel in the virtual environment.
$ pip3 install wheel
安装 Python 依赖项
安装 Odoo 14 所需的 Python 依赖项。
$ pip3 install -r /opt/odoo/doc/requirements.txt $ pip3 install -r /opt/odoo/requirements.txt
安装这些要求需要一些时间,所以请耐心等待。
通过检查已安装的 Python 模块列表来检查是否正确安装了要求。
$ pip3 list Package Version ----------------------------- --------- alabaster 0.7.12 appdirs 1.4.4 attrs 20.3.0 Babel 2.6.0 beautifulsoup4 4.9.3 cached-property 1.5.2 certifi 2020.12.5 chardet 3.0.4 decorator 4.3.0 defusedxml 0.7.1 docutils 0.14 ebaysdk 2.1.5 feedparser 5.2.1 freezegun 0.3.15 gevent 20.9.0 greenlet 0.4.17 html2text 2018.1.9 idna 2.6 imagesize 1.2.0 isodate 0.6.0 Jinja2 2.11.2 libsass 0.17.0 lxml 4.6.1 Mako 1.0.7 MarkupSafe 1.1.0 num2words 0.5.6 ofxparse 0.19 packaging 20.9 passlib 1.7.1 Pillow 8.0.1 pip 21.0.1 pkg-resources 0.0.0 polib 1.1.0 psutil 5.6.6 psycopg2 2.8.5 pyasn1 0.4.8 pyasn1-modules 0.2.8 pydot 1.4.1 Pygments 2.8.1 pyparsing 2.4.7 PyPDF2 1.26.0 pyserial 3.4 python-dateutil 2.7.3 python-ldap 3.1.0 python-stdnum 1.8 pytz 2019.1 pyusb 1.0.2 qrcode 6.1 reportlab 3.5.55 requests 2.21.0 requests-toolbelt 0.9.1 setuptools 44.0.0 six 1.15.0 snowballstemmer 2.1.0 soupsieve 2.2 Sphinx 3.5.2 sphinx-patchqueue 1.0.4 sphinxcontrib-applehelp 1.0.2 sphinxcontrib-devhelp 1.0.2 sphinxcontrib-htmlhelp 1.0.3 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 1.0.3 sphinxcontrib-serializinghtml 1.1.4 unidiff 0.6.0 urllib3 1.24.3 vobject 0.9.6.1 Werkzeug 0.16.1 wheel 0.36.2 xlrd 1.2.0 XlsxWriter 1.1.2 xlwt 1.3.0 zeep 3.2.0 zope.event 4.5.0 zope.interface 5.2.0
退出 Python 虚拟环境。
$ deactivate
配置 Odoo
复制默认的 Odoo 配置文件以创建一个新配置文件。
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
打开文件进行编辑。
$ sudo nano /etc/odoo-server.conf
编辑该文件,使其如下所示。
[options] ; This is the password that allows database operations: admin_passwd = admin db_host = postgresql.yourdomain.com db_port = False db_user = odoo db_password = odoo_password addons_path = /opt/odoo/addons xmlrpc_port = 8069
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
选项
admin_passwd
是允许在 Odoo GUI 中进行管理操作的密码。请务必选择一个安全的密码。选项
db_host
是 PostgreSQL 服务器的 FQDN 或 IP 地址。由于正在使用默认的 PostgreSQL 端口 5432,因此选项
db_port
设置为 false。如果您想使用不同的端口,则需要更新此值。选项
db_user
是 PostgreSQL 用户的名称。选项
db_password
是我们之前在 PostgreSQL 服务器上创建的 PostgreSQL odoo 用户密码。选项
addons_path
是默认的 Addons 路径。您还可以为插件添加自定义路径,用逗号分隔它们。选项
xmlrpc_port
是 Odoo 监听的端口。创建 Odoo 服务
为了确保即使在系统重启后 Odoo 也能继续运行,我们需要为它创建一个服务。
创建文件
/lib/systemd/system/odoo-server.service
并打开它进行编辑。$ sudo nano /lib/systemd/system/odoo-server.service
将以下代码粘贴到其中。
[Unit] Description=Odoo Open Source ERP and CRM [Service] Type=simple PermissionsStartOnly=true SyslogIdentifier=odoo-server User=odoo Group=odoo ExecStart=/home/<username>/odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/ WorkingDirectory=/opt/odoo/ StandardOutput=journal+console [Install] WantedBy=multi-user.target
将
/home/
替换为您选择用于安装 Python 虚拟环境的位置。按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
设置文件权限
在
odoo-server.service
文件上设置权限,以便只有 Odoo 用户可以读取或执行它。$ sudo chmod 755 /lib/systemd/system/odoo-server.service $ sudo chown odoo: /lib/systemd/system/odoo-server.service
设置 Python 环境和 Odoo 安装目录的所有权。
$ sudo chown -R odoo: /opt/odoo/ $ sudo chown -R odoo: /home/<username>/odoo-env
限制 Odoo 配置文件。
$ sudo chown odoo: /etc/odoo-server.conf $ sudo chmod 640 /etc/odoo-server.conf
启动 Odoo 服务器
启动并启用 Odoo 服务器。
$ sudo systemctl start odoo-server $ sudo systemctl enable odoo-server
检查服务器的状态。
$ sudo systemctl status odoo-server
在浏览器中,打开 URL
http://
或:8069 http://odoo.yourdomain.com:8069
。如果一切正常,您应该会看到 Odoos 数据库创建屏幕。填写所有字段。检查
Demo Data
字段以使用示例数据填充数据库,然后单击创建数据库按钮。接下来,您将看到一个可以选择的应用程序列表。
第一次创建数据库时,加载项页面需要一些时间来加载,所以不要刷新页面。
安装和配置 Nginx
到目前为止,我们一直在使用 Odoos 服务器来运行堆栈。但理想情况下,最好使用代理在 Nginx 上运行它,因为这将允许我们在其上安装 SSL。
安装 Nginx。
$ sudo apt install nginx
要通过 Nginx 运行它,我们需要在本地主机上运行 Odoo。要更改它,请停止 Odoo 服务。
$ sudo systemctl stop odoo-server
打开 Odoo 服务器配置文件。
$ sudo nano /etc/odoo-server.conf
向其中添加以下行。
xmlrpc_interface = 127.0.0.1 proxy_mode = True
为 Odoo 创建一个 Nginx 配置文件。
$ sudo nano /etc/nginx/sites-available/odoo.conf
粘贴下面的代码。
#odoo server upstream odoo { server 127.0.0.1:8069; } upstream odoochat { server 127.0.0.1:8072; } # http -> https server { listen 80; server_name odoo.yourdomain.com; rewrite ^(.*) https://$host$1 permanent; } server { listen 443 ssl http2; server_name odoo.yourdomain.com; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; # Add Headers for odoo proxy mode proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; # SSL parameters ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_dhparam /etc/ssl/certs/dhparam.pem; # log access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log; # Redirect longpoll requests to odoo longpolling port location /longpolling { proxy_pass http://odoochat; } # Redirect requests to odoo backend server location / { proxy_redirect off; proxy_pass http://odoo; } # common gzip gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript; gzip on; }
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
通过将此配置文件链接到
sites-enabled
目录来激活它。$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
测试 Nginx 配置。
$ sudo nginx -t
安装 SSL
我们将使用 Lets Encrypt 服务安装 SSL。
为此,安装 Certbot。
$ sudo apt install certbot
停止 Nginx,因为它会干扰 Certbot 进程。
$ sudo systemctl stop nginx
生成证书。我们还需要创建一个 DHParams 证书。
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m --keep-until-expiring $ sudo systemctl start nginx $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
我们还需要设置一个 cron 作业来自动更新 SSL。要打开 crontab 编辑器,请运行以下命令。
$ sudo crontab -e
将以下行粘贴到底部。
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
上面的 cron 作业将在每天凌晨 2:25 运行 certbot。您可以将其更改为任何您想要的。
通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
启动Odoo
现在一切都设置好了,我们可以再次启动 Odoo 服务器。
$ sudo systemctl start odoo-server
通过
https://odoo.yourdomain.com
在浏览器中启动 Odoo。您将看到前面描述的屏幕。输入创建数据库所需的详细信息,您应该登录到 Odoo 并看到这样的屏幕。结论
我们关于在 Ubuntu 20.04 服务器上安装 Odoo 的教程到此结束。如果您有任何问题,请在下面的评论中发表。