Alibaba Cloud ECSインスタンスにOdooをインストールする

このチュートリアルでは、**Alibaba Cloud ECS**インスタンスに**Odoo**バージョン12をインストールして、クラウドからビジネスを実行する方法を説明します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-install-odoo-on-alibaba-cloud_595400)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#必要条件
Odooのインスタンスを実行するためには、以下の条件を満たす必要があります。

- Python 2.7をPipとVirtualenvでインストール。
- Odooのデータストレージ用のPostgreSQL。
- OdooのソースコードをGitHubの公式リポジトリから取得するためのGit。
- Debian 仮想マシン (Alibaba クラウド上でホストされるもの)


####Odoo エディション
Odoo ERPには、無料でオープンソースのOdoo Community Editionと、クローズドソースで商用版のOdoo Enterprise Editionの2つの異なるフレーバーがあります。

今回のチュートリアルでは、Odoo Community Editionを使用します。インストールの手順はエンタープライズ版とそれほど変わりませんし、幸いにもオープンソース版のソースコードにはすでにアクセスできています。

また、Odooをインストールすることになると、4つの異なるオプションaから選択することができます。

- **オンラインインストール**：Odooの機能をすぐに確認したい場合に適しています。このオプションでは、Odoo独自のクラウドプロバイダーにすべてがインストールされているので、サーバーに何もインストールする必要はありません。Odooクラウドを利用してOdooの機能をテストするためのデモインスタンスを作成したり、Odoo Saasのオファーを利用してクラウド上で本番環境のOdooインスタンスを実行したりすることができます。ここではOdooのソースコードにアクセスすることはできませんし、特定のニーズに基づいていじることもできません。
- **パッケージ化されたインストーラ**：このオプションは、オンプレミスでOdooの機能をテストしたり、開発者や長期的な本番のOdooインストールに適しています。Odoo社が提供するWindowsとLinux用のOdooパッケージのインストーラです。これらのパッケージには、必要なすべての依存関係が自動的にセットアップされているので、システムの安定性を損なう可能性のある他のパッケージを追加するために手動でコマンドを実行したり、多くのことを気にする必要はありません。


- **ソースインストール**：Odooソースのインストールは、Odooの内部的な仕組みを学ぼうとしているときや、カスタム開発をしなければならないときに最適なものです。すでに、このインストールオプションは、メンテナンス性のオプションになるとOdooインストールに適しています。Odooを簡単にアップデートするためには、GitやSvnなどの並行バージョン管理システムを利用する必要があります。
- **Dockerイメージ**：コンテナ化された環境が好きな方は、Dockerイメージを使って本番サーバーにOdooをデプロイすることもできます。このオプションは、自分のニーズを完璧に判断し、サーバーの負担を計算できる上級ユーザーに適しています。[Odooコンテナの公式レジストリ](https://registry.hub.docker.com/_/odoo/?spm=a2c65.11461447.0.0.42751ad8VvoYa5)には、DockerコンテナへのOdooインストールに関する全ての資料が掲載されています。


このチュートリアルでは、ソースコードからのインストールを選択します。ソースコードのインストールオプションを選択したのは、Odooがどのように動作するのかを理解するのに役立つからです。

####インストール
前に説明したように、新しいモジュールを開発したい場合は、ソースコードがオープンなので、パッケージインストーラを使うよりもソースインストールが適しています。

この取り付け方法では、Odooのスタートとストップを自由にカスタマイズして、あなたのニーズに合わせてカスタマイズすることができます。この方法のもう一つの利点は、環境変数を使ってシステムをコントロールすることができ、異なるOdooインスタンスを並べて実行したり、テストしたりすることをより簡単にコントロールできることです。

#####システムの依存関係のインストール
ソースのインストールでは、これらの依存関係を手動でインストールする必要があります。

- **Python 3.5以降のインストール**
- 
正しいバージョンを使用していることと、次のコマンドを使用して`PATH`に`python3`というエイリアスが存在することを確認してください。

```
$ python --version
$ python3 --version
```

Python 2.7だけがインストールされている場合は、Python 3.5をダウンロードしてインストールし、環境変数を設定する必要があります。

- **PipとVirtualenvのインストール**

**Pip** は python のパッケージをインストールするためのパッケージマネージャです。Pipがインストールされているかどうかを確認するには、以下のコマンドを実行するだけです。

```
$ pip --version
```

インストールされていない場合は、`get-pip.py`スクリプトをダウンロードし、以下のコマンドを実行してインストールする必要があります。

```
$ curl https://bootstrap.pypa.org/get-pip.py -o get-pip.py
# python get-pip.py
```

[Virtualenv](https://pypi.org/project/virtualenv/)は、pipでグローバルにインストールされたPythonモジュールとディストリビューションのPythonモジュールのパッケージを混ぜない方が望ましい場合があるため、Pythonの隔離環境を作るためのツールです。

virtualenv をインストールするには、Pip がインストールされたら以下のコマンドを実行するだけです。

```
$ pip install --user virtualenv
```

root ユーザとしてこのコマンドを実行していないため、権限がないために、パッケージのインストール中にエラーが発生するのを防ぐために `--user` スイッチを使用します。

- **PostgreSQLのインストール**
- 
PostgresSQLをシステムにインストールするには、以下のコマンドを実行する必要があります。

```
# apt install postgresql -y
```

インストール後、Postgresユーザを作成する必要があります。デフォルトではユーザは`postgres`のみで、Odooでは`postgres`での接続は禁止されています。

そして、ログイン名のような名前のPostgresユーザを作成します。

```
$ su                           # Then you enter the root password
# su postgres                  # To switch the current user to postgres user
# psql -U postgres             # To activate the postgres database for changes
# CREATE ROLE <username> WITH CREATEDB LOGIN ENCRYPTED PASSWORD '<password>';
```

上記のコードでは、最後のコマンドで`<username>`と`<password>`を持つユーザーを作成しますが、これは通常のシステムユーザーと同じでなければなりません。

ロールログインはUNIXログインと同じなので、UNIXソケットはパスワードなしで使用することができます。

- **その他の依存関係のインストール**

これらの依存関係をインストールするには、仮想環境内で以下のコマンドを実行する必要があります。

```
# apt-get install build-essential python3-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev
```

####Odooのインストール
#####GitからOdooのソースを取得

Odooはzipファイルでダウンロードするか、[Odooの公式githubアカウント](https://github.com/odoo/odoo?spm=a2c65.11461447.0.0.42751ad8VvoYa5&file=odoo.git)からリポジトリをクローンすることで入手できます。

Gitオプションは将来の更新が簡単にできるという利点がありますが、欠点はリポジトリをクローンするときに以前の変更点をすべて一緒に取得するので、Odooのリポジトリのクローンは非常に長くなることです。このサイズの問題を避けるために、レポを複製する際に `--depth 1` スイッチを使うことで、複製するファイルのバージョンの深さを制限することができます。

#####以下のコマンドを実行してgitリポジトリをクローンしてください。

Git がインストールされていることを確認してください。それを確認するには、以下のコマンドを実行する必要があります。

```
$ git --version
```

このコマンドがGitのバージョンを返してくれない場合は、Gitがインストールされていないことになりますので、以下のコマンドを実行してインストールする必要があります。

```
# apt-get install git
```

その後、以下のコマンドでgitリポジトリをクローンします。

```
$ git clone --depth 1 https://github.com/odoo/odoo.git
```

このコマンドを実行すると、**Odoo**のソースコードが入ったフォルダodooが作成されているはずです。以下、このフォルダの構造について説明します。

odoo
├── addons
├── [CONTRIBUTING.md](http://contributing.md/?spm=a2c65.11461447.0.0.42751ad8VvoYa5)
├── COPYRIGHT
├── debian
├── doc
├── LICENSE
├── [MANIFEST.in](http://manifest.in/?spm=a2c65.11461447.0.0.42751ad8VvoYa5)
├── odoo
├── odoo-bin
├── [README.md](https://readme.md/?spm=a2c65.11461447.0.0.42751ad8VvoYa5)
├── requirements.txt
├── [SECURITY.md](http://security.md/?spm=a2c65.11461447.0.0.42751ad8VvoYa5)
├── setup
├── setup.cfg
└── setup.py

1、**仮想環境にOdooの依存関係をインストールします。**
2、**pythonの依存関係をインストールするための隔離された環境を作成します。**
これで、こんな感じでOdooの仮想環境を作ることができるようになりました。

```
$ virtualenv -p /usr/bin/python3 odoo-venv
```

このコマンドでは、`odoo-env`という名前の分離されたPython3環境を要求します。コマンドが期待通りに動作する場合は、隔離された環境を使用していることを知らせるためにプロンプトが変更されているはずです。

それでは、Odooに必要なpythonパッケージをインストールしてみましょう。

```
$ cd odoo
$ source ../odoo-venv/bin/activate
(odoo-venv)$ pip install -r requirements.txt
```

少し時間が経てば、上で説明したようにコマンドラインからodooを実行できるようになるはずです。

- **Odooの実行**

すべての依存関係を設定したら、`odoo-bin`を実行することでOdooを起動することができます。Odooが正しく動作するための設定を提供する必要があります。そして、[設定](https://www.odoo.com/documentation/12.0/reference/cmdline.html?spm=a2c65.11461447.0.0.42751ad8VvoYa5#reference-cmdline)は[コマンドライン引数](https://www.odoo.com/documentation/12.0/reference/cmdline.html?spm=a2c65.11461447.0.0.42751ad8VvoYa5#reference-cmdline)または[設定ファイル](https://www.odoo.com/documentation/12.0/reference/cmdline.html?spm=a2c65.11461447.0.0.42751ad8VvoYa5#reference-cmdline-config)を介して提供することができます。

一般的に必要な構成は以下の通りです。

- PostgreSQLのホスト、ポート、ユーザ、パスワード。

Odooには[psycopg2のデフォルト設定](https://www.psycopg.org/docs/module.html?spm=a2c65.11461447.0.0.42751ad8VvoYa5)以外にはデフォルト設定がありません: 5432番ポートのUNIXソケットを使って現在のユーザとパスワードなしで接続します。デフォルトではLinuxとOS Xで動作するはずですが、UNIXソケットをサポートしていないため、Windowsでは動作しません。

- 独自のモジュールをロードするためのデフォルトを超えたカスタムアドオンのパス

これで、以下のコマンドを入力することでOdooを実行できるようになりました。このコマンドは、アドオンのパスを指定してデータベースにフィルタをかけた状態でOdooを実行するためのコマンドです。

```
$ source odoo-venv/bin/activate
(odoo-venv)$ ./odoo-bin --addons-path=addons,../mymodules --db-filter=mydb$
```

`./mymodules`は追加のアドオンを含むディレクトリであり、`mydb`はサービスを提供するためのデフォルトのデータベースです: `http://localhost:8069.`

ここでは、その中のアドレスを開いた後のブラウザを見てみましょう。

このページでは、Odooがシステムに正しくインストールされていることを示しています。

#結論
このチュートリアルでは、Alibaba Cloud に保存されている Debian VM に Odoo 12 をインストールする方法を見てきました。残るは、ビジネスアプリを使うための設定方法と、ハッキングされた顧客のデータを守るための固め方だけです。Odooをコンテナ化されたアプリケーションとしてクラウドにインストールすることに興味があるかもしれません。しかし、この2点はすべて、次に来るであろう将来のチュートリアルの対象をこの1つにします。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*