サイト内検索

Rocky、Alma、CentOS、RHEL 9|8 に Odoo EPR 17 をインストール


この記事を書いている時点で、Odoo ERP 17 は最新のバージョンであり、ビジネスプロセスを効率化するために作られた素晴らしいオープンソースのエンタープライズリソースプランニング(ERP)ソフトウェアです。Odoo ERP は、HR、CRM、在庫管理、財務、製造、販売からEコマースまで、あらゆるビジネスの課題を解決する統合アプリケーションプラットフォームを提供します。Odoo ERP では、これらすべての統合がモジュール方式で提供されており、最小限のモジュールから始め、必要に応じて追加することができます。これにより、Odoo は非常に柔軟でスケーラブルなソリューションとなっています。

Rocky Linux、AlmaLinux、CentOS、または RHEL 9/8 に Odoo ERP 17 をインストールするには、いくつかの手順に従う必要があります。

  • Odoo 17を実行するために必要な依存関係のインストール
  • Python仮想環境の作成
  • Rocky/AlmaLinux/RHEL 9|8 における Odoo 17 のインストール
  • Odooとウェブサーバーの設定
  • Odooへのアクセスと使用

Odoo ERP 17 の機能については、Odoo 17 リリースノートをご覧ください

前提条件

先に進む前に、次の要件を満たす必要があります。

システム要件:
  1. オペレーティングシステム: Rocky、Alma、CentOS Stream、または RHEL 8/9 をインストール済み
  2. CPU:最低でもデュアルコアCPU(クアッドコアがあればさらに良い)。
  3. RAM:最低2GBのメモリ(4GB以上あればなお良い)。
  4. ディスク: Odoo のデータを保存するために最低 20GB の空きディスク容量が必要です。
ソフトウェア要件:
  1. Python:Python 3.10 以上。
  2. PostgreSQL:PostgreSQL 12以上。
  3. Node.js と npm:Node.js 12.x 以上と、アセット管理のための npm。
  4. Wkhtmltopdf: PDF レポートを印刷するには、特定のバージョンの wkhtmltopdf(0.12.5 または 0.12.6)が必要です。
  5. Nginx または Apache:リバースプロキシ用(一般的には Nginx が推奨されます)。

Odoo ERPのインストールを始めましょう。

ステップ1 – ビルド依存関係をインストールする

インストールの前にシステムを更新してください:

sudo dnf -y update

カーネルのアップデートがある場合は、先に進む前にシステムを再起動することを検討してください:

sudo reboot

次に、システムに開発ツールをインストールします。

sudo dnf groupinstall -y "Development Tools"

Odoo をソースから構築する際に必要になる可能性のある追加のライブラリをインストールしてください:

sudo dnf install -y vim git gcc bzip2-devel redhat-rpm-config libxslt-devel  openldap-devel libjpeg-devel freetype-devel

ステップ2 – Python 3.11 と Node.js をインストールする

Python 3.10以上をインストールする必要があります。この記事ではPython 3.11を使用します。

sudo dnf install python3.11 python3.11-devel python3.11-pip

バージョンを確認して、正常にインストールされたか確認してください。

$ python3.11 --version
Python 3.11.9

Node.jsもインストールしましょう。特定のバージョンはありませんが、Node.js v18を使用します。

 sudo dnf module reset nodejs -y
sudo dnf module install nodejs:18 -y

Node.jsのバージョン番号を確認して検証してください。

$ node --version
v18.20.2

rtlcss ノードモジュールを npm を使ってインストールします:

sudo npm install -g rtlcss

また、Less と Less プラグイン Clean CSS をインストールします:

sudo npm install -g less less-plugin-clean-css

ステップ3 – PostgreSQLデータベースのインストールと設定

PostgreSQL 12以降が必要です。OSのAPPStreamリポジトリで利用可能なPostgreSQL 16をインストールできます。現在のPostgreSQLモジュールをリセットしてください。

sudo dnf module -y disable postgresql

PostgreSQL 16モジュールを有効にする。

sudo dnf install -y @postgresql:16

また、postgresql-develパッケージもインストールしてください。

sudo dnf install -y  postgresql-devel

データベースサーバーを初期化する。

sudo postgresql-setup initdb

データベースサービスを起動して有効にしてください。

sudo systemctl enable --now postgresql

最後に、odoo データベースユーザーを作成します。プロンプトが表示されたら、ユーザーのパスワードを入力してください。

sudo su - postgres -c "createuser -s odoo"

パスワード付きのユーザーを作成するには、次を実行してください:

sudo -u postgres createuser odoo -U postgres -dP

リモートのPostgreSQLデータベースサーバーに対して、Odooが接続できるようにDBサーバーでリモート接続を有効にします。

ステップ4 – wkhtmltopdfをインストールする

Wkhtmltopdf は、Odoo が HTML を PDF やその他の画像形式に変換するために使用するオープンソースの CLI ツールで、強力な Webkit レンダリングエンジンを利用しています。これは、請求書、レポート、その他印刷可能なドキュメントの生成に必要です。

wkhtmltopdf の RPM パッケージをダウンロードしてインストールします。

  • RHEL 9 ベースのシステム
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
  • RHEL 8 ベースのシステム
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm

インストールを検証する:

$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt)

ステップ5 – OdooのPython環境を設定する

Odooサービスを実行するための 'odoo' というユーザーを作成します。

sudo useradd -m -U -r -d /opt/odoo -s /bin/bash odoo

virtualenv をインストールする:

sudo pip3.11 install virtualenv

作成したodooユーザーアカウントに切り替えます。

sudo su - odoo

OdooのGithubリポジトリをローカルにクローンします。

git clone --depth 1 --branch 17.0 --single-branch https://github.com/odoo/odoo.git

Odoo ERP のために Python の仮想環境を作成するには、virtualenv コマンドを使用します。

virtualenv odoo-venv

作成した仮想環境を有効化してください。

source odoo-venv/bin/activate

アクティベートした後にpipをアップグレードしてください。

pip3.11 install --upgrade pip

環境に wheel Python パッケージをインストールする

pip3.11 install wheel

Odoo 17 の Python 必要要件をインストールする

pip3.11 install -r odoo/requirements.txt

仮想環境にインストールされているすべてのPythonパッケージを一覧表示するには、次のコマンドを実行してください。

pip3.11 list

すべてのサードパーティ製アドオンを保存するディレクトリを作成します。

mkdir odoo/custom-addons

仮想環境を終了する。

exit

ステップ6 – Odoo ERPを設定する

サンプル Odoo 設定ファイルをシステムの /etc ディレクトリにコピーしてください。

sudo cp /opt/odoo/odoo/debian/odoo.conf /etc/odoo.conf

odoo.conf ファイルには、Odoo が正常に動作するために必要な主要な設定が含まれています。編集するためにファイルを開いてください。

# Open with vim
sudo vim /etc/odoo.conf

# Open with nano
sudo nano /etc/odoo.conf

設定を以下のように調整してください。

[options]
; This is the password that allows database operations:
admin_passwd = Str0ngAdminPasw0rd
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo/addons, /opt/odoo/odoo/custom-addons
default_productivity_apps = True
xmlrpc_port = 8069

リモートの PostgreSQL サーバーの場合、次の設定を行います:

  • db_host:PostgreSQLデータベースサーバーのIPアドレス
  • db_password:リモートデータベースで作成されたユーザーのパスワード
  • db_user: リモートデータベースユーザーが作成されました。

ファイルに適切な権限を設定してください:

sudo chown odoo:odoo /etc/odoo.conf
sudo chmod 640 /etc/odoo.conf

Odooのsystemdサービスを作成する。

sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP System
Documentation=http://www.odoo.com
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin \
  --config=/etc/odoo.conf \
  --addons-path=/opt/odoo/odoo/addons/ \
  --logfile /var/log/odoo/odoo-server.log
StandardOutput=journal+console
KillMode=mixed

[Install]
WantedBy=multi-user.target
EOF

logsディレクトリを作成します。

sudo mkdir /var/log/odoo/
sudo chown -R odoo:odoo /var/log/odoo/

odoo サービスを開始して有効にします。

sudo systemctl daemon-reload
sudo systemctl enable --now odoo.service

サービスの状態が正常に動作しているか確認してください。

$ systemctl status odoo
● odoo.service - Odoo ERP System
   Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-07-18 11:34:34 UTC; 21s ago
     Docs: http://www.odoo.com
 Main PID: 70809 (python3.11)
    Tasks: 4 (limit: 48750)
   Memory: 88.2M
   CGroup: /system.slice/odoo.service
           └─70809 /opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log

Jul 18 11:34:34 rocky8.cloudspinx.com systemd[1]: Started Odoo ERP System.

ステップ7 – firewalldを設定する

サービスはポート8069で待ち受けています。

$ ss -tunelp | grep 8069
tcp   LISTEN 0      128          0.0.0.0:8069      0.0.0.0:*    users:(("python3.11",pid=70809,fd=4)) uid:989 ino:115353 sk:5 <->

firewalldを使用している場合は、ポート8069を許可してください

sudo firewall-cmd --add-port=8069/tcp --permanent
sudo firewall-cmd --reload

Odooのウェブコンソールには、http://serverip:8069 からアクセスして、セットアップを完了できます。

Masterパスワードには、odoo.confで設定したadmin_passwdの値を入力してください。作成するデータベース名の例としては、odoo17を指定します。その後、メールアドレスとパスワードを入力して最初の管理者ユーザーを作成します。オプションで、電話番号、言語、国を設定することもできます。

セットアップが完了したら、作成した管理者ユーザーとそのパスワードでログインしてください。

モジュールの有効化などのために、Odooのダッシュボードにアクセスします。

ステップ 8 – Nginx プロキシの設定

Nginxを使用してOdoo ERPへのリクエストをプロキシすることができます。nginxパッケージをインストールしてください。

sudo dnf -y install nginx

システム起動時にサービスが自動的に開始されるように設定します。

sudo systemctl enable nginx

Odooサービス用のNginx設定ファイルを作成します。

 sudo vim /etc/nginx/conf.d/odoo.conf

以下の内容を貼り付けて編集してください。odoo.example.comは、実際のドメイン名に置き換える必要があります。

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name odoo.example.com;
    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 Compression
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

nginxの設定を検証する。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

問題なければサービスを再起動してください。

sudo systemctl restart nginx

http://yourdomain.com で Odoo のウェブダッシュボードにアクセスしてください

ステップ9 – Let’s Encrypt SSLの使用

パブリックドメイン上のサーバーでは、無料のLet’s Encrypt SSLを使用できます。

certbot とその Nginx プラグインをインストールします。

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx -y

Let’s Encrypt SSL のリクエスト

DOMAIN=odoo.example.com #replace with your actual domain
sudo certbot --nginx -d $DOMAIN --agree-tos

メールアドレスを提供したくない場合は、useLを使用してください

sudo certbot --nginx -d $DOMAIN --agree-tos --register-unsafely-without-email

サンプル出力:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for odoo.example.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/odoo.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/odoo.example.com/privkey.pem
This certificate expires on 2024-10-16.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for odoo.cloudlabske.com to /etc/nginx/conf.d/odoo.conf
Congratulations! You have successfully enabled HTTPS on https://odoo.example.com

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

SSL を含めるように /etc/nginx/conf.d/odoo.conf を自動的に設定します。

cat /etc/nginx/conf.d/odoo.conf

結論

Rocky、AlmaLinux、CentOS、RHEL 9のLinuxシステムへのOdooのインストールに関するチュートリアルを終えました。必要な依存関係を準備することから始め、その後Odoo ERPのインストールと設定を進めました。Odooは豊富なモジュールを持ち、柔軟で強力なカスタマイズが可能であるため、業務プロセスを自動化するのに適したビジネスソリューションです。