오랜시간 삽질끝에 간신히 우분투위에 배포완료. 원래 목적은 virtual box 에 apache2 , tomcat7, mysql5.5 server 를 각각 설치할 우분투를 3곳 만들어 서로 어떻게 통신하는 지를 알고 싶었지만 어려워 한곳에다 모두 설치했다. (꼭 해봐야지...)
우선 통신은 이렇게 된다.
웹 서버 apache2 에서는 정적 콘텐츠인 .html, .js , .css 파일만 처리하고 나머지는 WAS 인 tomcat7 에 넘긴다. 그리고 tomcat7은 db와 통신한다. 따라서 apache에 html, js, css 파일을 제외한 나머지를 tomcat에 넘기라는 설정을 어딘가에서 해줘야하는데.. 잘 모르겠다. 보통 인터넷에서 아파치와 톰캣을 연동시키는 libapache-mod-jk 를 설치해서 통신하는데, 팀장님은 필요없다고 하신다..... 따로 아파치에서 설정해주면 된다고...하시는데....... 점점점....ㅎㅎㅎㅎ
결론은 우분투 14.10 server 한곳에 아파치, 톰캣, mysql 을 설치하고 , spring mvc 를 이용한 웹 어플리케이션을 배포했다. 그 과정을 적고자 한다.
2. 가상 호스트 설정
libapache-mod-jk 를 설치해 톰캣과 연동시 이곳에 설정해 줘야 할것이 더 있다.
우선
3. 설치 확인 : 설치 후 http://[우분투ip]:8080 으로 접속하면 It works! 란 화면이 나온다.
톰캣 홈 디렉토리 : /var/lib/tomcat7/webapps/ROOT
CATALINA HOME 디렉토리 : /usr/share/tomcat7
CATALINA BASE 디렉토리 : /var/lib/tomcat7
로그 : /var/log/tomcat7/ 에 들어가면 여러 파일이 있는데 내가 주로 본 것은 catalina.out 파일 사용함
4. 로그를 보고 싶다면
우선 참고. 아파치와 톰캣 연동하는 이유 -> http://hmgirl.tistory.com/67 참고
요약하면 앞에 말한 이유와 같다. apache2는 정적콘텐츠만 처리하기때문에 그 외 나머지는 톰캣이 처리하게 하기위해 넘겨줘야한다. 때문에 연동한다는 내용.
2. 연동을 하기 위한 모듈(mod-jk)를 설치 한다.
그리고 여기서 쭉 읽다 보면
4. 이후에 apache2에도 다시 설정! (이미 위에서 하고 왔다. 원래 순서는 지금 )
#sudo vi /etc/apache2/sites-enabled/000-default.conf 여기서 DocumentRoot /var/lib/tomcat7/webapps/ROOT/로 수정하고 JkMount /* ajp13_worker 라고 적어준것
5. tomcat7/server.xml 수정
하는김에 encoding 설정도 해주자
2. 외부에서 접속할수 있도록 권한 부여
1) mysql db 로그인!
2) mysql 문자셋 확인
1) 프로젝트 pom.xml 우클릭
2) run as 에서 run configuration 클릭
3) Goals : _______ 빈칸에 , clean package 입력 (클린후 패키지 만든다는 뜻 )
4) run 한다.
이때 주의!!!!!
maven packaging 시 src 안에 있는 properties, xml 파일은 빌드되지 않는다. 따라서 pom.xml 설정을 바꿔줘야 한다.
2. .war 파일을 만들었으면
/ROOT 밑에 넣으면 파일이 올라오지도 않음. webapps위에!!!
3. 톰캣 재시작
실제로 찾아보니까 tomcat.dbcp.basicDataSource 는 없다. 여튼 xml 저렇게 수정해주니 됐음!!!
우선 통신은 이렇게 된다.
웹 서버 apache2 에서는 정적 콘텐츠인 .html, .js , .css 파일만 처리하고 나머지는 WAS 인 tomcat7 에 넘긴다. 그리고 tomcat7은 db와 통신한다. 따라서 apache에 html, js, css 파일을 제외한 나머지를 tomcat에 넘기라는 설정을 어딘가에서 해줘야하는데.. 잘 모르겠다. 보통 인터넷에서 아파치와 톰캣을 연동시키는 libapache-mod-jk 를 설치해서 통신하는데, 팀장님은 필요없다고 하신다..... 따로 아파치에서 설정해주면 된다고...하시는데....... 점점점....ㅎㅎㅎㅎ
결론은 우분투 14.10 server 한곳에 아파치, 톰캣, mysql 을 설치하고 , spring mvc 를 이용한 웹 어플리케이션을 배포했다. 그 과정을 적고자 한다.
apache2 설치
#sudo apt-get install apache2설치후
#sudo /etc/init.d/apache2 나 # sudo service apache2 start로 실행 시킨후 http://[우분투IP] 로 접속하면 "Apache2 Ubuntu Default Page"가 나온다
apache2 설정
1. 서버 네임 등록#sudo vi /ect/apache2/apache2.conf
#ServerName를 적어준다.
ServerName localhost
2. 가상 호스트 설정
#sudo vi /etc/apache2/sites-enabled/000-default.conf
ServerName localhost를 적어준다.
libapache-mod-jk 를 설치해 톰캣과 연동시 이곳에 설정해 줘야 할것이 더 있다.
우선
#DocumentRoot /var/www/html이라고 되어있는 것에 #을 이용해 주석처리를 하고
DocumentRoot /var/lib/tomcat7/webapps/ROOT/를 적는다. 그 다음
JkMount /* ajp13_worker를 적어준다. 잘은 모르겠지만 아파치에서 처리하지 않는 모든 것들을 톰캣이 받아서 처리해 준다는 것 같다...(추측..)
tomcat7 설치
1. 설치하기 전에 java가 설치 되어있어야 함!!!!sudo add-apt-repository ppa:webupd8team/java2. 톰캣 설치
sudo apt-get update
sudo apt-get install oracle-java9-installer
#sudo apt-get install tomcat7tomcat7-admin 은 톰캣 메니져로 톰캣을 관리하기 좀더 편한 툴이다. 웹에서 어떤것이 실행중인지 확인가능..ㅎㅎㅎ
#sudo apt-get install tomcat7-admin
3. 설치 확인 : 설치 후 http://[우분투ip]:8080 으로 접속하면 It works! 란 화면이 나온다.
톰캣 홈 디렉토리 : /var/lib/tomcat7/webapps/ROOT
CATALINA HOME 디렉토리 : /usr/share/tomcat7
CATALINA BASE 디렉토리 : /var/lib/tomcat7
로그 : /var/log/tomcat7/ 에 들어가면 여러 파일이 있는데 내가 주로 본 것은 catalina.out 파일 사용함
4. 로그를 보고 싶다면
#sudo tail -100 /vat/log/tomcat7/catalina.out이렇게 봤음. 다른 파일을 봐도 상관없음!
#sudo tail -f /vat/log/tomcat7/catalina.out
Apache와 Tomcat 연동
1. 연동 이유우선 참고. 아파치와 톰캣 연동하는 이유 -> http://hmgirl.tistory.com/67 참고
요약하면 앞에 말한 이유와 같다. apache2는 정적콘텐츠만 처리하기때문에 그 외 나머지는 톰캣이 처리하게 하기위해 넘겨줘야한다. 때문에 연동한다는 내용.
2. 연동을 하기 위한 모듈(mod-jk)를 설치 한다.
#sudo apt-get install libapache2-mod-jk3. 설치후 workers.properties 파일 수정 설정 변경한다.
#sudo vi /etc/libapache2-mod-jk/workers.properties에서
workers.tomcat_home = /usr/share/tomcat7자신의 톰캣 홈과 자바 홈 수정 해준다.
workers.java_home = /usr/lib/jvm/java-7-oracle
그리고 여기서 쭉 읽다 보면
workers.list = ajp13_worker라는게 나오는데 이게 default 값인듯하다. 이게 apache2 설정과 관련이 있는듯.뭔가..
worker.ajp13_worker.type = ajp13
4. 이후에 apache2에도 다시 설정! (이미 위에서 하고 왔다. 원래 순서는 지금 )
#sudo vi /etc/apache2/sites-enabled/000-default.conf 여기서 DocumentRoot /var/lib/tomcat7/webapps/ROOT/로 수정하고 JkMount /* ajp13_worker 라고 적어준것
5. tomcat7/server.xml 수정
#sudo vi /etc/tomcat7/server.xml
(주석제거)이 부분 주석 제거.
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
(주석제거)
하는김에 encoding 설정도 해주자
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"여기도 URIEncoding="UTF-8" 적어준다
URIEncoding="UTF-8"
enableLookups="false"
useBodyEncodingForURI="true" />
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443"참고 : http://warmz.tistory.com/556
connectionTimeout = "20000"
URIEncoding="UTF-8" />
mysql 설치 및 설정
1. mysql 설치#apt-get install mysql-server-5.5설치할때 root의 비밀번호 설정하는데 이때 비밀번호를 잘 기억하자.
2. 외부에서 접속할수 있도록 권한 부여
1) mysql db 로그인!
mysql -u root -p2) db 변경
mysql -p 우분투ip -P 3306 -u root -p
use mysql3) 권한 부여
GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'root 비밀번호';4) 즉시 반영
flus privileges;3. mysql 설정 파일 변경
#sudo vi /etc/mysql/my.cnf에서
bind-address = 127.0.0.1 이 부분 주석 처리4. my.cof 에서 한글 설정 .
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init_connect = set collation_connection = utf8_general_ci
init_connect = set names utf8
[mysql]
default-character-set=utf8
[mysqld_safe]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
- 한글 설정 확인
2) mysql 문자셋 확인
show variables like 'char%';에서 character set 이 모두 utf8 이것 확인 이 중에 latin1 이 있다면
set character utf8;3) 테이블에서도 확인 >>> 난 이문제로 계속 안됐었음 ㅠㅠ
show create table 테이블명;에서 CHARSET 곳 확인. 이곳이 잘못되어 있다면
alter table 테이블명 convert to charet utf8;참조 : http://blog.naver.com/cjmzzang119/110114920197
배포
1. 이클립스에서 spring maven 프로젝트 war 파일 만들기1) 프로젝트 pom.xml 우클릭
2) run as 에서 run configuration 클릭
3) Goals : _______ 빈칸에 , clean package 입력 (클린후 패키지 만든다는 뜻 )
4) run 한다.
--- maven-war-plugin:2.3:war (default-war) @ todoList ---5) 콘솔창에 위와 같이 뜨고, war 파일이 저장된 경로가 나타난다.
[INFO] Packaging webapp
[INFO] Assembling webapp [todoList] in [D:\workspace\todoList\target\todoList-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [D:\workspace\todoList\WebContent]
[INFO] Webapp assembled in [501 msecs]
[INFO] Building war: D:\workspace\todoList\target\todoList-0.0.1-SNAPSHOT.war
이때 주의!!!!!
maven packaging 시 src 안에 있는 properties, xml 파일은 빌드되지 않는다. 따라서 pom.xml 설정을 바꿔줘야 한다.
<build>참조 http://blog.iotinfra.net/?cat=13&paged=3
<resources>
<resource>
<!-- src/main/java 폴더의 xml파일들을 빌드에 포함 -->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<!-- src/main/resources 폴더의 xml, properties, setting파일들을 빌드에 포함 -->>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.setting</include>
</includes>
</resource>
</resources>
</build>
2. .war 파일을 만들었으면
/var/lib/tomcat7/webapps 에 파일을 옮긴다.나는 FileZilla 프로그램을 사용해서 옮김. 옮길때 권한이 문제되면 우선 되는 곳에 옮겨두고 우분투에서 mv 시킨다.
/ROOT 밑에 넣으면 파일이 올라오지도 않음. webapps위에!!!
3. 톰캣 재시작
#sudo service tomcat7 restart4. 된다!!!!!
에러 상황
- tomcat7 실행시 에러 : fail to start connector tomcat error ...
- /etc/tomcat7/server.xml 에서 포트 번호가 중복되거나 충돌되는 것이 있는지 확인, 혹은 포트번호 변경
- http://qatestersblog.blogspot.kr/2012/08/tomcat-failed-to-start-connector.html 참조
- classNotFound로 WEB-INF/applicationContext.xml 에서 dataSource 를 찾을 수 없다는 에러 발생
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource">basicDataSource 클래스가 tomcat.dbcp 패키지를 사용한것이었는데, pom.xml에 다운받은것은 tomcat.dbcp가 아니라, commons.dbcp 것..!!!
실제로 찾아보니까 tomcat.dbcp.basicDataSource 는 없다. 여튼 xml 저렇게 수정해주니 됐음!!!
댓글 없음:
댓글 쓰기