SpringBootでは内包TomcatのAppサーバ、Webサーバを使用してJarファイル単体で動かすことが可能です(Gradle設定が必要)
ですが、TomcatのWebサーバでは機能性、安定性に不安が残るため、Apacheを使用したい場合があります。
内包Tomcatの設定
@Value
ではローカルでTomcatのWebサーバを使用するようにymlで環境を分けております。
@Override
でcustomizeメソッドの設定を変更しております。
設定内容の説明についてはコメントの通り。
TomcatCustomizer.java
@Component
public class TomcatCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Value("${data.protcol}")
private String protcol;
private static final Logger logger = LoggerFactory.getLogger(TomcatCustomizer.class);
@Override
public void customize(TomcatServletWebServerFactory factory) {
if(protcol.equals("AJP")) {
logger.info("Tomcat protocol:AJP");
try{
InetAddress address = InetAddress.getByName("127.0.0.1");
factory.setAddress(address); //ローカルを指定
factory.setProtocol("AJP/1.3"); //AJPを使用
factory.setPort(8009); //ポートを8009番で受付
factory.getTomcatConnectorCustomizers()
.add(c -> c.setProperty("secretRequired", "false")); //シークレットキーをFalseに変更
}catch(Exception e) {
//Tomcat編集エラー処理
}
}else {
logger.info("Tomcat protocol:HTTP");
}
}
}
Apacheの設定
Tomcatの設定に合わせプロトコルをAJP、ポートを8009に設定する
/etc/httpd/conf/httpd.conf
ProxyPass / ajp://localhost:8009/