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