Last Modified 2019.7.21

우분투 18.04에 아파치 웹 서버 설치와 가상 호스트 설정

아래 글을 따라하려면 자바와 톰캣이 설치되어 있어야 한다.

아파치 설치

sudo apt update
sudo apt install apache2

http://localhost를 방문해 아파치가 동작하는지 확인한다.

가상 호스트 설정

java-school.net를 위한 디렉터리를 생성한다.

sudo mkdir -p /var/www/java-school.net/html

생성한 디렉터리의 소유권을 지정한다.

sudo chown -R $USER:$USER /var/www/java-school.net/html

테스트를 위한 index.html 파일을 생성한다.

sudo nano /var/www/java-school.net/html/index.html
<html>
<body>
Welcome to java-school.net
</body>
</html>

새 가상 호스트 파일을 생성한다.

sudo nano /etc/apache2/sites-available/java-school.net.conf
<VirtualHost 127.0.0.1>
	ServerAdmin javaschool@gmail.org
	ServerName java-school.net
	ServerAlias www.java-school.net
	DocumentRoot /var/www/java-school.net/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

a2ensite로 파일을 활성화한다.

sudo a2ensite java-school.net.conf

디폴트 사이트를 비활성화시킨다.

sudo a2dissite 000-default.conf

아파치를 다시 시작한다.

sudo service apache2 restart

http://127.0.0.1을 방문해 index.html 파일 내용을 볼 수 있는지 확인한다.

Tomcat Connector 설치

sudo apt install libapache2-mod-jk

workers.properties 파일을 열고 workers.tomcat_home과 workers.java_home을 수정한다. tomcat_home은 tomcat9을 apt install로 설치하면 /etc/tomcat9다. java_home은 mvn -v 이나 sudo update-alternatives --config java 명령으로 확인할 수 있다.

sudo nano /etc/libapache2-mod-jk/workers.properties
#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
workers.tomcat_home=/etc/tomcat9

#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
workers.java_home=/usr/lib/jvm/java-11-openjdk-amd64

가상 호스트 파일에 다음을 추가한다.

sudo nano /etc/apache2/sites-available/java-school.net.conf
<VirtualHost 127.0.0.1>
	ServerAdmin javaschool@gmail.org
	ServerName java-school.net
	ServerAlias www.java-school.net
	DocumentRoot /var/www/java-school.net/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	JkMount /* ajp13_worker	
</VirtualHost>

톰캣의 server.xml 파일을 열고 다음 부분의 주석을 푼다.

sudo nano /etc/tomcat9/server.xml 
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

아파치를 다시 시작한다.

sudo service apache2 restart

톰캣을 다시 시작한다.

sudo service tomcat9 restart

http://127.0.0.1을 방문할 때 톰캣의 루트 애플리케이션이 반응하면 테스트 성공이다.

루트 애플리케이션 변경

git clone https://github.com/kimjonghoon/spring-thymeleaf

pom.xml를 다음과 같이 편집한다.


	<build>
		<finalName>spring-thymeleaf</finalName>
		<pluginManagement>
			<plugins>
				<plugin>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<configuration>
						<source>${jdk.version}</source>
						<target>${jdk.version}</target>
						<encoding>UTF-8</encoding>
					</configuration>
				</plugin>
				<plugin>
					<artifactId>maven-clean-plugin</artifactId>
					<version>3.1.0</version>
					<configuration>
						<filesets>
							<fileset>
								<directory>src/main/webapp/WEB-INF/classes</directory>
							</fileset>
							<fileset>
								<directory>src/main/webapp/WEB-INF/lib</directory>
							</fileset>
						</filesets>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
	
<!-- 
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.1</version>
				<configuration>
					<source>${jdk.version}</source>
					<target>${jdk.version}</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>10.0.0</version>
			</plugin>
		</plugins>
	</build>
-->

mvn clean compile war:inplace
sudo service tomcat9 stop
sudo nano /etc/tomcat9/Catalina/localhost/ROOT.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context
    docBase="/home/kim/spring-thymeleaf/src/main/webapp"
    reloadable="true">
</Context>

/var/www/java-school.net/html 디렉터리에, 톰캣 루트 애플리케이션 정적 요소의 심볼릭 링크를 생성한다.

cd /var/www/java-school.net/html
ln -s /home/kim/spring-thymeleaf/src/main/webapp/favicon.ico favicon.ico
ln -s /home/kim/spring-thymeleaf/src/main/webapp/static static

톰캣 루트 애플리케이션의 정적 요소는 아파치가 서비스하도록 가상 호스트 파일을 다음과 같이 수정한다.

sudo nano /etc/apache2/sites-available/java-school.net.conf
<VirtualHost 127.0.0.1>
	ServerAdmin javaschool@gmail.org
	ServerName java-school.net
	ServerAlias www.java-school.net
	DocumentRoot /var/www/java-school.net/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	JkUnMount /favicon.ico ajp13_worker
	JkUnMount /static/* ajp13_worker
	JkMount /* ajp13_worker
</VirtualHost>

아파치를 다시 시작한다.

sudo service apache2 restart

톰캣을 다시 시작한다.

sudo service tomcat9 restart

http://127.0.0.1를 방문한다.

참고