17. SSH는 내 IP로 지정해준다.
모든 IP주소로 지정해줄 경우(0.0.0.0 /0) 타인이 접속할 가능성이 있어 위험.
Apache에 대한 외부 접속 허용(포트 80)
Tomcat에 대한 외부 접속 허용(포트 8080, 8090)
HTTPS에 대한 외부 접속 허용(포트 443)
AWS EC2 인스턴스 생성
46. 생성한 RDS 보안그룹으로 변경 후
기존의 보안그룹(rds-launch-wizard) 삭제
그리고 하단 [계속] 버튼 클릭
AWS RDS 생성
47. [로컬PC에서 RDS 접근 확인] 서비스 – RDS – 인스턴스
클릭
호스트 주소 복사
AWS RDS 생성
48. [로컬PC에서 RDS 접근 확인] 다운로드 경로: https://www.heidisql.com/download.php
설치 시 주의사항: 한글처리를 위해 UTF-8 항목 체크
HeidiSQL 사용
복사한 엔드포인트 주소
RDS생성 시 설정한
사용자, 암호
AWS RDS 생성
49. [HeidiSQL]
RDB 생성시 입력한 DB
show variables like 'c%';
데이터베이스의 character-set 설정을 볼 수 있는 명령어
RDS 기본 설정에서 utf8이 아닌 부분이 있어 한글이 깨질 수 있다.
-> RDS의 파라미터 그룹에서 변경
AWS RDS 생성
56. 재부팅 후, HeidiSQL
show variables like 'c%';
character-set 설정이 모두 utf8이 적용된 것을 확인
만약, 모두 적용되어 있지 않을 경우
ALTER DATABASE 데이터베이스명
CHARACTER SET = 'utf8'
COLLATE = 'utf8_general_ci';
위의 쿼리를 적용한 후, RDS – 인스턴스에서
[재부팅]하고 다시 결과를 확인
AWS RDS 생성
57. AWS RDS 생성
서비스 – RDS – 파라미터그룹 – 생성한 파라미터 이름 선택 – 편집
Linux에서 MariaDB(MySQL) 설치 시 테이블명의 대소문자를 구분하는 것이 default 이다.
따라서, 테이블명 대소문자 구분을 하지 않기 위해서 ‘lower_case_table_names=1’로 설정
유저가 만든 데이터베이스에 대해서는 super 권한을 행사할 수 있도록
‘log_bin_trust_function_creators=1’로 설정
(이 부분을 하지 않으면 외부접속에서 DB변경이 불가능)
해당 두 가지 파라미터를 수정 후, 변경 사항 저장
-> 재부팅
58. [EC2에서 RDS 접근 확인]
sudo apt-cache search mysql-server
# MySQL 버전 확인
# MySQL 5.7
sudo apt-get install mysql-server-5.7
앞 페이지 참고해서 PuTTY로 EC2 ubuntu 접속
Tip: 아래 명령어를 복사해서 ubuntu shell에 오른쪽 클릭하면 붙여넣기 가능
설치 중 [Y] 누른 후, ‘root’ 비밀번호에 대한 질문이 나오면 비밀번호를 입력 후 설치 완료
mysql -u 계정 -p -h Host주소
예) mysql –u greatfarmer –p –h RDS의 엔드포인트 주소
설치 후
1
2
3
4
5
AWS RDS 생성
59. RDS 생성시 만들어 준 DB가 존재함을 확인
mysql -u 계정 -p -h Host주소(RDS 엔드포인트 주소)
AWS RDS 생성
61. PuTTY로 EC2 ubuntu 접속 후
1. JDK 설치
1) Oracle Java(JDK)8을 설치하기 위해 webupd8team 레포지터리 추가
sudo add-apt-repository ppa:webupd8team/java
2) 업데이트
sudo apt-get update
3) 설치 - JDK 8을 설치
sudo apt-get install oracle-java8-installer
4) JDK 환경 변수 추가
vi에디터로 profile파일에 JAVA_HOME, PATH등을 export해도 되지만,
아래와 같이 명령을 입력하면 자동으로 환경변수를 추가해 준다.
sudo apt-get install oracle-java8-set-default
5) 환경변수 확인
sudo su - root -c 'printenv'
Tip: 아래 명령어를 복사해서 ubuntu shell에 오른쪽 클릭하면 붙여넣기 가능
sudo: add-apt-repository: command not found 라는 에러가 발생할 시,
sudo apt-get install python-software-properties
#1. python-software-properties 를 설치
#2. software-properties-common 를 설치
sudo apt-get install software-properties-common
python-software-properties와 software-properties-common 패키지 안에
repository에 대한 정보가 들어 있기 때문에
이 두 패키지가 설치가 되어 있지 않으면,
add-apt-repository명령어를 수행하지 못하는 것.
[출처] http://nancom.tistory.com/119
JDK설치경로: cd /usr/lib/jvm/java-8-oracle
AWS EC2 ubuntu - java, apache, tomcat 설치
62. 2. 아파치(Apache) 설치
1) 설치
sudo apt-get install apache2
2) 서비스 시작
sudo service apache2 start
3) AWS EC2 Public IP로 apache2웹이 표시되는지 확인
표시되지 않는다면 [AWS 서비스 – EC2 – 보안그룹
– 해당 EC2 보안그룹 ID – 인바운드 – 편집]에서
아래 내용과 같이 80번 포트를 추가
AWS EC2 Public IP
정상 동작 화면
AWS EC2 ubuntu - java, apache, tomcat 설치
63. 3. 톰캣(Tomcat) 설치
1) 설치
sudo apt-get install tomcat8
설치 중 아래와 같은 문구가 나온다면 JDK를 인식하지 못한 것이므로
* no JDK or JRE found - please set JAVA_HOME
아래와 같이 /usr/lib/jvm/java-8-oracle을 추가
sudo vi /etc/init.d/tomcat8
JDK_DIRS="/usr/lib/jvm/default-java ${OPENJDKS} /usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-7-oracle /usr/lib/jvm/java-8-oracle"
로 파일을 열어
*sudo: vi: command not found 에러가 발생하면
sudo apt-get install vim 으로 설치 한 후 다시 실행
해당 JDK_DIRS 밑에 추가해준다.
*vim이 열리면 키보드 i를 눌러 insert모드에서 위의 내용을 입력하고, 완료되면 esc를 누르고 :wq로 저장 후 종료한다.
JDK인식 에러일 경우, 조치사항
sudo service tomcat8 start
2) 서비스 시작
*Warning: tomcat8.service changed on disk. Run ‘systemctl daemon-reload’ to reload units. 에러 발생 시,
systemctl daemon-reload 입력 후 다시 실행
AWS EC2 ubuntu - java, apache, tomcat 설치
64. 3) 서비스 확인
http://AWS EC2 Public IP:8080/으로 tomcat8 웹이 표시되는지 확인,
표시되지 않는다면 [AWS 서비스 – EC2 – 보안그룹
– 해당 EC2 보안그룹 ID – 인바운드 – 편집]에서
아래 내용과 같이 8080번 포트를 추가 정상 동작 화면
AWS EC2 ubuntu - java, apache, tomcat 설치
65. 4. libapache2-mod-jk 설치
아파치와 톰캣 연동을 위한 mod-jk를 설치
1) 설치
sudo apt-get install libapache2-mod-jk
2) 설정
sudo vi /etc/libapache2-mod-jk/workers.properties
workers.tomcat_home=/usr/share/tomcat8
workers.java_home=/usr/lib/jvm/java-8-oracle
아래 부분을 설치 경로에 맞게 수정
*vim이 열리면 키보드 i를 눌러 insert모드에서 위의 내용을 입력하고,
완료되면 esc를 누르고 :wq로 저장 후 종료한다.
AWS EC2 ubuntu - java, apache, tomcat 설치
66. 5. 톰캣 설정
1) server.xml 수정
sudo vi /etc/tomcat8/server.xml
AJP를 이용하기 위해 아래 주석 해제
본 프로젝트에서는 톰캣 8090포트를 사용하므로 기존 8080 -> 8090 포트로 변경 선택사항
6. AJP 모듈 활성화
sudo a2enmod proxy_ajp
sudo service apache2 restart
apache2 재시작
AWS EC2 ubuntu - java, apache, tomcat 설치
67. 7. 아파치 설정
000-default.conf 파일을 열어 수정
sudo vi /etc/apache2/sites-available/000-default.conf
DocumentRoot /var/www/html 아래에 다음을 추가
JkMount /* ajp13_worker
8. 서비스 재시작
sudo service tomcat8 restart
sudo service apache2 restart
정상 동작 화면
http://AWS EC2 Public IP:8090/으로 tomcat8 웹이 표시되는지 확인
AWS EC2 ubuntu - java, apache, tomcat 설치
69. Spring프로젝트에서 AWS RDS연동
1. AWS RDS MariaDB에 프로젝트 데이터베이스 추가 (HeidiSQL 사용)
1) 앞의 [AWS RDS 생성] 페이지 참고하여 HeidiSQL로 AWS RDS 엔드포인트에 접속
2) 작성된 SQL로 데이터베이스 구축
70. Spring프로젝트에서 AWS RDS연동
package site.corin2.dbtest;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
public class MariaDBTest {
private static final String DRIVER = "org.mariadb.jdbc.Driver";
private static final String URL = "jdbc:mariadb://AWS RDS 엔드포인트 주소:3306/데이터베이스명";
private static final String USER = “사용자이름";
private static final String PASSWORD = “암호";
@Test
public void testConnection() throws Exception {
Class.forName(DRIVER);
try(Connection con = DriverManager.getConnection(URL, USER, PASSWORD)) {
System.out.println("성공");
System.out.println(con);
}catch(Exception e) {
System.out.println("에러발생");
e.printStackTrace();
}
}
}
src/test/java폴더에서 DB테스트 자바파일 생성
해당 자바파일 – 오른쪽 클릭
Run As - JUnit Test
2. Spring Test로 AWS RDS 연동 테스트
DB 연결성공 시 DB 연결실패 시
71. Spring프로젝트에서 AWS RDS연동
3. 테스트에서 DB연결 성공 후, root-context.xml에서 DB정보 변경
<bean id="driverManagerDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.mariadb.jdbc.Driver" />
<property name="url" value="jdbc:mariadb:// AWS RDS 엔드포인트 주소:3306/데이터베이스명" />
<property name="username" value=" 사용자이름" />
<property name="password" value=" 암호 " />
</bean>
이후 다음 작업 진행
73. # tomcat8-admin 설치
sudo apt-get install tomcat8-admin
# tomcat-users.xml 수정
sudo vi /etc/tomcat8/tomcat-users.xml
tomcat-users.xml
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="관리자 계정명" password="비밀번호" roles="manager-gui,manager-script,manager-status,manager-jmx"/>
1. 톰캣 관리자 화면 활성화
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
74. # tomcat8 시작
sudo service tomcat8 start
http://AWS EC2 Public IP:8090/manager 로 접속 *톰캣 포트가 다른 경우 해당 포트번호로 접속
관리자 계정명
비밀번호
톰캣 관리자 화면
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
75. 2. 메이븐을 이용해 톰캣에 배포
STS에서 pom.xml파일 수정
<!-- 메이븐을 통한 서버 배포 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warsourcedirectory>src/main/webapp</warsourcedirectory>
<webxml>src/main/webapp/WEB-INF/web.xml</webxml>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<url>http://EC2 Public IP주소:톰캣 포트번호/manager/text</url>
<path>/프로젝트명</path>
<username>관리자 계정</username>
<password>비밀번호</password>
</configuration>
</plugin>
pom.xml에 <plugins></plugins> 사이에 입력
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
76. [STS 설정]
해당 프로젝트에 마우스 우클릭
[Maven Build] – [New]
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
77. 1
2
3
4
5
6
7
1. Name: 원하는 이름
2. Workspace… 클릭
3. 원하는 프로젝트 선택
4. 자동으로 생성됨
5. tomcat:deploy 입력
6. Apply
7. Run
[Maven Build 설정]
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
78. 배포된 주소 (접속 주소)
[Maven Build Run 결과 콘솔화면]
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
80. http://AWS EC2 Public IP:8090/ 접속 설정
sudo vi /etc/tomcat8/server.xml
<Context docBase="프로젝트명" path="/" reloadable="true" />
<Host> ~ </Host> 사이에 아래를 입력 후 저장
sudo service tomcat8 restart
완료 후 tomcat 재시작
http://AWS EC2 Public IP:8090/ 접속확인
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
81. [재 배포 시, Maven Build 설정]
명령어를 사용해 기존 배포 파일을 삭제하고
새로 배포하기 위함
Tomcat:undeploy
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
82. [AWS EC2 ubuntu 환경에서 배포 후,tomcat 구동 시 웹 사이트가 느릴 경우 조치]
[조치 1]
## AWS EC2 ubuntu에서 tomcat 구동 시 느릴 경우 조치
ubuntu shell에서
먼저 패키지를 설치하기 전에 다음 명령어를 통하여 현재 entropy를 확인한다.
cat /proc/sys/kernel/random/entropy_avail
결과치가 1000 이하일 경우 haveged를 설치할 것을 권장하고 있다.
sudo apt-get install haveged
[출처] http://mikelim.mintocean.com/entry/Ubuntu에서-tomcat이-느리게-로드-될-때
[조치 2]
## AWS EC2 ubuntu에서 tomcat 구동 시 500에러와 함께 발생하는
handler processing failed; nested exception is java.lang.outofmemoryerror: java heap space 에러 조치
JVM heap memory 용량 부족 에러: ubuntu의 톰캣 설정에서 메모리 설정을 변경
ubuntu shell에서
sudo vi /usr/share/tomcat8/bin/catalina.sh
catalina.sh을 열어서 '#!/bin/sh' 바로 아래에 옵션 추가
JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m -XX:MaxPermSize=128m"
[출처] http://mycup.tistory.com/215
AWS EC2 ubuntu 환경에서 Maven으로 프로젝트 배포
83. [출처]
---- 본문 출처 ----
## AWS EC2 생성 및 설정
> http://jojoldu.tistory.com/259
## Ubuntu 접속 후 java8, apache2, tomcat8 설치
> http://blog.moramcnt.com/?p=1061
## Ubuntu 환경에서 Maven으로 Spring 프로젝트를 Tomcat에 배포
> http://all-record.tistory.com/186
---- 추가 참고 사항 ----
## Spring & AWS S3 연동
> https://shj7242.github.io/2017/12/28/Spring34/
> https://docs.aws.amazon.com/ko_kr/sdk-for-java/v1/developer-guide/getting-started.html
> http://jojoldu.tistory.com/300
## Elastic IP가 존재할 경우, Route 53을 통해 도메인 연결
> http://wingsnote.com/57