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

サーバー再構築記録: Proxmox VE + Ubuntu Server + Nginx + uWSGI + Flask

Last updated at Posted at 2024-09-22

備忘録: 本文

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に以下の必要最低限の設定を行い、無事にホスティングが完了。

/etc/nginx/conf.d/uwsgi.conf
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を作成して、その上で稼働するように再構築したい。
(せっかくの機会だし…。)

これは、また別の記事で書くつもりです。


以上が、今回のサーバー再構築の流れです。同じような問題に直面した方の参考になれば幸いです。


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