spring boot에 내장된 was인 tomcat은 웹서버로서 잘 작동하기는 하지만
더 나은 성능과 기능을 위해 apache를 웹서버로 사용하는게 더 낫다.
게시물에서 사용된 ubuntu 버전은 18.04이지만, 아주 오래된 버전이 아닌 이상 동일한 순서로 연동이 가능할 것으로 생각된다.
우선 apache를 사용하기 위해 설치를 한다.
sudo apt-get update
sudo apt-get install apache2
설치된 apache 웹서버의 작동 상태를 확인한다.
웹서비스를 실행한다.
sudo service apache2 start
80포트가 잘 열려있는지 확인한다.
sudo netstat -ntlp | grep apache2
tcp6 0 0 :::80
방화벽의 80포트를 개방한다.
sudo ufw allow 80/tcp
tomcat과 apache를 연동하기 위해 mod-jk를 사용하기 위해 모듈을 설치한다.
sudo apt-get install libapache2-mod-jk
spring boot 어플리케이션 설정인 application.properties에 tomcat 설정을 삽입한다.
tomcat.ajp.protocol=AJP/1.3
tomcat.ajp.port=18001
tomcat.ajp.enabled=true
Bean을 만들어 내가 만든 속성을 주입한다.
@Value("${tomcat.ajp.protocol}")
String ajpProtocol;
@Value("${tomcat.ajp.port}")
int ajpPort;
@Value("${tomcat.ajp.enabled}")
boolean tomcatAjpEnabled;
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
if (tomcatAjpEnabled)
{
Connector ajpConnector = new Connector(ajpProtocol);
ajpConnector.setProtocol(ajpProtocol);
ajpConnector.setPort(ajpPort);
ajpConnector.setSecure(false);
ajpConnector.setAllowTrace(false);
ajpConnector.setScheme("http");
tomcat.addAdditionalTomcatConnectors(ajpConnector);
}
return tomcat;
}
아파치에서 사용할 worker 설정을 만들어준다.
sudo vi /etc/apache2/workers.properties
worker.list=worker1
worker.list=worker1,worker2,load_balance //worker가 두개 이상인 경우에 이 처럼 각각을 ','로 연결하여 지정한다.
worker.worker1.port=18001 //위의 AJP포트와 동일한 포트를 지정한다.
worker.worker1.host=127.0.0.1
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker2.port=18002 //두개 이상의 tomcat을 사용하는 경우 두번째 worker 설정
worker.worker2.host=127.0.0.1
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.load_balance.type=lb
worker.load_balance.balanced_workers=worker1,worker2
사이트 설정을 수정한다
sudo vi /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost //도메인이 연동되어 있으면 도메인으로 수정한다
ServerName localhost
ServerAlias localhost
JkMount /* load_balance
</VirtualHost>
jk.conf 설정파일을 수정한다
sudo vi /etc/apache2/mods-available/jk.conf
<IfModule jk_module>
# We need a workers file exactly once
# and in the global server
#JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkWorkersFile /etc/apache2/workers.properties
앞으로 지속적으로 운영을 하기 위해서는 spring boot jar를 서비스로 만들어 두는 것이 편리할 것이다.
다음과 같은 방법으로 쉽게 우분투 서비스로 등록하여 사용 가능하다.
myservice 명칭을 적절한 본인의 서비스명으로 수정한다.
sudo vi /etc/systemd/system/myservice.service
[Unit]
Description=myservice Service
[Service]
User=nobody
# The configuration file application.properties should be here:
WorkingDirectory=/data //spring boot jar파일 위치
ExecStart=/usr/bin/java -Xmx256m -jar -myservice.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl에 myservice 서비스를 등록한다.
sudo systemctl daemon-reload
sudo systemctl enable myservice.service
서비스 실행해보자.
sudo service myservice start
이상으로 spring boot 내장 tomcat을 apache2와 연동하고 systemctl 서비스로 등록하는 방법에 대한 설명을 마친다.
'프로그래밍' 카테고리의 다른 글
mantis와 intellij로 하는 이슈 관리 (0) | 2018.07.03 |
---|---|
프로그래밍과 음악의 결합 (3) | 2018.06.29 |
jpa entity와 관련된 문제들 (0) | 2018.06.28 |
vultr, cloudflare 웹서비스 오픈하기 (1) | 2018.06.28 |
spring boot를 사용한 웹서비스 제작기 (0) | 2018.06.28 |