開発ガイド
BaiZe Frameworkで開発を始めるための完全ガイド
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.yamlにaccess-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() {
// ...
}
}