Как установить Odoo 14 на Ubuntu 20.04 с Let’s Encrypt SSL
Odoo — это набор бизнес-приложений с открытым исходным кодом, управляемых с единой консоли. На Odoo доступен ряд бизнес-приложений, включая CRM с открытым исходным кодом, конструктор веб-сайтов, электронную коммерцию, управление складом, управление проектами, выставление счетов и учет, точки продаж, управление персоналом, маркетинг, производство, управление закупками и другие. В этой статье мы погрузимся в установку и настройку Odoo 14 в Ubuntu 20.04 Linux с SSL-сертификатами Let’s Encrypt.
Бизнес-приложения Odoo можно устанавливать и использовать как автономные приложения, но они также легко интегрируются, так что вы получаете полнофункциональную ERP с открытым исходным кодом при установке нескольких приложений. В этом руководстве также будет рассказано, как настроить прокси-сервер Nginx с SSL-сертификатом Let’s Encrypt, но можно использовать любой другой настраиваемый SSL-сертификат, самозаверяющий или подписанный известным центром сертификации.
Шаг 1. Обновите систему Ubuntu
Мы всегда начинаем нашу установку с обновления системы и обновления всех установленных пакетов.
sudo apt update
sudo apt upgrade -y
Подождите, пока все пакеты обновятся, затем перезагрузите систему. Это необходимо при наличии обновлений ядра.
sudo systemctl reboot
Шаг 2. Установите сервер базы данных PostgreSQL
Odoo требует сервер базы данных, на котором хранятся данные. Мы установим версию сервера PostgreSQL по умолчанию, доступную в исходных репозиториях Ubuntu.
Чтобы установить версию по умолчанию, доступную в репозиториях Ubuntu. запустить:
sudo apt install postgresql postgresql-client -y
После установки запускается служба базы данных.
$ systemctl status postgresql*
● postgresql@12-main.service - PostgreSQL Cluster 12-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled-runtime; vendor preset: enabled)
Active: active (running) since Fri 2020-11-06 10:34:45 CET; 1min 6s ago
Main PID: 2177 (postgres)
Tasks: 7 (limit: 2286)
Memory: 18.0M
CGroup: /system.slice/system-postgresql.slice/postgresql@12-main.service
├─2177 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
├─2179 postgres: 12/main: checkpointer
├─2180 postgres: 12/main: background writer
├─2181 postgres: 12/main: walwriter
├─2182 postgres: 12/main: autovacuum launcher
├─2183 postgres: 12/main: stats collector
└─2184 postgres: 12/main: logical replication launcher
Nov 06 10:34:43 ubuntu systemd[1]: Starting PostgreSQL Cluster 12-main...
Nov 06 10:34:45 ubuntu systemd[1]: Started PostgreSQL Cluster 12-main.
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Fri 2020-11-06 10:34:40 CET; 1min 11s ago
Main PID: 1911 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 2286)
Memory: 0B
CGroup: /system.slice/postgresql.service
Nov 06 10:34:40 ubuntu systemd[1]: Starting PostgreSQL RDBMS...
Nov 06 10:34:40 ubuntu systemd[1]: Finished PostgreSQL RDBMS.
Шаг 3. Установите wkhtmltopdf
wkhtmltopdf требуется для печати отчетов, так как он выполняет преобразование HTML в PDF. Версия wkhtmltopdf, доступная в репозиториях Ubuntu, не поддерживает верхние и нижние колонтитулы, поэтому не используется в качестве прямой зависимости.
Установите wkhtmltopdf & wkhtmltoimage в Ubuntu / Linux
Шаг 4: Установите Odoo 14 на Ubuntu 20.04 / 18.04 LTS
Добавьте репозиторий Odoo deb, чтобы вы могли установить Odoo 14 на Ubuntu 20.04 | 18.04.
wget -O - https://nightly.odoo.com/odoo.key | sudo apt-key add -
echo "deb http://nightly.odoo.com/14.0/nightly/deb/ ./" | sudo tee /etc/apt/sources.list.d/odoo.list
Обновите кеш Apt и установите Odoo 14 в Ubuntu 20.04 | 18.04.
sudo apt update
sudo apt install odoo
Согласитесь начать установку:
The following NEW packages will be installed:
docutils-common fonts-font-awesome fonts-inconsolata fonts-roboto-unhinted graphviz libann0 libcairo2 libcdt5 libcgraph6 libdatrie1 libgd3 libgraphite2-3
libgts-0.7-5 libgvc6 libgvpr2 libharfbuzz0b libice6 libimagequant0 libjbig0 libjpeg8 libjs-jquery libjs-underscore liblab-gamut1 liblcms2-2 libpango-1.0-0
libpangocairo-1.0-0 libpangoft2-1.0-0 libpathplan4 libpixman-1-0 libsass1 libsm6 libthai-data libthai0 libtiff5 libwebp6 libwebpdemux2 libwebpmux3 libxaw7
libxcb-render0 libxcb-shm0 libxmu6 libxpm4 libxt6 odoo python-babel-localedata python3-aiohttp python3-appdirs python3-async-timeout python3-babel python3-bs4
python3-cached-property python3-dateutil python3-decorator python3-defusedxml python3-docutils python3-feedparser python3-freezegun python3-gevent
python3-greenlet python3-html2text python3-isodate python3-libsass python3-lxml python3-mako python3-mock python3-multidict python3-ofxparse python3-passlib
python3-pbr python3-pil python3-polib python3-psutil python3-psycopg2 python3-pydot python3-pyparsing python3-pypdf2 python3-qrcode python3-reportlab
python3-reportlab-accel python3-requests-toolbelt python3-roman python3-soupsieve python3-stdnum python3-suds python3-tz python3-usb python3-vobject
python3-werkzeug python3-xlrd python3-xlsxwriter python3-xlwt python3-yarl python3-zeep sgml-base xml-core
0 upgraded, 95 newly installed, 0 to remove and 0 not upgraded.
Need to get 87.3 MB of archives.
After this operation, 665 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Служба запускается автоматически после установки Odoo в Ubuntu 20.04 | 18.04 Linux.
$ systemctl status odoo
● odoo.service - Odoo Open Source ERP and CRM
Loaded: loaded (/lib/systemd/system/odoo.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-11-06 10:50:50 CET; 11min ago
Main PID: 9090 (odoo)
Tasks: 4 (limit: 2286)
Memory: 68.9M
CGroup: /system.slice/odoo.service
└─9090 /usr/bin/python3 /usr/bin/odoo --config /etc/odoo/odoo.conf --logfile /var/log/odoo/odoo-server.log
Nov 06 10:50:50 ubuntu systemd[1]: Started Odoo Open Source ERP and CRM.
Настройте запуск службы при каждой перезагрузке системы.
$ sudo systemctl enable --now odoo enabled
Служба запускается на порту 8069. Это можно подтвердить с помощью приведенной ниже команды.
$ ss -tunelp | grep 8069 tcp LISTEN 0 128 0.0.0.0:8069 0.0.0.0:* uid:113 ino:1906251 sk:d <->
Шаг 5. Настройте прокси Nginx для Odoo 13
Установите веб-сервер Nginx в вашу систему Ubuntu:
sudo apt -y install vim nginx
Существует два сценария настройки прокси Nginx — с HTTPS и когда трафик не обслуживается через безопасное соединение. В этом разделе мы рассмотрим оба варианта.
Настройка HTTP-прокси Nginx для Odoo
Создайте новый файл конфигурации для odoo.
sudo vim /etc/nginx/conf.d/odoo.conf
Измените этот фрагмент конфигурации в соответствии со своими настройками.
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name erp.infoit.com.ua;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooserver;
}
# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Мой сервисный домен в этом примере — erp.infoit.com.ua , замените его на ваш правильный домен, который будет использоваться с Odoo. Для внешнего доступа также требуется действующая запись DNS.
Проверьте синтаксис конфигурации:
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Если настройки в порядке, перезапустите службу nginx.
sudo systemctl restart nginx
При перезапуске не должно возникать никаких ошибок.
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-10-19 17:34:39 UTC; 5s ago
Docs: man:nginx(8)
Process: 626 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 615 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 631 (nginx)
Tasks: 2 (limit: 2362)
CGroup: /system.slice/nginx.service
├─631 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─632 nginx: worker process
....
Использование SSL-сертификата Let’s Encrypt для Odoo на Nginx
Всегда рекомендуется использовать шифрование SSL для производственных развертываний. Let’s Encrypt — это бесплатное предложение SSL, которое вы можете использовать при настройке.
Получите SSL-сертификаты Let’s Encrypt для своего домена.
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo systemctl stop nginx
export DOMAIN="erp.infoit.com.ua"
export EMAIL="myemail@infoit.com.ua"
sudo /usr/local/bin/certbot-auto certonly --standalone -d ${DOMAIN} --preferred-challenges http --agree-tos -n -m ${EMAIL} --keep-until-expiring
Если выполнение прошло, будут распечатаны пути к файлам сертификата и цепочки .
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/erp.infoit.com.ua/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/erp.infoit.com.ua/privkey.pem Your cert will expire on 2020-01-17. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Создайте cron для обновления сертификата.
$ sudo crontab -e
15 3 * * * /usr/local/bin/certbot-auto renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
Создайте файл конфигурации Nginx.
sudo vim /etc/nginx/conf.d/odoo.conf
Измените ниже и добавьте в файл.
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8069;
}
# http to https redirection
server {
listen 80;
server_name erp.infoit.com.ua;
return 301 https://erp.infoit.com.ua$request_uri;
}
server {
listen 443 ssl;
server_name erp.infoit.com.ua;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/erp.infoit.com.ua/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/erp.infoit.com.ua/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/erp.infoit.com.ua/chain.pem;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooserver;
}
# Gzip Compression
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Не забудьте заменить erp.infoit.com.ua своим доменным именем.
Перезапустите Nginx.
sudo systemctl restart nginx
Шаг 6: Доступ к веб-интерфейсу Odoo
Доступ к веб-странице Odoo на вашем доменном имени из веб-браузера.
Введите необходимые данные для создания базы данных. После того, как вы нажмете «Создать базу данных», вы будете перенаправлены на страницу администрирования, откуда вы сможете установить бизнес-приложения Odoo.
Если вы настроили https, страница должна загружаться через безопасный туннель.
Посетите страницу документации Odoo для получения дополнительной информации.