環境構築手順 を追加

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