環境構築手順 を追加
@@ -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 関連処理と合わせて利用される。
|
||||||
新しいイシューから参照
ユーザーをブロックする