環境構築手順 を追加
@@ -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 を行う。
|
||||||
新しいイシューから参照
ユーザーをブロックする