サーバー環境構築
概要
nizika_nico はニコニコ関連の共通処理や共通データを提供する repository である。
今回の本番環境では:
/opt/nizika-nico
へ配置する。
この repository 自体を独立した常駐 systemd daemon として起動する構成ではない。
主に以下から利用される。
nizika_ai_servicenizika_broadcast
1. repository
信頼できる Gitea の最新 main を取得する。
配置:
/opt/nizika-nico
旧サーバーの working tree、Python cache、秘密情報入り設定ファイルをそのままコピーしない。
2. database
database:
nizika_nico
専用 MySQL user を作成する。
例:
CREATE USER 'nizika_nico_app'@'localhost'
IDENTIFIED BY 'NEW_RANDOM_PASSWORD';
GRANT ALL PRIVILEGES
ON nizika_nico.*
TO 'nizika_nico_app'@'localhost';
アプリから MySQL root は使用しない。
DB は信頼できる dump から復元する。
確認:
mysql \
-u nizika_nico_app \
-p \
-e 'USE nizika_nico; SHOW TABLES;'
3. environment variable
利用する variable:
NIZIKA_NICO_MYSQL_USER
NIZIKA_NICO_MYSQL_PASS
NIZIKA_NICO_DIR
本番:
NIZIKA_NICO_DIR=/opt/nizika-nico
例:
NIZIKA_NICO_MYSQL_USER=...
NIZIKA_NICO_MYSQL_PASS=...
NIZIKA_NICO_DIR=/opt/nizika-nico
4. 利用側 env
nizika_ai_service:
/etc/nizika-ai-service.env
nizika_broadcast:
/etc/nizika-broadcast.env
それぞれに:
NIZIKA_NICO_MYSQL_USER=...
NIZIKA_NICO_MYSQL_PASS=...
NIZIKA_NICO_DIR=/opt/nizika-nico
を設定する。
5. Python dependency
この環境では主に以下を使用する。
eloquent==0.5
mysqlclient==2.2.8
requests==2.32.5
simplejson
system Python を使用する場合:
umask 022
を確認してから pip install する。
6. package permission
service user から Python package が読めない場合:
find /usr/local/lib/python3.14/dist-packages \
-type d ! -perm -005 -o -type f ! -perm -004 \
-print \
| head
必要なら:
chmod -R a+rX \
/usr/local/lib/python3.14/dist-packages
7. repository permission
利用する service user から repository 内を読み取れることを確認する。
例:
namei -l \
/opt/nizika-nico/get_kiriban_list.py
repository 自体を service user から不要に writable にしない。
8. 動作確認
nizika_ai_service から利用する場合:
cd /opt/nizika-ai-service
set -a
. /etc/nizika-ai-service.env
set +a
その状態で nizika_nico 内 script が正常に実行できることを確認する。
nizika-ai-service.service から:
/opt/nizika-nico/get_kiriban_list.py
等が子プロセスとして起動される場合がある。
9. systemd
nizika_nico 自体の独立した systemd unit は作成しない。
実行主体は利用側 service。
例:
nizika-ai-service.service
nizika_broadcast.service
10. 関連リポジトリ
nizika_ai_service
nizika_nico の共通処理や DB を利用する。
nizika_broadcast
放送処理から nizika_nico のデータや script を利用する。
nizika_ai
AI 関連処理と合わせて利用される。