備忘録: 本文
2024年09月20日に、突然メインサーバーにアクセスできなくなった。
なんだか、様子がおかしかったので再起動。
再起動したら、見たくないものが発生…なんと、論理パーティションが読み込めていない様子。
fsck
を実行し、うまく修復できるか試してみたが。。。
なんと、症状は悪化。とうとう、kernel panic
という文字が出てしまった…。
諦めて、サーバーを再構築することにした。
今までは物理サーバー上でUbuntu Serverを動作させていたが
Proxmox VE上にUbuntu ServerをゲストOSとして動作させる環境に再設計。
ちなみに今回で消失したのはファイルシステムのみである…。
そのため、コンフィグやデータベースなどは全て消えてしまった。
しかし、幸いなことに別データ自体は別のHDDに移して稼働させていたため、設定さえしてしまえば復旧自体はわりかし楽な方である…。(ありがとう、過去の自分。)
ファイルサーバーの復旧
まず初めに、当サーバーはファイルサーバーとして動作していた。この復旧作業は少し手こずる面もあったが、比較的簡単だった。
HDDの追加
まずは、該当のHDDをVMのハードウェアに追加する。
USB接続のHDDは簡単だったが、SATA接続されたHDDは追加するのにCLI操作が必要だった。
以下のサイトが参考になった。
ProxmoxでRDMを使う方法
Sambaの導入と設定
次に、Sambaを導入。コンフィグファイルを弄り、以前の状態になった。
Webサービスの復旧 (Nginx + uWSGI + Flask)
次にやったのは、Webサービスの復旧。
Nginx + uWSGI + Flaskの構成でWebサービスをホスティングしていたのだが…作業を進めるうちに問題発生。
venv環境の作成とuWSGIのビルドエラー
venv
を作成して、必要なライブラリをインストールしている途中に、uWSGIのビルドに失敗する。
原因を探ってみた結果、単純にpipが導入されていなかった様子。
pip
を導入後、venv
を作り直してうまく動作するか確認したら、何も問題なくビルド成功。
# venvの作成とライブラリインストール
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uWSGIの起動確認
該当のディレクトリまで移動して uwsgi --ini app.ini
を入力して動作確認。
と思ったら、何故かログが出力されない…。
色々詮索した結果、ログファイルに書き込まれていた。
tail -f
でログをトレースしたら、無事にログが流れていたことを確認できた。
(よかった…)
# ログのトレース
tail -f app.log
uWSGIのサービス化
最後に、uWSGIをサービス化した。以下の通りに設定した。
[Unit]
Description=uWSGI instance to server Flask
After=network.target
[Service]
User=ユーザー名
Group=グループ名
WorkingDirectory="/media/hogehoge"
Environment="PATH=/media/hogehoge/venv/bin"
ExecStart=/media/hogehoge/venv/bin/uwsgi --ini app.ini
Restart=always
[Install]
WantedBy=multi-user.target
Nginxの設定
Nginxに以下の必要最低限の設定を行い、無事にホスティングが完了。
server {
listen 80;
listen 443 ssl;
ssl_certificate /media/hogehoge/origin.pem;
ssl_certificate_key /media/hogehoge/private_key.pem;
location / {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
}
DiscordのBotのホスティング
あとは、DiscordのBotだけ…。
正直、これは別の方法でホスティングするつもりだ。
LXCを作成して、その上で稼働するように再構築したい。
(せっかくの機会だし…。)
これは、また別の記事で書くつもりです。
以上が、今回のサーバー再構築の流れです。同じような問題に直面した方の参考になれば幸いです。