プロジェクト

全般

プロフィール

バグ #583

未完了

[子3] VPS-rootデプロイ実装

Redmine Admin さんが1日前に追加. 1日前に更新.

ステータス:
新規
優先度:
高め
担当者:
-
開始日:
2025-06-18
期日:
進捗率:

0%

予定工数:

説明

子チケット3: VPS-rootデプロイ実装

作業目的

機材予約システムをrental.call2arm.comドメインでVPS-root環境に安全にデプロイ

デプロイ作業内容

1. 環境準備

ディレクトリ構成作成

/root/projects/rental-system/
├── app/                 # アプリケーション本体
├── docker/             # Docker設定
├── nginx/              # nginx設定
├── data/               # データベース・ログ
├── backup/             # バックアップ
└── docs/               # ドキュメント

必要パッケージインストール

  • Docker最新版確認・更新
  • Node.js 18.x環境確認
  • SSL証明書更新(wildcard対応)

2. Dockerコンテナ設定

docker-compose.yml作成

  • rental-app: Node.js アプリケーション
  • rental-db: SQLite データファイル管理
  • 既存proxy-networkへの接続
  • ボリュームマウント設定

Dockerfile作成

  • Node.js 18-alpine ベース
  • アプリケーション依存関係インストール
  • 本番環境最適化設定
  • ヘルスチェック設定

3. nginx設定

rental.call2arm.com.conf作成

server {
    listen 443 ssl;
    server_name rental.call2arm.com;
    
    # SSL設定(wildcard証明書使用)
    ssl_certificate /etc/letsencrypt/live/call2arm.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/call2arm.com/privkey.pem;
    
    # リバースプロキシ設定
    location / {
        proxy_pass http://rental-app:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
    # API専用設定
    location /api/ {
        proxy_pass http://rental-app:3000;
        proxy_set_header Content-Type application/json;
    }
    
    # 静的ファイル設定
    location /static/ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

4. アプリケーション設定

環境変数設定(.env.production)

NODE_ENV=production
PORT=3000
APP_URL=https://rental.call2arm.com

# データベース
DB_PATH=/app/data/rental_system.db

# JWT設定
JWT_SECRET=<生成された秘密鍵>
JWT_EXPIRES_IN=24h

# LINE WORKS設定
LINEWORKS_CLIENT_ID=<実際のクライアントID>
LINEWORKS_CLIENT_SECRET=<実際のシークレット>
LINEWORKS_REDIRECT_URI=https://rental.call2arm.com/auth/callback

# セキュリティ設定
ALLOWED_IPS=192.168.0.0/16,10.0.0.0/8
SESSION_SECRET=<生成されたセッション秘密鍵>

# ログ設定
LOG_LEVEL=info
LOG_FILE=/app/logs/application.log

5. データベース初期化

SQLiteデータベース作成

  • スキーマ作成(全テーブル・インデックス)
  • 初期データ投入(カテゴリ・サンプル機材)
  • 管理者ユーザー作成
  • Bot設定データ投入

データ移行準備

  • 既存データのインポート機能
  • データ整合性チェック
  • バックアップ・復旧手順

6. SSL・セキュリティ設定

証明書設定

  • wildcard証明書の有効性確認
  • 自動更新設定確認
  • HTTPS強制リダイレクト

セキュリティ設定

  • ファイアウォール設定確認
  • IP制限設定(社内ネットワークのみ)
  • セキュリティヘッダー設定

7. 監視・ログ設定

システム監視

  • Docker Health Check設定
  • アプリケーションメトリクス
  • リソース使用量監視

ログ管理

  • アプリケーションログ
  • アクセスログ
  • エラーログ
  • ログローテーション設定

デプロイ手順

Phase 1: ステージング環境

  1. staging-rental.call2arm.com でのテストデプロイ
  2. 全機能動作確認
  3. 負荷試験・セキュリティ試験実施
  4. 問題修正・再試験

Phase 2: 本番環境準備

  1. 本番用設定ファイル準備
  2. データベース本番データ準備
  3. LINE WORKS本番アプリ設定
  4. 監視・アラート設定

Phase 3: 本番デプロイ

  1. メンテナンス画面表示(必要に応じて)
  2. アプリケーションデプロイ
  3. nginx設定適用・リロード
  4. 動作確認・ヘルスチェック
  5. 運用開始宣言

ロールバック計画

緊急時対応

  • nginx設定無効化(1分以内)
  • Dockerコンテナ停止(30秒以内)
  • DNS設定変更(5分以内)
  • 障害通知・報告

成果物

  1. 稼働中のrental.call2arm.com
  2. Docker環境一式
  3. nginx設定ファイル
  4. 運用手順書
  5. 監視・アラート設定

作業時間

16時間 (2営業日)

前提条件

  • 仕様書・試験計画の完成
  • VPS-root環境への管理者アクセス
  • LINE WORKS管理者権限
  • DNS設定権限

完了条件

  • rental.call2arm.com での正常アクセス確認
  • 全主要機能の動作確認
  • SSL/TLS正常動作確認
  • 監視システム正常動作確認
  • 運用チームへの引き継ぎ完了

Redmine Admin さんが1日前に更新

親チケット#580「機材予約システム VPS-root デプロイプロジェクト」の子チケットとして設定。

作業順序: 子チケット3/5 - VPS-rootデプロイ実装フェーズ
子チケット2(試験計画策定)完了後に開始予定。

他の形式にエクスポート: Atom PDF