環境構築手順 を追加
@@ -0,0 +1,127 @@
|
||||
# サーバー環境構築
|
||||
|
||||
## 概要
|
||||
|
||||
`nicolib` は共通 library として利用する repository である。
|
||||
|
||||
今回の Ubuntu 26.04 LTS 環境では、`nicolib` 自体を独立した daemon として起動する構成ではない。
|
||||
|
||||
専用 systemd unit や専用 database は作成しない。
|
||||
|
||||
---
|
||||
|
||||
# 1. repository
|
||||
|
||||
信頼できる Gitea の最新 `main` を使用する。
|
||||
|
||||
旧サーバーから以下をそのまま持ち込まない。
|
||||
|
||||
- Python cache
|
||||
- compiled artifact
|
||||
- credential
|
||||
- 秘密情報入り設定
|
||||
- 信頼できない binary
|
||||
|
||||
---
|
||||
|
||||
# 2. Python environment
|
||||
|
||||
本番環境:
|
||||
|
||||
```text
|
||||
Ubuntu 26.04 LTS
|
||||
Python 3.14
|
||||
```
|
||||
|
||||
system-wide pip を使用する場合:
|
||||
|
||||
```bash
|
||||
umask 022
|
||||
```
|
||||
|
||||
を確認する。
|
||||
|
||||
---
|
||||
|
||||
# 3. package permission
|
||||
|
||||
`umask 077` の状態で pip install すると、
|
||||
|
||||
```text
|
||||
drwx------
|
||||
-rw-------
|
||||
```
|
||||
|
||||
のような権限で package が配置される場合がある。
|
||||
|
||||
service user から import できなくなるため注意する。
|
||||
|
||||
確認:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 4. 動作確認
|
||||
|
||||
実際に利用する service user から import する。
|
||||
|
||||
利用主体が `nizika` の場合:
|
||||
|
||||
```bash
|
||||
runuser -u nizika -- \
|
||||
python3 -c \
|
||||
'import nicolib; print(nicolib.__file__)'
|
||||
```
|
||||
|
||||
利用主体が `nizika-ai` の場合:
|
||||
|
||||
```bash
|
||||
runuser -u nizika-ai -- \
|
||||
python3 -c \
|
||||
'import nicolib; print(nicolib.__file__)'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 5. 秘密情報
|
||||
|
||||
library repository 内へ秘密情報を保存しない。
|
||||
|
||||
DB password、API key 等が必要な場合は利用側 service の:
|
||||
|
||||
```text
|
||||
/etc/*.env
|
||||
```
|
||||
|
||||
から environment variable として渡す。
|
||||
|
||||
---
|
||||
|
||||
# 6. systemd
|
||||
|
||||
`nicolib` 自体には systemd service を作成しない。
|
||||
|
||||
常駐 process の管理は、実際に `nicolib` を使用する上位 application が担当する。
|
||||
|
||||
---
|
||||
|
||||
# 7. 再構築時の原則
|
||||
|
||||
1. Gitea の信頼できる最新 `main` を取得する。
|
||||
2. service user から読み取り可能にする。
|
||||
3. secrets を repository に保存しない。
|
||||
4. system Python の package permission を確認する。
|
||||
5. 実際の利用 user から import test を行う。
|
||||
新しいイシューから参照
ユーザーをブロックする