DifyをEC2にインストールしてBedrockにつないでチャットしました。

今回はちょっと変わった設定です。

というのもDifyをEC2にいれました。これを活用するケースとして24時間365日APIをつかうようなものなら常時起動です。
例えば社内チャットぐらいなら土日は停止させておく。営業時間外は停止するなんてことがあるやもしれません。

そうなればEC2だけの料金は土日なくすだけでも70%ぐらいになるのでコストを機にする場合はありです。
それ以外にもPoCなどで利用するためとかだと常にONでなくていいので止めたい。なんてこともあるかもしれません。もちろんコスト気にしない!のであればいいのですが。

で、そんな時に実はEC2を停止して起動させる再度コマンドを打たないとDifyは起動されません。
といっても

cd dify/docker
docker compose up -d

たったこの二つなんですけどね。
それを今回起動した際に自動で起動するように設定を書き換えます。

今回達成できること。
EC2を停止して起動してもわざわざDifyを都度立ち上げなくてよくなる。

はじめに~手順~

早速手順を公開します。以下に沿えば設定完了します。まずはEC2の例の「黒い画面」まで進んでください。第一回をやっている方はスムーズだと思います。

1.起動スクリプトについて

1-1. 起動スクリプトの作成

以下のコマンドを使用して、テキストエディタでスクリプトを作成します。

nano /home/ec2-user/start-dify.sh

1-2. エディタに以下の内容を入力します。

!/bin/bash
cd /home/ec2-user/dify/docker
docker compose up -d

1-3. Ctrl+X を押し、Yを押して確認し、Enterを押して保存します。

1-4.スクリプトに実行権限を付与します。

chmod +x /home/ec2-user/start-dify.sh

2. systemdサービスユニットファイルの作成

2-1.以下のコマンドを使用して、管理者権限でテキストエディタを開きます。

sudo nano /etc/systemd/system/dify.service

2-2.エディタに以下の内容を入力します。

[Unit]
Description=Dify Docker Compose Application
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
User=ec2-user
ExecStart=/home/ec2-user/start-dify.sh
ExecStop=/usr/local/bin/docker-compose -f /home/ec2-user/dify/docker/docker-compose.yml down

[Install]
WantedBy=multi-user.target

2-3.Ctrl+X を押し、Yを押して確認し、Enterを押して保存します。

3. システムへの新しいサービスの認識と有効化

以下のコマンドを順番に実行します。

sudo systemctl daemon-reload
sudo systemctl enable dify.service

その後以下のコマンドを実行してサービスを開始します。

sudo systemctl start dify.service

確認手順

サービスの状態を確認するには、以下のコマンドを使用します。

sudo systemctl status dify.service

“Active: active (running)” と表示されれば、サービスは正常に動作しています。

補足

  • EC2インスタンスの停止/起動時にパブリックIPアドレスが変更される可能性があります。必要に応じて、ALBやElastic IPの使用を検討してください。
  • 稀に自動起動が失敗する場合は、以下のコマンドで手動再起動が可能です。

sudo systemctl restart dify.service

これらの手順を完了することで、EC2インスタンスの再起動時やマニュアルでの停止/起動操作後も、Difyが自動的に起動されるようになります。

1. 起動スクリプトの作成

上記のステップ1の 起動スクリプトの作成のしてみてください。以下のような画面になります。

そこに以下のように三行追加してください。

Ctrl+X を押し、

Yを押して確認し、Enterを押して保存。

いつもの画面に戻ります。

2. systemdサービスユニットファイルの作成

これは前回の1とやっていることは同じです。
ファイルを選んで書き込んで保存という流れでその対象のファイルと内容が違うだけなのでやってみましょう。上記テキストの2のセクションです。

コマンドを使用して、管理者権限でテキストエディタを開く
エディタに内容を保存
Ctrl+X を押し、Yを押して確認し、Enterを押して保存

です。

3.最後は有効化と開始

あとは

3. システムへの新しいサービスの認識と有効化

sudo systemctl daemon-reload
sudo systemctl enable dify.service

と以下のコマンドを実行してサービスを開始します。

sudo systemctl start dify.service

以上です。では停止してみて再起動してみましょう。少し時間はかかりますが時間がかかるだけでパブリックIPにアクセスすれば自動で立ち上がっているはずです。

次回予告

次はついにドメインも取得して、ALBをつないでSSL化しましょう。セキュリティ対策はシステムの根源です。セキュリティありきの機能ですので。

この記事を書いた人


スムーズロゴ
SMOOZ
enterprise-smooz

資料
ダウンロード

マスターデータのメンテナンスに関わる機能をまとめたSaaS「SMOOZ
SMOOZはリレーショナルデータベースの課題を解決するサービスです。
ご興味ございましたら資料をダウンロードください。