- ① SSH、ユーザー追加
- ② IPv4/IPv6追加、netplan、ufw
- ③ Apache2
- ④ Let's Encrypt
- ⑤ PHP
- ⑥ MariaDB
- ⑦ WordPress
- ⑧ Dovecot、Postfix
- ⑨ Vsftpd
- ⑩ Python
- ⑪ llama.cpp、ChromaDB
- ⑫ Anaconda、Keras、TensorFlow
- ⑬ Node.js
- ⑭ MongoDB
- ⑮ Mosquitto
- ⑯ RabbitMQ
- ⑰ Supervisor
01旧サーバーの3環境を棚卸し
| バージョン | 実体 | ユーザー | 用途 |
|---|---|---|---|
| 3.12 | venv | login-user | word2vec、wsgiアプリ全般 |
| 3.13 | Anaconda | alpha-user | MNISTモデル |
| 3.14 | venv | login-user | その他ツール一式(RAG関連含む) |
3.14への1本化を目指したが、word2vecが使うgensimが3.14未対応(3.12まで)という制約があり、単純な1本化はできなかった。
02アーキテクチャの再確認:wsgiアプリは「薄いクライアント」
③⑤で確認したmod_wsgiの設定は、MNIST・word2vecどちらも実体は次のような構造だった。
- MNIST:ブラウザ(WebSocket、代替でAjax)→ wsgiアプリ(WebSocketクライアント)→ WebSocketサーバー(RabbitMQプロデューサー)→ MNISTモデル(RabbitMQコンシューマー、Anaconda/alpha-user/3.13)
- word2vec:ブラウザ(Ajax)→ wsgiアプリ(MQTTクライアント)→ Mosquitto → gensimコンシューマー(login-user/3.12)
つまりどちらのwsgiアプリも、実際の計算処理(TensorFlow・gensim)を直接importしているわけではなく、メッセージキュー越しに投げるだけの薄いクライアントだった。
03最終構成
| 環境 | 用途 |
|---|---|
| /home/login-user/env-wsgi(3.14) | mod_wsgi本体、MNIST・word2vec両方のwsgiアプリ |
| /home/login-user/env-gensim(3.12) | gensimコンシューマー専用(MQTT経由でword2vec処理のみ) |
| /home/login-user/env3.14 | 汎用ツール一式(RAG関連、地図・GPS処理等) |
| 3.13 | 保留。⑫でAnaconda継続かvenv移行か決めてから着手 |
04gensimコンシューマー用(3.12)
旧サーバーの3.12環境は62パッケージあったが、開発時に使って現在は不要なものが混在していた。実際にコンシューマースクリプトがimportしているのは3つだけだった。
(json・sys・datetimeは標準ライブラリ、numpy・scipy・smart_openはgensimの依存関係として自動的に入る)
05mod_wsgiを3.14でビルドし直し
⑤の時点ではmod_wsgi・wsgiアプリともに3.12前提で組んでいたが、今回の整理で3.14へ統一する方針になったため、mod_wsgiのビルドをやり直した。
出力されたLoadModule・WSGIPythonHomeを⑤で作成した/etc/apache2/mods-available/wsgi.load・wsgi.confへ上書き。
MNIST・word2vecそれぞれのVirtualHost内、WSGIDaemonProcessのpython-home=/home/login-user/env3.12も/home/login-user/env-wsgiへ修正が必要(word2vecアプリ自体はMQTT経由の薄いクライアントなので3.14環境で問題なく動く)。
06汎用ツール環境(3.14)とCUDAパッケージの罠
旧サーバーの3.14環境のpip freezeを見ると、torchの依存関係としてnvidia-*・cuda-*・tritonが大量に含まれていた。
このVPSはCPU専用(GPUなし)で、これらは一切使われないままディスク容量だけを消費する(合計数GB規模になることもある)。
4GB RAMという制約の中、無駄な容量は避けたいので除外した。
pip list | grep -i nvidiaで何も出ないことを確認。llama_cpp_python、chromadb、torch、transformers等のRAG関連パッケージを含め、インストール完了。
07ここまでの状態
- mod_wsgi・両wsgiアプリを3.14へ統一、gensimコンシューマーのみ3.12の独立venvに分離
- gensim用venvは実際にimportされている3パッケージのみで最小構成に
- 汎用ツール用3.14venvは、GPU専用パッケージを除外してCPU専用ビルドで構築
- 3.13・Anacondaの扱いは⑫へ持ち越し