LoginSignup
0
1

discordアプリの作成とサービス登録(debian)

Last updated at Posted at 2024-01-08

とあるゲームのボス討伐時間と次の出現時間をdiscordのチャンネル上で管理するBOTを作成してみた。

使用言語は、Python
データ管理はPandasのデータフレームで検索や結合処理もできるので、データベースまでは必要ないかなとおもったので一旦CSVファイルを活用。

サービス登録する際に躓いた点

1.systemctlへの登録方法
aptなどでインストールしたサービスの起動、停止などの方法は理解していたが、自分で作ったスクリプトを登録する方法などは今回始めて知った。

systemctlに設定するファイルを作成

$ sudo vi /etc/systemd/system/hogehoge.service
[Unit]
Description = *****

[Service]
ExecStart = path_to_file
ExecStop=/bin/kill ${MAINPID}
Type = simple
Environment=PYTHONPATH= pythonライブラリへのPATH
User= 実行ユーザ名
[Install]
WantedBy = multi-user.target
パラメータ
ExecStart 実行するファイルへのフルパス。ファイルには実行権限を付与
ExecStop stop時のコマンド
Environment Pythonライブラリへのパス。pip show discordなどしてパッケージのlocationを記述

サービスとして認識されているか確認する。

$ sudo systemctl list-unit-files --type=service

サービスを有効化して、起動する。

$ sudo systemctl enable サービス名
$ sudo systemctl start サービス名

2.サービス登録するとrootユーザでの実行環境になるため、システムデフォルトのpythonへのパスでうごいてしまうので、pyenvで用意したpythonのユーザ実行環境がそのまま使えないので、rootユーザ起動時の環境変数の読み込み、特にPATHの書き換えて実行する必要がある。

$ sudo visudo

以下を追加して、ログインユーザの環境変数を追加

Defaults    env_keep += "PATH"  # 追加
Defaults    env_keep += "PYENV_ROOT"  # 追加

参考(そのままかも)

0
1
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
0
1