'서버구축 ~ 배포'의 과정
1. aws서버 만들고 접속하기
2. 프로그램 설치(java, tomcat, mysql)
3. aws에서 방화벽 설정
4. 배포할수있게 세팅(tomcat, 배포할 프로젝트)
5. 배포
aws서버 만들고 접속하기
서버 만들기
aws 가입하기
가상머신 시작( ec2 )
amazon machine image 선택 ( os선택 ) - amazon linux 2 ami 가 많이 사용되고 있음
인스턴스 선택 ( 하드웨어 선택 ) - t2.micro (프리티어 사용 가능)
default값들로 넘어감
키 페어 생성 - aws에 저장하는 퍼블릭 키, 사용자가 저장하는 프라이빗키로 구성. 이둘 모두 사용하여 ssh를 통해 인스턴스에 접속 , 키페어 유형은 RSA로
서버 접속
putty 프로그램을 통해 CLI형태로 서버에 접속해서 서버를 운용
putty.exe 다운로드
PuTTY에서 aws서버에 접속하기
( aws에서 받은키를 putty에서 사용하기위해선 변환이 필요 , sourcetree 내 SSH Key 생성 열어서 )
인스턴스(aws)의 퍼플릭 IPv4주소 필요
프로그램 설치
java설치
yum(프로그램을 설치하고 관리하는 명령어 기반 도구)이용
Amazon Corretto 설치 (무료로 사용할 수 있는 OpenJDK의 프로덕션용 멀티플랫폼 배포판)
$ sudo yum install java-11-amazon-corretto
tomcat설치
직접 다운로드 받아서 실행하는 형태로 설치
파일링크를 통한 다운로드 ( 명령어 wget )
$ wget https://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz
( tomcat 9 download 로 검색해서 tar.gz 파일의 링크 복사 )
압축풀기 ( 명령어 tar )
$ tar -xvf apache-tomcat-9.0.45.tar.gz
디렉토리 이름을 tomcat으로 변경하고 /usr/local 위치로 이동
$ mv apache-tomcat-9.0.45 tomcat
$ mv tomcat/ /usr/local/
mysql 5 설치
5.7 설치 패키지를 내려 받는다
$ sudo yum install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
GPG key 등록
$ sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
mysql server 설치
$ sudo yum install mysql-community-server
서버 시작
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service
mysql 비밀번호 관련
최초 비밀번호 확인 - mysqld.log에서 cat 명령어를 통해
$ sudo cat /var/log/mysqld.log
$ sudo cat /var/log/mysqld.log | grep password
mysql 실행
$ mysql -u root -p
최초 접속 후에 비밀번호를 변경 - 간단한 비밀번호 사용시에 에러가 발생하므로 복잡한 비밀번호 (대문자, 숫자, 특수문자)로 만든다.
ALTER USER 'root'@'localhost' identified by 'MariA1239#';
이후 간단한 비밀 번호로 수정을 원할경우
아래 명령어를 통해서 비밀번호 검증 레벨을 낮춘다.
( 첫 비밀번호 셋팅 전까지는 아래 명령어가 사용이 안되므로 일단 복잡한 비밀번호로 셋팅후 다시 바꾸는 과정을 거쳐야 한다. )
SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_length=4;
ALTER USER 'root'@'localhost' identified by '1234'; <- 가능
서버 타임존 설정(톰캣)
WAS가 UTC이므로 시간이 UTC 시간으로 노출되는 현상이 있음
setenv.sh 생성
$ vi /usr/local/tomcat/bin/setenv.sh
아래 코드 입력후 저장
#!/bin/bash
export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+9"
톰캣 서버 stop 후 start
$ bin/catalina.sh stop
$ sudo bin/catalina.sh start
AWS에서 방화벽 설정
서버에서는 일반적으로 특정 port 만 접속 가능하도록 설정해서 보안을 관리 한다.
일반적으로 리눅스 서버 셋팅이 필요 하지만, AWS의 경우 간단하게 웹 콘솔을 통해서 셋팅 가능하다.
1) 톰켓 접속을 위한 8080포트를 열어 준다.
AWS - EC2 - 인스턴스 - 보안 - 보안 그룹의 링크 클릭 - 인바운드 규칙에 있는 Edit inbound rules 버튼을 클릭 - 규칙 추가 누르고 아래 내용을 선택, 입력 - 모두 작성한 후 규칙 저장
유형 : 사용자 지정 TCP
포트범위 : 8080
소스 : anywhere ipv4
2) putty 를 통해서 tomcat 서버를 켠다
sudo /usr/local/tomcat/bin/catalina.sh start
3) 접속 ip혹은 도메인으로 페이지에 접속해서 설정이 적용 되었는지 확인한다.
http://3.123.212.211:8080
tomcat manager 설정 (배포 할 수 있게)
tomcat의 관리를 웹페이지를 통해서 하도록 해주는 tomcat 애플리케이션
http://3.123.212.211:8080/manager
접속하면 403 Access Denied가 나오므로 tomcat 추가 설정이 필요하다.
1) tomcat 설치 디렉토리로 이동한다.
$ cd /usr/local/tomcat
2) conf/tomcat-users.xml 파일을 vim을 통해서 열고 아래 내용을 추가 한다.
( user 태그의 username 과 password 부분은 실제 접속에 사용할 아이디와 비번이다. )
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-status"/>
3) webapps/manager/META-INF/context.xml 파일을 vim으로 열고 아래 내용을 주석 처리 한다
( manager 페이지를 로컬환경에서만 열도록 해주는 설정으로, 이를 해지해서 어디서든 접속할 수 있도록 한다. )
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
4) tomcat 서버를 껏다 켜고 아래 주소로 접속하여 id password 를 입력하고 설정이 완료된것을 확인한다.
$ sudo bin/catalina.sh stop
$ sudo bin/catalina.sh start
접속 주소 예
http://3.123.212.211:8080/manager
war export (프로젝트 코드를 WAR로)
1) 프로젝트에 build.gradle에 war 빌드 속성을 추가 한다.
* plugins 항목에 id 'war` 을 추가한다.
* gradle refresh를 통해서 해당 항목을 적용한다.
plugins {
...
id 'war'
}
2) 프로젝트이름Applicaton.java 에서 SpringBootServletInitializer 클래스를 extends 한다.
( spring boot 에서 tomcat sevlet 연동을 위한 설정 )
@SpringBootApplication
public class InvestSNSApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(InvestSNSApplication.class, args);
}
}
3) 서버 환경에 맞춰서 파일 저장 경로와 데이터베이스 설정을 조정해준다.
예) 파일 이미지 경로
- AWS 에서 폴더 만들어두고 아래와 같이 자바 코드에서 경로를 변경해준다.
public final static String FILE_UPLOAD_PATH = "/home/ec2-user/upload_images/";
4) 프로젝트에서 오른클릭을 하고 export를 선택 - war을 검색하고 WAR file 선택
5) 저장할 경로와 파일이름을 지정한다. ( 파일이름은 'ROOT.war' 로 만든다. )
배포
1) tomcat manager page 에서 '배치할 WAR 파일'이 보이도록 스크롤을 내린다.
2) 저장한 ROOT.war 파일을 선택하고 배치 버튼을 누른다.
3) 배포 시간이 좀 걸리고 에러가 없이 배포가 완료되면 해당 페이지가 새로고침 된다.
4) 접속가능한 path를 포함하여 배포한 서비스를 확인한다.
5) logs에서 catalina.out 실시간 로그 확인
$ sudo tail -f catalina.out
'Web Development > aws' 카테고리의 다른 글
| Aws Ec2 했던거 정리 (0) | 2024.05.19 |
|---|---|
| ec2 인스턴스 오래 켜놓으면 (0) | 2022.07.18 |
| 악성코드 (aws 요금 0원이던게 12만원 나옴) (0) | 2022.06.06 |
| linux명령어(aws) (0) | 2022.03.30 |
| 오랜만에 aws EC2에 접근하다 (0) | 2022.03.28 |