# 06 最低限の引き継ぎ資料

**運用マニュアルではない。「どこに何があって、どう起動／再起動するか」だけを最短で把握するための資料。**

---

## 1. アプリはどこにあるか

```
/home/skin/asp.hada-check.com/
```

このディレクトリがアプリ本体。PM2 が管理する PHP 内蔵サーバーがこのディレクトリを配信している。
ブラウザで `http://サーバー/` を開くと `/client/login/` にリダイレクトされる。

覚えておくフォルダは下の 4 つだけでよい。

| フォルダ | 役割 |
| --- | --- |
| `client/` | 利用者（加盟店）の画面 |
| `admin/` | 管理者の画面 |
| `lib/` | 設定と共通処理（後述） |
| `bin/SkinDiagnosisSystem/` | 画像処理エンジン本体 |

---

## 2. 構成

```
ブラウザ  →  nginx (:80)  →  PM2 管理の php -S (:8000)  →  MySQL / Wine(画像解析)
```

- **nginx**: ポート80を受ける。中身は全部 127.0.0.1:8000 へ転送するだけ。
- **PM2**: `skin` という名前のプロセスで PHP 内蔵サーバーを常駐させる。実行ユーザーは `skin`。
- **Apache は使っていない**（`.htaccess` は評価されない）。

---

## 3. 触ってはいけない設定ファイル（壊すと動かない）

下記のどれかを間違って書き換えると、サイトが開かない・解析できない・DB 接続エラーになる。編集する前に必ずバックアップを取ること。

| ファイル | 壊すとどうなる |
| --- | --- |
| `/home/skin/asp.hada-check.com/lib/environment.php` | 環境切替が狂ってどの設定も読めなくなる |
| `/home/skin/asp.hada-check.com/lib/environments/production.php` | DB 接続不可 / ファイル保存先不一致 |
| `/home/skin/asp.hada-check.com/lib/config.php` | 画像処理呼び出しパスが消え、解析が全滅 |
| `/etc/nginx/sites-available/default` | 80番ポートから PHP につながらなくなる |
| `/etc/nginx/nginx.conf` | nginx 全体が起動不能になる場合あり |
| `/etc/php/8.3/cli/php.ini` | PHP 全体の挙動に影響 |
| `/home/skin/.pm2/dump.pm2` | PM2 再起動時にプロセスが復元できなくなる |
| `bin/SkinDiagnosisSystem/weightingfactor.ini` | 解析結果の傾向が変わる（開発元指示以外では触らない） |

---

## 4. 画像処理を呼び出しているスクリプト

PHP から画像処理エンジンを呼び出しているのは **この 2 本だけ**。

| スクリプト | 用途 |
| --- | --- |
| `/home/skin/asp.hada-check.com/client/main/zip_upload.php` | 通常クライアント向け |
| `/home/skin/asp.hada-check.com/client/main/zip_upload_panasonic.php` | パナソニック系クライアント向け |

呼び出し先パスの定義は 1 箇所に集約されている。

- 定義場所: `/home/skin/asp.hada-check.com/lib/config.php`
- 定義定数: `SKIN_DIAGNOSIS_SYSTEM_PATH`
- 実体コマンド:

```
WINEPREFIX=/home/skin/.wine-skindiagnosis xvfb-run -a wine \
  /home/skin/asp.hada-check.com/bin/SkinDiagnosisSystem/SkinDiagnosisSystem2.exe
```

→ 画像処理の場所を変えたい時はこの定数 1 行を書き換える。

---

## 5. サービス（アプリ）の再起動コマンド

### 5.1 アプリ本体（PHPサーバー）: PM2

ほとんどの場合これで済む。

```bash
pm2 restart skin
```

状態確認・ログ:

```bash
pm2 list
pm2 logs skin --lines 100
```

プロセスを再作成したい場合（定義ごと作り直したい時のみ）:

```bash
cd /home/skin/asp.hada-check.com
pm2 delete skin
pm2 start bash --name skin -- -c "php -d upload_max_filesize=64M -d post_max_size=256M -S localhost:8000 -t ."
pm2 save
```

### 5.2 フロント Web（nginx）

```bash
sudo systemctl restart nginx
sudo systemctl status nginx
```

設定を書き換えた後の文法チェック:

```bash
sudo nginx -t
```

### 5.3 DB（MySQL）

```bash
sudo systemctl restart mysql
sudo systemctl status mysql
```

### 5.4 画像処理エンジン

エンジンは常駐していないため「再起動」は不要。
呼び出すたびに Wine で都度起動する。動作が怪しいときは `skin` ユーザーで単独起動テストする。

```bash
WINEPREFIX=/home/skin/.wine-skindiagnosis xvfb-run -a wine \
  /home/skin/asp.hada-check.com/bin/SkinDiagnosisSystem/SkinDiagnosisSystem2.exe \
  /tmp/test_input.jpg /tmp/test_output.bmp
```

### 5.5 テンプレートを差し替えた後で反映されない時

Smarty のコンパイルキャッシュを削除する。nginx / PM2 の再起動は不要。

```bash
rm -rf /home/skin/asp.hada-check.com/Smarty/templates_c/*
rm -rf /home/skin/asp.hada-check.com/Smarty/cache/*
```

---

## 6. サーバー再起動後の自動復旧

| サービス | 自動起動 |
| --- | --- |
| nginx | systemd で自動起動（`systemctl enable nginx` 済みの想定） |
| MySQL | systemd で自動起動（`systemctl enable mysql` 済みの想定） |
| PM2 の `skin` | `pm2 save` で保存した状態を systemd 経由で復元（`pm2 startup` 済みの想定） |

`pm2 save` を忘れるとサーバー再起動後に PHP が立ち上がらなくなる点に注意。

---

## 7. いざという時の最短チェック

1. `pm2 list` → `skin` が `online` か？
2. `sudo systemctl status nginx` → `active (running)` か？
3. `sudo systemctl status mysql`  → `active (running)` か？
4. `pm2 logs skin --lines 100` → PHP のエラーを確認
5. `sudo tail -n 100 /var/log/nginx/error.log` → nginx のエラーを確認
6. それでも不明なら [05_エラー対処.md](./05_エラー対処.md) の該当項目へ。
