Odoo(旧称OpenERP)は、CRM、eコマース、会計、在庫、プロジェクト管理、POSなどのさまざまなビジネスニーズに適した10,000を超えるオープンソースアプリケーションの自己ホスト型スイートです。これらのアプリケーションは完全に統合されており、共通のWebインターフェイスを介してアクセスできます。
このチュートリアルでは、Ubuntu20.04ベースのサーバーにOdoo14Stackをインストールする方法を学習します。
-
OdooStackをホストするための最低2GBのRAMを備えたUbuntu20.04ベースのサーバー。
-
PostgreSQLデータベースをホストするための2GB以上のRAMを備えた2番目のUbuntu20.04ベースのサーバー。ただし、データベースはOdooと同じサーバーにインストールできますが、実稼働環境では、別のサーバーにインストールすることを強くお勧めします。選択した任意のプロバイダーから利用可能な任意の管理対象データベースオプションを選択することもできます。
-
RAM要件は、スタックを使用する同時ユーザーの数によって異なります。システム要件の計算方法の詳細なガイドは、Odooのドキュメントにあります。
-
システムを最新の状態に保ちます。
$ sudo apt update $ sudo apt upgrade
-
両方のサーバーでsudo権限を持つroot以外のユーザー。
このチュートリアルでは、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のインストールと構成
Ubuntu20.04にはデフォルトでPostgreSQL12が付属しており、これをインストールします。 PostgreSQLサーバーで次のコマンドを実行します。
$ sudo apt install postgresql-12 postgresql-server-dev-12
次に、データベースユーザーodoo.
を作成する必要があります。
$ sudo -u postgres createuser odoo -U postgres -dP
オプション-u
コマンドをpostgres
として実行します ユーザー。
オプション-U
接続するユーザー名を指定します。
オプション-d
データベースを作成する権限をユーザーに付与します。
オプション-p
新しいユーザーのパスワードの入力を求められます。
Odooサーバーに接続できるようにするには、PostgreSQLサービスに許可を与える必要があります。
まず、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
Odoo14のセットアップに必要なシステム依存関係をインストールします。
$ 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
Nodejsをインストールします。
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Nodeを使用してLessCSSパッケージをインストールします。
$ 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ファイルをダウンロード
OdooのGithubリポジトリをシステムにクローンします。
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
この目的のために、Odooを/opt/odoo
にコピーしています。 インストール元のディレクトリ。
VirtualenvPython環境をセットアップする
この手順はオプションですが、Odooの仮想Python環境は、特にOSのアップグレードを実行するときに、オペレーティングシステムのPythonモジュールとの競合を回避するのに役立つため推奨されます。
このために、virtualenv
を使用します 。
-
新しい
virtualenv
を作成します Odooの環境。$ python3 -m venv /home/<username>/odoo-env
-
仮想環境をアクティブ化します。システムユーザーのホームディレクトリの下に環境を作成しています。好きな場所を自由に選択できます。
$ source /home/<username>/odoo-env/bin/activate
-
万が一に備えてPIPを更新してください。
(odoo-env) $ pip3 install --upgrade pip
-
仮想環境にPythonのホイールをインストールします。
$ pip3 install wheel
Pythonの依存関係をインストールする
Odoo14に必要な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構成ファイルをコピーして、新しい構成ファイルを作成します。
$ 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
OdooGUI内での管理操作を可能にするパスワードです。必ず安全なパスワードを選択してください。
オプションdb_host
PostgreSQLサーバーのFQDNまたはIPアドレスです。
オプションdb_port
デフォルトのPostgreSQLポート5432が使用されているため、falseに設定されます。別のポートを使用する場合は、この値を更新する必要があります。
オプションdb_user
PostgreSQLユーザーの名前です。
オプションdb_password
は、以前にPostgreSQLサーバーで作成したPostgreSQLの「odoo」ユーザーパスワードです。
オプションaddons_path
デフォルトのアドオンパスです。アドオンのカスタムパスをコンマで区切って追加することもできます。
オプションxmlrpc_port
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/<username>
を置き換えます 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://<yourIPaddress>:8069
を開きます。 またはhttp://odoo.yourdomain.com:8069
。すべてが正常に機能している場合は、Odooのデータベース作成画面が表示されます。
すべてのフィールドに入力します。 Demo Data
を確認してください フィールドにサンプルデータを入力し、[データベースの作成]をクリックします ボタン。
次に、選択して選択できるアプリのリストが表示されます。
初めてデータベースを作成するときは、アドオンページの読み込みに時間がかかるため、ページを更新しないでください。
Nginxのインストールと構成
これまで、Odooのサーバーを使用してスタックを実行してきました。ただし、理想的には、プロキシを使用して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
Let'sEncryptサービスを使用してSSLをインストールします。
そのためには、Certbotをインストールします。
$ sudo apt install certbot
Certbotプロセスに干渉するため、Nginxを停止します。
$ sudo systemctl stop nginx
証明書を生成します。 DHParams証明書も作成する必要があります。
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
また、SSLを自動的に更新するためのcronジョブを設定する必要があります。 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にログインして、次のような画面が表示されます。
これで、Ubuntu20.04サーバーへのOdooのインストールに関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。