メインコンテンツへスキップ
見出し画像

【配布】Linux Systemctl管理サーバー作ってみた ~自作システムはボタンひとつで管理しよう!~

    こんにちはRcatです。
    今回は、Linuxでプログラムの自動起動を管理する機能、systemctlと連携して、自作のサービスの状態監視や操作をサクッと行うサーバーを作りましたので紹介しようと思います


    はじめに

    利用規約

    情報や作品の活用時は事前に利用規約をご確認ください。

    コメントについて

    利用規約のガイドラインを確認の上コメントしてください。
    則っていないコメントは削除します。


    概要

    概要

    本作は、Linuxのサービス管理ツールであるsystemctlを、WEB画面から簡単に情報を表示したり、操作したりできるツールです。
    主に自分で作ったサービスを管理するために使います。

    画像

    私なんかは、いろいろとサービスとして稼働しており、25個近いオリジナルサービスが常時/タイマーで稼働しています。
    なので、何かか落ちていてもいざ使うまで気づかなかったりして・・・。
    で、落ちていたらsshで接続してコマンド打って・・・。だるいですね?

    というわけで、一覧表示&ボタン一つで操作できるようなサーバーを作りました。
    もちろんこれもサービスに登録します!

    画像

    構成

    本作は次の組み合わせでできています。
    興味ある人だけ。わからない人はスキップでOK。

    • バックエンド

      • Python(3.12)

        • Flask WEBサーバー

      • DB

        • SQLite (Python標準ライブラリ)

    • フロントエンド

      • Vue.js

        • Vue3

    機能

    特定のサービスの一覧表示

    本アプリは、特定のプレフィックスで始まるサービスを検索して表示することができます。
    私のサービスは"R_"から始めるという決まりにしているので、設定でそうすることで自分のサービスだけを表示します。

    画像

    そして、各サービスの状態が表で表示されます。稼働中は緑なのでぱっと見でもわかりやすいですね。
    タイマーが関連付け(名前が全く一緒である必要がある)されている場合は、タイマーの情報も隣に出ます。
    runningは遅延起動のタイマーで、waitingは定期実行のために待ってる感じですね。

    簡単操作

    サービスは一覧表示だけでなく、その隣のボタンを押すことで操作が可能です。
    "systemctl start,stop,restart,enable,disable"を行えます

    画像

    例えば、タイマーセットしてあるバックアップを今すぐ実行したいときなんかに便利です。
    あるいは、いったん開発に戻るのでサーバーを止めたい時など。

    現在のサービスの状態に応じて押せるボタンは変わってきますが、動いていないサービスだとこんな感じですね。

    画像

    ログイン機能

    簡単ですがログイン機能を搭載しています。

    画像

    初期化時に好きなユーザーとパスワードを設定して、それでログインできます。
    ログインしていない場合はリストが出てこない仕様なので、ローカルネットワークから別の人がアクセスしてきたとしても操作される心配はありません。

    画像

    導入方法

    データの展開

    末尾で配布しているデータをダウンロードしたら、すべてをLinuxのサーバーに転送します。

    画像

    この先はrootで行うことをお勧めします。

    転送後、create.shを実行します。
    これによりPythonの環境が出来上がります。

    画像

    設定と構築

    次に"dbinit.py"を編集します。
    10行目くらいにユーザーとパスワードを設定するところがありますので、好きな値に変えてください。
    行を増やせば複数作ることもできます。

    画像

    この状態でdbinit.shを実行します。
    設定した内容でユーザーが作成されます。

    画像

    .envを編集。動作設定ファイルです。
    一番上がこのツールで検出したいサービスのプレフィックス。プログラム上はカンマで区切って複数指定可能なはず。
    他には環境に応じてPORTは好きに変えてください。

    画像

    これで準備完了です。
    start.shを実行して下記のようになれば正常に稼働しています。
    外部からアクセスする場合はファイアウォールの解除などを忘れずに。

    画像

    動作確認

    ufwをallowした後、表示されているURLにアクセスするとこんな感じ。

    画像

    ログインせずにページに入ると何も出ません。

    画像

    まずはログインします

    画像

    設定したユーザーとパスワードでログインすると一覧が表示されます。
    操作も可能です。

    画像

    操作感はこんな感じ。止まっていたdeadのものに対して開始を行うと実行されてrunnningに変わりました!

    画像

    その後

    本作はsystemctlコマンドをたたきますので、rootで実行するようにサービス登録をしてください。

    こちらで紹介しているものを使うと、サービスの作成や登録が簡単になるので合わせておすすめです。


    まとめ

    今回はsystemctlの一覧表示と操作を簡単に行えるようにしました。
    サーバーからは特定のプレフィックスしか検索しないので、知らないシステムのサービスをいじってしまう心配はありません。
    これで心置きなく自作サービスを監視、操作できます。
    よろしければぜひ使ってみてください。


    配布情報

    配布URL

    以下のURLより配布しています。
    利用規約に同意の上ご利用ください。

    https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=systemctl管理サーバー

    配布情報

    追加のキーワードについては下記より確認可能です

    リンク集

    感想投稿フォーム

    コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け

    【Linux】Systemd追加支援スクリプト

    LoggingBOTの導入方法

    ミニPCにLinuxをインストール


     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ