# バージョンアップ

## Windows

### 一般バージョンのアップデート手順

1. **OMFLOWのバックアップ**

事前にOMFLOWをバックアップしてください。詳細は【**バックアップとリストア**】を参照してください。

2. **更新ファイルの実行**

OMFLOWのWindows更新ファイルは直接実行することができます。更新ファイルを右クリックし、「管理者として実行」を選択します。

3. **言語の選択**

表示言語を選択し、「OK」をクリックします。

4. **利用規約に同意**

利用規約の「同意する」にチェックを入れ、「次へ」をクリックします。

5. **更新の開始**

実行ファイルは、お使いのデバイスが現在のアップデートを使用できるかどうかを確認します。確認完了後、「更新」をクリックします。

> バージョンが合致しない場合は、まずOMFLOWのバージョンと更新ファイルのバージョンが使用可能かどうかをご確認ください。 OMFLOWのバージョンが1.1.4.0以降の場合は、最新の更新ファイルを使用して最新バージョンにアップグレードすることができます。 デバイスのOMFLOWのバージョンが1.1.4.0未満の場合は、OMFLOWのバージョン順に従って、1.1.4.0までアップグレード後、最新の更新ファイルをご利用ください。

6. **サービスの再起動**

更新後、OMFLOWのサービスが自動的に再起動されますので、サービスの再起動後、「完了」をクリックし、更新を完了してください。

> 1.1.4.0より前のバージョンの場合は、OMFLOWサービスが再起動したことを確認してから更新を続行してください。

これで引き続きOMFLOWをご利用いただけます！

### 1.2.0.0注意事項

OMFLOWはバージョン1.2.0.0以降、Pythonのバージョンを3.11にアップグレードしました。ユーザーが以前のバージョンで追加のPythonパッケージをインストールしている場合、更新プロセスではユーザーに手動でこれらのパッケージを更新するように求められます。以下は関連する手順です。

1. Python3.11 ( 32 Bit ) のWindows Installerをダウンロードし、実行します
2. Customize installation を選択し、インストールパスをカスタマイズします
3. インストールパスに `C:\PROGRA\~1\OMFLOW Server\Python311` を選択します
4. インストール後、アップデートウィンドウの「次へ」をクリックして確認できます
5. この時点で、アップデート確認画面で元のPythonとPython311のパッケージが一致しているかどうかをチェックし、不足しているパッケージをリストアップします
6. 足りないパッケージがあれば、**管理者権限**でコマンドプロンプトを開き、Python311フォルダに移動します
7. `python.exe -m pip install` コマンドでインストールします
8. インストール後、次へをクリックして確認し、欠落しているパッケージがなくなるまでこのプロセスを繰り返します
9. オリジナルのPythonおよびPython311に関連するすべてのコマンドプロンプトを閉じます

## Linux

### 一般的なアップデート手順

1. **OMFLOWのバックアップ**

事前にOMFLOWをバックアップしてください。詳細は【**バックアップとリストア**】の節を参照してください。

2. **アップデートファイルの解凍**

patch ファイルを解凍します

```bash
tar -zxvf [patchファイルのパス]
```

3. **アップデートファイルの実行**

patch.sh のパスに移動し、patch.sh を実行します。

```bash
cd [patchファイルのパス]
sudo ./patch.sh
```

4. **サービスの再起動**

OMFLOW サービスが正常に起動したことを確認します。

```bash
/opt/omflow/server/omflow_server status
```

サービスが起動していない場合は、サービスを起動してください

```bash
/opt/omflow/server/omflow_server start
```

これで引き続きOMFLOWをご利用いただけます！

### Linux をバージョン 1.2.0.0 にアップデートする手順

OMFLOWのバージョン1.2.0.0では、環境要件がさらに要求されており、Linux環境をご利用のユーザーは、手動でアップデートを行う必要があります。手順は下記のとおりです：

> python version: 3.8 → 3.11 django version: 2.2 → 4.2

1. **OMFLOWを停止します**

   ```bash
   omflow_server stop
   ```
2. **/opt/omflowフォルダ下のpythonフォルダを削除します**

   ```bash
   rm -rf /opt/omflow/python/
   ```
3. **ubuntuパッケージのインストール**

> パッケージのリスト
>
> * python 3.11
> * python3.11-dev
> * python3.11-venv
> * python3-pip

インストール方法 1：オンライン版 (インターネット接続が必要)

```bash
	# パッケージリポジトリのアップデート
	apt-get update -y
	# パッケージリポジトリの追加
	add-apt-repository ppa:deadsnakes/ppa -y
	# パッケージリポジトリのアップデート
	apt-get update -y
	# python3.11と関連パッケージをインストールする
	apt-get install -y python3.11 python3.11-dev python3.11-venv python3-pip
```

* インストール方法2：ネットワークレス環境、オフラインインストール方法は補足情報をご参照ください。
  * Ubuntuオフラインインストールパッケージをダウンロードします。
  * Ubuntuパッケージをオフラインでインストールします。

4. **python 3.11を環境変数に設定します(python3のコマンドでpython3.11を呼び出し可能になるようにする)**

   ```bash
   update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
   ```
5. **/opt/omflowフォルダの下にpython 3.11の仮想環境を作成します。**

   ```bash
   python3 -m venv /opt/omflow/python
   ```
6. **仮想環境に入り、pythonパッケージをインストールします**

> pythonパッケージのリスト
>
> * wheel
> * django==4.2
> * ldap3
> * mod\_wsgi
> * openpyxl
> * DBで使用されるpythonパッケージ
> * その他のパッケージ…
> * オンラインインストール版 (インターネット接続が必要)

```bash
    # 仮想環境に入ります
    source /opt/omflow/python/bin/activate
    # wheel をインストールする
    pip install wheel
    # 必要がなければ省略可能
    python /usr/lib/python3.11/test/libregrtest/setup.py bdist_wheel
    # 必要なパッケージをインストールします。その他のパッケージのインストールについては、ご自身で判断してください。
    pip install django==4.2 ldap3 mod_wsgi openpyxl
```

* ネットワークレス環境、オフラインインストール方法は補足情報をご参照ください。
  * pythonオフラインインストールパッケージ(.whl)をダウンロード
  * pythonパッケージをオフラインでインストールします

7. **apache http.confのwsgi\_moduleのパスを新しいパスに変更します**

   ```bash
   # django.confを修正します。
   vim /etc/apache2/sites-enabled/django.conf

   # wsgi_moduleのパスを修正します。
   ```
8. **OMFLOW 1.2.0.0をアップデートします**

   ```bash
   # tmpに移動する
   cd /tmp/

   # patchファイルを解凍する
   tar zxvf /tmp/omflow_patch_1_1_6_4_upgrade3.tar.gz
   ```

   ```bash
   # patchフォルダに移動する
   cd omflow_patch_1_1_6_4_upgrade4/

   # patchを実行する
   ./patch.sh
   ```
9. **OMFLOWを起動します(通常は手動で起動する必要はありません)**

### 補足:

1. Ubuntuオフラインインストールパッケージをダウンロードします。
   * アップデート対象であるOMFLOW Serverと同等の環境で、インターネット接続可能なUbuntuマシンを用意します。

> パッケージのリスト
>
> * python 3.11
> * python3.11-dev
> * python3.11-venv
> * python3-pip

* ダウンロードコマンド:

```bash
    # rootに切り替える
    sudo su

    # deadsnakesの追加**deadsnakes** PPA
    add-apt-repository ppa:deadsnakes/ppa

    # アップデートパッケージリスト: 
    apt-get update

    # (必要があれば) デフォルトのダウンロードフォルダをクリアする
    apt-get clean

    # パッケージをダウンロードするがインストールはしない
    apt-get install --download-only python3.11 python3.11-dev python3.11-venv python3-pip

```

* ダウンロードしたインストールパッケージは、 **`/var/cache/apt/archives/`** ディレクトリに保存されますので、FTPソフト等を使用して取り出し、アップデート対象のOMFLOW Server環境にインストールしてください。

2. Ubuntuパッケージのオフラインインストール

> パッケージのリスト
>
> * python 3.11
> * python3.11-dev
> * python3.11-venv
> * python3-pip

* **`.deb`** ドキュメントをUbuntuの任意のディレクトリにコピーします。ここでは **`/tmp/Downloads`** を例にします。
* Ubuntuコマンド:

```bash
        # rootに切り替える
        sudo su
        
        # インストーラーを保存するパスに移動する
        cd /tmp/Downloads
        
        # dpkg を使ってダウンロードしたパッケージをインストールする
        dpkg -i *.deb
```

3. 既存の環境からインストール済みのpythonパッケージのリストをエクスポートします。
   * すでにOMFLOWで使用しているパッケージリストがある場合は、このステップは省略できます。
   * 參考: <https://pip.pypa.io/en/stable/cli/pip_freeze/>
   * エクスポートコマンド:

     ```bash
     # OMFLOWの仮想環境に切り替える
     source /opt/omflow/python/bin/activate

     # pythonパッケージリストを/tmp配下にエクスポート
     pip freeze > /tmp/requirements.txt

     # djangoのバージョンを 4.2 以上にする
     vim /tmp/requirements.txt
     ```
   * FTPソフト等を使用して取り出し、ネットワーク接続可能なUbuntu環境に格納し、引き続きダウンロードの参考とします。
4. pythonオフラインインストールパッケージをダウンロードします(.whl)
   * python3.11対応のパッケージをダウンロードするには、python3.11がインストールされた環境を用意し、該当の環境がネットワークに接続されている必要があります。
   * ダウンロードコマンド:

     ```bash
     # オフラインインストーラ保存用の新しいフォルダを作成する
     mkdir /tmp/python_package
     cd /tmp/python_package

     # [方法1]requirements.txtを使って一括ダウンロードする
     # 前のステップの requirements.txtを/tmp/の配下に置いた場合
     pip -m install /tmp/requirements.txt

     # [方法2]パッケージ名を手動で入力してダウンロードする
     pip -m install <パッケージ名>

     #  ダウンロード完了後、フォルダーの中に.whlのインストールファイルがいくつあるか確認してください
     ll
     ```
   * FTPソフト等を使用して取り出し、元のOMFLOW Serverに戻します。
   * 補足: mod\_wsgiはtar.gzを取得し、インストール方法が特殊なので、詳細はオフラインインストールmod\_wsgiをご参照ください。
5. pythonパッケージのオフラインインストール
   * pythonパッケージのオフラインインストーラ(.whl)を`**/opt/omflow/tmp**`の配下に置いた例
   * インストールコマンド:

     ```bash
     # OMFLOWの仮想環境に切り替える
     source /opt/omflow/python/bin/activate

     # オフラインインストーラーが保存されているパスに切り替える
     cd /opt/omflow/tmp

     # すべてのwhlをインストールする
     pip install *.whl
     ```
6. mod\_wsgiのオフラインインストール
   * インストールコマンド:

     ```bash
     # OMFLOWの仮想環境に切り替わる
     source /opt/omflow/python/bin/activate

     # mod_wsgiのtar.gzを解凍する
     tar zxvf <mod_wsgiのファイルパス>

     cd <mod_wsgi解凍後のファイルパス>

     # mod_wsgiの簡易インストール
     python setup.py install
     ```

### 注意:

python & djangoを置き換えた後、OMFLOWのバージョンを1.2.0.0にアップデートする必要があります。以前のバージョンは django 4.2 では動作しません。

### エラー処理

OMFLOWのアップデート後にサービスが起動できない場合は、【**バックアップとリストア**】に従ってOMFLOWをリストアし、再度アップデート手順を実行してください。
