1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Discord Botの作り方②デプロイ編(Amazon Lightsail)

Posted at

はじめに

以前の記事の続きです
https://qiita.com/dragonnn/items/2f2e87d87204958ffaa2
以前作成したBotのソースはgitにあげといてください(.envはあげないよう気を付けて)

今回は、Amazon Lightsailでデプロイします
事前にAWSアカウントを作成してください

無料で使える「Koyeb」でデプロイするのが最適解です!
今回は勉強も兼ねてAmazon Lightsailでの手順を書きます。

Amazon Lightsailとは

AWSが提供する、使いやすい仮想プライベートサーバー(VPS)サービスで、ウェブサイトやアプリケーションを簡単に構築・運用できるサービスです。
最安で5ドルのプランがあり、現在は3か月間無料です

インスタンス作成

AWSマネジメントコンソールのLightsailにて、Create instance をクリック

設定は以下を参考にしてください

  • Select a platform:Linux/Unix
  • Select a blueprint:Operating System (OS) only (Ubuntu)
  • Select a size:最安プラン
  • Instance name:任意

インスタンス生成後は、SSH接続してみましょう

Connectタブ押下後、下部からSSH keyがダウンロードできるので、ダウンロードして、ローカルの.sshフォルダに入れといてください
image.png
image.png

下記コマンドでローカルからSSH接続してみましょう

# 例: ダウンロードしたファイル名が LightsailDefaultKey-ap-northeast-1.pem の場合
chmod 400 ~/.ssh/LightsailDefaultKey-ap-northeast-1.pem
# インスタンスのIPアドレスは、Lightsailコンソールのインスタンス一覧で確認できます
ssh -i ~/.ssh/LightsailDefaultKey-ap-northeast-1.pem ubuntu@インスタンスのIP

接続出来たら一旦OK

インスタンスにBotのソースを配置しよう

まずはローカルでプロジェクト直下にrequirements.txtを作ってpush

requirements.txt
discord.py
python-dotenv

gitからcloneしよう

SSHでインスタンスに接続した状態で、コンソールからSSH Keyを作りましょう

ssh-keygen -t ed25519 -C "lightsail-github"

さらに公開鍵の内容を表示しましょう

cat ~/.ssh/id_ed25519.pub

GitHub → 対象リポジトリ →
Settings → Deploy keys → Add deploy key
で、先ほどの公開鍵の内容を貼り付けましょう
後はcloneするだけ

cd ~
git clone git@github.com:あなたのアカウント/リポジトリ名.git
cd 'cloneしたリポジトリ'

インスタンスにPython環境を作ろう

sudo apt update
sudo apt install -y python3 python3-pip python3-venv

# 仮想環境を作成(推奨)
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

.envを作成

nano .env

nanoエディタでTOKENを設定

DISCORD_TOKEN=あなたのBotToken

パーミッション設定

chmod 600 .env

systemd でBotを常時稼働させよう

サービスファイルを作成

sudo nano /etc/systemd/system/'任意の名前.service'

以下を参考にしてください
WorkingDirectory、ExecStart、EnvironmentFileは、実際のディレクトリ名に変更してください

[Unit]
Description=Discord Bot
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/discord-bot-test
ExecStart=/home/ubuntu/discord-bot-test/venv/bin/python /home/ubuntu/discord-bot-test/main.py
Restart=always
EnvironmentFile=/home/ubuntu/discord-bot-test/.env

[Install]
WantedBy=multi-user.target

ここまでお疲れ様でした
作成したserviceを動かしましょう

# 設定ファイルの再読み込み
sudo systemctl daemon-reload
# サービスの起動
sudo systemctl start '上記で付けたserviceの名前'
# サービスの自動起動を有効化(サーバー再起動時も自動で起動)
sudo systemctl enable '上記で付けたserviceの名前'

チャンネルで/helloと打つと、Botが挨拶を返してくれるはずです!

最後に

Botが起動しない場合は、以下コマンドでログを見てください

sudo journalctl -u サービス名 -n 50 --no-pager

次はCI/CD編を書きます

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?