Поиск по сайту:

Как установить программное обеспечение Odoo 14 ERP на Ubuntu 20.04


Это руководство существует для этих версий ОС

  • Ubuntu 15.04 (Vivid Vervet)

На этой странице

  1. Предпосылки
  2. Настройка правил брандмауэра
  3. Назначение имен хостов
  4. Установка и настройка PostgreSQL
    1. Настройка аутентификации на основе хоста
    2. Настройка адреса прослушивания PostgreSQL
    3. Включить и запустить службу PostgreSQL

    1. Установить зависимости и подготовиться к установке
    2. Загрузить файлы Odoo
    3. Настройка среды Virtualenv Python
    4. Установка зависимостей Python

    1. Создать сервис Odoo
    2. Установить права доступа к файлам
    3. Запустите сервер Odoo

    Odoo (ранее известный как OpenERP) — это набор из более чем 10 000 приложений с открытым исходным кодом, который подходит для различных бизнес-потребностей, включая CRM, электронную коммерцию, бухгалтерский учет, инвентаризацию, управление проектами и точки продаж. Эти приложения полностью интегрированы и доступны через общий веб-интерфейс.

    В этом руководстве мы научимся устанавливать Odoo 14 Stack на сервер на базе Ubuntu 20.04.

    Предпосылки

    1. A Ubuntu 20.04 based server with a minimum of 2GB RAM to host Odoo Stack.

    2. 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.

    3. 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.

    4. Keep your systems updated.

      $ sudo apt update
      $ sudo apt upgrade
      
    5. 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), если они доступны. В нашем руководстве мы будем использовать полные доменные имена, и для этого нам нужно установить имена хостов на обоих серверах.

    На сервере 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-адреса. Вы можете изменить его на IP-адрес вашего экземпляра odoo.

    Нажмите Ctrl + X, чтобы закрыть редактор, и нажмите Y, когда будет предложено сохранить файл.

    Включить и запустить службу PostgreSQL

    Поскольку наша настройка завершена, пришло время запустить и включить службу PostgreSQL.

    $ sudo systemctl start postgresql && sudo systemctl enable postgresql
    

    Установить Одоо

    Установить зависимости и подготовиться к установке

    Создайте нового системного пользователя для управления процессами 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
    

    Установите пакет Less CSS с помощью Node.

    $ 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

    Этот шаг необязателен, но рекомендуется, поскольку виртуальная среда Python для Odoo поможет избежать конфликтов с модулями Python операционной системы, особенно при обновлении ОС.

    Для этого мы будем использовать virtualenv.

    1. Create a new virtualenv environment for Odoo.

      $ python3 -m venv /home/<username>/odoo-env
      
    2. 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
      
    3. Update PIP just in case.

      (odoo-env) $ pip3 install --upgrade pip
      
    4. Install Python's wheel in the virtual environment.

      $ pip3 install wheel
      

    Установите зависимости Python

    Установите зависимости Python, необходимые для Odoo 14.

    $ 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. Обязательно выберите безопасный пароль.

    Параметр db_host — это полное доменное имя или IP-адрес сервера PostgreSQL.

    Параметр db_port имеет значение false, поскольку используется порт PostgreSQL 5432 по умолчанию. Если вы хотите использовать другой порт, вам нужно будет обновить это значение.

    Опция db_user — это имя пользователя PostgreSQL.

    Параметр db_password — это пароль пользователя PostgreSQL odoo, который мы создали ранее на сервере PostgreSQL.

    Параметр addons_path — это путь к надстройкам по умолчанию. Вы также можете добавить пользовательский путь для дополнений, разделив их запятыми.

    Параметр 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 Virtual Environment.

    Нажмите 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://<вашIP-адрес>:8069 или http://odoo.yourdomain.com:8069. Если все работает правильно, вы должны увидеть экран создания базы данных Odoos.

    Заполните все поля. Установите флажок в поле Demo Data, чтобы заполнить базу данных образцами данных, а затем нажмите кнопку «Создать базу данных».

    Далее вам будет показан список приложений, которые вы можете выбрать и выбрать.

    При первом создании базы данных загрузка страницы дополнений займет некоторое время, поэтому не обновляйте страницу.

    Установить и настроить Nginx

    До сих пор мы использовали сервер Odoos для запуска стека. Но в идеале лучше запускать его на Nginx через прокси, потому что это позволит нам установить на него SSL.

    Установите Нгинкс.

    $ 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
    

    Создайте файл конфигурации Nginx для Odoo.

    $ 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

    Мы установим SSL с помощью сервиса Lets Encrypt.

    Для этого установите 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 будет запускать certbot в 2:25 каждый день. Вы можете изменить его на что угодно.

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Запустить Одоо

    Теперь, когда все настроено, мы можем снова запустить сервер Odoo.

    $ sudo systemctl start odoo-server
    

    Запустите Odoo в своем браузере через https://odoo.yourdomain.com. Вы получите экран, описанный ранее. Введите необходимые данные для создания базы данных, и вы должны войти в Odoo и увидеть экран, подобный этому.

    Заключение

    На этом мы завершаем наше руководство по установке Odoo на сервер Ubuntu 20.04. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.