AMI, 인스턴스 유형 : '프리티어 사용 가능' 선택
키 페어 : ssh 형식의 가상 서버 접속 key
네트워크 설정 : 0.0.0.0/0
스토리지 구성 : 30GB까지 무료
4. 네트워크 및 보안 > 탄력적 IP 주소 할당
5. 생성한 인스턴스와 탄력적 IP 주소 연결
6. 터미널에서 ssh 접속
- 인스턴스 > 연결 > SSH 클라이언트에서
- 예: ssh -i "~~" asd@asd 부분을 복사해서 접속하면 편하다.
!! 여기서부터는 ssh를 사용해서 인스턴스에 연결한 후 진행합니다.
(swap memory 부분은 건너 뛰어도 되지만 제일 먼저 하시는 것을 추천합니다..)
프리티어 메모리 부족 해결
프리티어인 t2.micro의 ram은 1GB 정도밖에 되지 않는다.
인스턴스 생성 후 프로젝트 배포를 하면서 툭하면 서버가 죽어버려 먹통이 되었는데, 아무래도 메모리 문제인 것 같았다.(몇 시간씩 기다려도 안됨)
몇 년 전 윈도우 환경에서 가상 메모리 설정을 해본 기억이 있다.
비슷한 걸 금방 찾을 수 있었다. 무려 공식 홈페이지에서도 제공한다.
https://repost.aws/ko/knowledge-center/ec2-memory-swap-file
스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 스왑 파일로 사용할 메모리를 할당하려고 합니다. 어떻게 해야 하나요?
repost.aws
1. root 계정으로 전환
sudo su
2. 메모리 상태 확인
free
=>Swap: total 0 used 0 free 0
3. 스왑 메모리 할당 / 2GB(128MB * 16)
dd if=/dev/zero of=/swapfile bs=128M count=16
4. 스왑 파일 권한 업데이트
chmod 600 /swapfile
5. Linux 스왑 영역 설정
mkswap /swapfile
6. 스왑 공간에 스왑 파일을 추가
swapon /swapfile
7. 추가됐는지 확인
swapon -s
8. 부팅 시 스왑 파일 활성화 (파일 편집)
vi /etc/fstab
9. 아래 내용 추가 후 저장, 종료
/swapfile swap swap defaults 0 0
10. 확인
free -h
Java 설치 + 환경 변수 설정
1. 설치 가능한 java 버전 확인
sudo yum list | grep jdk
2. java 설치 (11버전)
sudo yum install java-11-openjdk
=>Is this ok : y
3. javac 설치
sudo yum install java-11-openjdk-devel.x86_64
4. java, javac 버전 확인
java -version javac -version
5. 환경 변수 설정
java 경로
which java
=>/usr/bin/java
실제 파일 경로
readlink -f /usr/bin/java
=>/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-2.el9.x86_64/bin/java
profile 파일 편집
sudo vi /etc/profile
마지막 라인으로 이동 : shift + g
INSERT(편집모드) : i
아래 내용 작성(실제 파일 경로로 수정)
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-2.el9.x86_64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
작성 후 ESC로 INSERT(편집모드) 종료
proflie 파일 저장, 종료
:wq!
profile에 작성한 내용 적용
source /etc/profile
6. 환경 변수 확인
echo $JAVA_HOME
=>/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-2.el9.x86_64/bin/java
Tomcat 9.0 설치 + 실행
1. https://tomcat.apache.org/ 접속 → 설치할 버전 tar.gz파일 우클릭 → 링크 주소 복사
Apache Tomcat® - Welcome!
Apache Tomcat The Apache Tomcat ® software is an open source implementation of the Jakarta Servlet , Jakarta Server Pages , Jakarta Expression Language , Jakarta WebSocket , Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the Jakarta EE platform . The ...
tomcat.apache.org
2. 복사한 주소 붙여넣기
sudo wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat-9.0.82.tar.gz
3. 다운로드한 파일 압축 해제
sudo tar xvfz apache-tomcat-9.0.82.tar.gz
4. 압축 해제 한 파일을 폴더 생성 후 이동
mv apache-tomcat-9.0.82 /usr/local/tomcat9.0
5. 환경 변수 설정
profile 파일 편집
sudo vi /etc/profile
마지막 라인으로 이동 : shift + g
INSERT(편집모드) : i
아래 내용 작성
export CATALINA_HOME=/usr/local/tomcat9.0
작성 후 ESC로 INSERT(편집모드) 종료
proflie 파일 저장, 종료
:wq!
profile에 작성한 내용 적용
source /etc/profile
6. 환경 변수 확인
echo $CATALINA_HOME
=>/usr/local/tomcat9.0
7. server.xml 파일 편집
sudo vi /usr/local/tomcat9.0/conf/server.xml
INSERT(편집모드)로 전환 후 아래 내용 수정 (URIEncoding="UTF-8" 추가, Port 확인)
8. Tomcat 실행
sudo /usr/local/tomcat9.0/bin/startup.sh
중지는 아래 코드
sudo /usr/local/tomcat9.0/bin/shutdown.sh
9. 확인
퍼블릭 IPv4 주소:포트번호(default 8080)
또는
퍼블릭 IPv4 DNS:포트번호(default 8080)
접속 후 Index 페이지 나오는지 확인
9-1. 접속 안될 때
EC2 → 보안 그룹 → 해당 보안 그룹 → 인바운드 규칙 편집 → 포트 추가
MySQL 8.0 설치 + 외부 접속
설치
1. yum repository에 등록
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
2. MySQL 설치
sudo yum -y install mysql-community-server
3. 버전 확인
mysql --version
=>mysql Ver 8.0.32 for Linux on x86_64 (Source distribution)
4. MySQL 실행
sudo systemctl start mysqld
5. MySQL 접속
mysql -u root -p
5-1. 비밀번호 입력하지 않고 엔터
접속 실패 → 5-2.
접속 성공 → 6.
5-2. 임시 비밀번호 받기
sudo grep 'temporary password' /var/log/mysqld.log
6. 계정 비밀번호 변경
mysql> ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '변경할 비밀번호';
7. 변경사항 적용
mysql> FLUSH PRIVILEGES;
MySQL 접속 종료
mysql> \q
외부 접속
외부 접속을 위해 /etc/mysql/mysql.conf.d 경로의 mysqld.cnf 파일에서
bind-address = 0.0.0.0
으로 수정하거나 주석 처리하라는 내용이 많았는데, 나는 도저히 찾을 수 없었다.(시간 엄청 날림)
8.0버전에서는 수정할 필요 없다고 하는 사람도 있긴 하다.
건너뛰었지만 결과적으로 아무 문제도 없음.
8. 외부 접속을 위한 user 생성
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
9. 생성한 계정에 권한 부여
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
10. 권한 확인
mysql> SELECT user, host FROM mysql.user;
11. EC2 → 보안 그룹 → 해당 보안 그룹 → 인바운드 규칙 편집 → 포트 추가(3306)
12. MySQL Workbench / HeidiSQL / Sequel Ace 등을 사용해 접속
+) /VAR/LIB/MYSQL/MYSQL.SOCK’ (111) 에러 해결
root 계정으로 진행
mysqld 데몬 중지 → 권한 부여 / 소유자 mysql로 변경 → mysqld 데몬 다시 시작
service mysqld stop
chmod 755 -R /var/lib/mysql
chown mysql:mysql -R /var/lib/mysql
service mysqld start
Spring 프로젝트 배포
1. export 준비 (Spring 프로젝트 내용 수정)
pom.xml > mysql 버전 수정
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
root-context.xml > JDBC 설정 수정
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://{IP 주소}:{포트번호}/{데이터베이스 이름}" />
<property name="username" value="{username}" />
<property name="password" value="{password}" />
</bean>
기타 항목 수정 (nav bar 등)
2. 프로젝트 war 파일로 내보내기
Menu → File → Export
Web 아래에 있는 WAR file 선택 → next
프로젝트 이름, 저장 위치 선택 / Export soruce files 체크(필수 아님)
Finish → 저장한 경로에서 .war 파일 확인
3. 권한 부여 / 소유자 변경
sudo chmod -R 777 /usr/local/tomcat9.0/webapps
sudo chown -R tomcat9.0:tomcat9.0 /usr/local/tomcat9.0/webapps
이후 Tomcat 서버 내렸다가 다시 실행
sudo /usr/local/tomcat9.0/bin/shutdown.sh
sudo /usr/local/tomcat9.0/bin/startup.sh
4. FileZilla 다운로드
https://filezilla-project.org/download.php?type=client
운영체제에 맞는 클라이언트 다운로드
5. FileZilla EC2 인스턴스에 연결
메뉴 → 파일 → 사이트 관리자
내 사이트 아래에 새 사이트 생성
프로토콜 : SFTP
호스트 : 퍼블릭 IPv4 주소
사용자 : ec2-user
키 파일 : EC2 인스턴스 키(.pem 파일)
연결
6. war 파일 업로드
/usr/local/tomcat9.0/webapps 경로에 war 파일 드래그 앤 드롭
같은 이름의 폴더 생김
7. 확인
퍼블릭 IPv4 주소:8080/생겨난 폴더명
또는
퍼블릭 IPv4 DNS:8080/생겨난 폴더명
접속
...
이제는 내 부끄러운 프로젝트를 전 세계 어디에서나 볼 수 있다.
제 블로그에 정리한 글을 옮기다 보니 어수선합니다..
그래도 혹시 다른분들께 도움이 될까 올려봅니다.
저도 빠삭하게 아는게 아니라 엄청난 도움을 드릴 순 없지만.. 같이 해결해봅시다!!
따라하시다 잘 안되거나 모르는 부분은 댓글이나 연락주세요:)
herb_39@nate.com
첫댓글 자세한 내용들 아주 좋네요..
천천히 따라서 해 보도록 하죠~~ 좋은 정보 감사합니다.