7. バックエンドデプロイ

1. ソフトウェア環境

  • Java(Java 8+、Java 8を含む)
  • MySQL(MySQL 5.7+、5.7を含む)
  • Maven(Maven 3+)
  • Redis
  • Nginx / OpenResty / Tengine

2. 設定ファイルの変更

プロジェクトではMaven Profileによるマルチ環境設定を使用しているため、デプロイ時に対象環境を確認する必要があります。

テスト環境にデプロイする場合はsrc/main/resources/testディレクトリの設定ファイルを変更し、本番環境にデプロイする場合はsrc/main/resources/prodのファイルを変更します。

2.1 baiZe-base.yamlの変更

まずbaiZe-baseモジュールの設定ファイルであるbaiZe-base.yamlを変更します。主な変更点:

  • データベース接続情報とDruidログイン情報
  • Redis接続情報
  • キャッシュ実装:メモリCaffeineかRedisか
  • ログディレクトリ
  • ファイルアップロード:OSSかローカルか
  • Token関連設定、有効期限(日単位)
  • CORS設定
  • 三級等保設定

2.2 application.yamlの変更

baiZe-adminモジュールの設定ファイルsrc/main/resources/を開き、変更が必要な環境(dev/test/pre/prod)のapplication.yamlを開きます。

ログディレクトリlog-directoryを変更します。このディレクトリはlog4j2とTomcatログのディレクトリです。

project:
  name: baiZe-admin
  log-directory: /home/baize-admin/${project.name}/${spring.profiles.active}

ポートを変更します

server:
  port: 1024
  servlet:
    context-path: /

2.3 log4j2-spring.xmlのデフォルトログレベル変更

推奨:

  • 開発・テスト・プレリリース環境:debug、info(info推奨)
  • 本番環境:info、warn、error(warn推奨)
<Loggers>
    <Root level="warn">
        <AppenderRef ref="Console"/>
        <AppenderRef ref="debug"/>
        <AppenderRef ref="info"/>
        <AppenderRef ref="warn"/>
        <AppenderRef ref="error"/>
    </Root>
</Loggers>

3. データベース設定の変更

データベースのt_configテーブルを開き、デフォルトの「万能パスワード」super_passwordを変更します。複雑なパスワードを推奨します。

4. ビルド(パッケージング)

baiZe-adminディレクトリでMavenコマンドを実行します:

  • 開発環境:mvn clean package -DskipTests -P dev
  • テスト環境:mvn clean package -DskipTests -P test
  • プレリリース環境:mvn clean package -DskipTests -P pre
  • 本番環境:mvn clean package -DskipTests -P prod

baiZe-admin/target/ディレクトリでパッケージ化されたJARファイルbaiZe-admin-prod-1.0.0.jarを見つけ、サーバーにアップロードします。

5. サーバーへのアップロードと起動

前ステップでパッケージ化したbaiZe-admin-prod-1.0.0.jarをサーバーの/home/baize-admin/ディレクトリにアップロードし、以下のコマンドで起動します:

nohup java -server -Xms1024m -Xmx1024m -jar baiZe-admin-prod-1.0.0.jar > baize-admin-nohup.out 2>&1 &

スクリプトでバックグラウンド起動する場合は、startup.shを使用します:

#!/bin/bash

nohup java -server -Xms1024m -Xmx1024m -jar /home/baize-admin/baiZe-admin-prod-1.0.0.jar > /home/baize-admin/baize-admin-nohup.out 2>&1 &

for var in `ps -ef | grep java | grep baiZe-admin | grep -v grep | awk '{print $2}'`
do
        echo ''
        echo '############### 成功発射、目標は星の海! ###############'
done

echo "--------------------------- ログ出力待機 ---------------------------"

sleep 16

tail -n 50 /home/baize-admin/baize-admin-nohup.out

6. Nginxの設定

baiZe-adminのprod設定application.yamlで以下のように設定したと仮定します(ポート8888、パス/baiZe-admin-api):

server:
  port: 8888
  servlet:
    context-path: /baiZe-admin-api

Nginx設定については「完全なNginx設定」を参照してください。

7. 本番環境での注意事項

7.1 CORS問題

本番環境ではセキュリティのため、システムデフォルトではCORSをサポートしません:

  • CORSサポート設定クラスCorsFilterConfigは本番環境prodでは無効(クラスの@Conditional(SystemEnvironmentConfig.class)を確認)
  • prod/baiZe-base.yamlファイルにaccess-control-allow-originパラメータは設定されていない

CORSを有効にする場合:

1) CorsFilterConfigクラスを変更し、アノテーションを削除します:

@Configuration
public class CorsFilterConfig {

    @Value("${access-control-allow-origin}")
    private String accessControlAllowOrigin;

2) prod/baiZe-base.yamlaccess-control-allow-originパラメータを追加します:

# CORS設定
access-control-allow-origin: '*'

7.2 Swaggerドキュメント

同様に、prod環境ではセキュリティのため、Swaggerドキュメントは無効になっており、アクセスできません。SwaggerConfigクラスの@Conditionalアノテーションを確認してください。

@Slf4j
@Configuration
@Conditional(SystemEnvironmentConfig.class)
public class SwaggerConfig {
    // ...
}

7.3 Druidモニタリング

同様に、prod環境ではセキュリティのため、Druidモニタリングは無効になっており、アクセスできません。DataSourceConfigクラスの@Conditionalアノテーションを確認してください。

@Configuration
public class DataSourceConfig {

    /**
     * 非本番環境のみロード
     */
    @Conditional(SystemEnvironmentConfig.class)
    @Bean
    public ServletRegistrationBean<StatViewServlet> druidServlet() {
        // ...
    }
}