chessta0126 / festivalBooking

0 stars 0 forks source link

AWS, putty 관련 #8

Open chessta0126 opened 1 year ago

chessta0126 commented 1 year ago

Sourcetree

AWS와 로컬

리눅스 OS - 우분트, centOS(AWS와 문법 유사), AWS / 래드햇, 페도라... 명령어로만 파일 접근(클릭 x)

  1. Local (내 컴퓨터) - 포트번호로 판단 후 접근 : 웹(8080) / DB(3306) + ★개인 키★ -> Putty로 AWS 서버에 접근

  2. AWS 서버 - Local과 별개, 웹(8080) - DB(3306) : DB에 쿼리 다시 insert + 공개 키

    • AWS 웹 & DB 서로만 연동(외부에서 접근 불가)

AWS 가입 -> 2차 비밀번호 설정 -> 시작

멀티 팩터 인증(MFA) : 2차 비밀번호 설정 (구글 OTP 앱 다운)

https://jsikim1.tistory.com/279

  1. 우측 상단 서울로 설정

  2. 솔루션 구축 -> 가상머신 시작 -> 이름 설정

  3. 키 페어(개인키 기억하고 있어야 한다.) 생성 : 이름(aws_날짜) -> 윈도우(ppk 선택) / Mac(pem)

  4. 인스턴스 시작 -> 모든 인스턴스 보기(주황 버튼)

  5. ec2 검색 -> 좌측 인스턴스 클릭 (서버 1대 초과하면 과금될 수 있음) ★ 서버가 불안정해서 자주 꺼지는데, 유동 ip여서 다시 켜면 ip 주소가 변경됨 -> 포트폴리오에 github 넣고 변동된 주소 대응할 수 있게 하기

  6. 퍼블릭 IPv4 주소 복사

Putty (AWS 서버 접근)

Putty 다운로드 : https://www.putty.org/

  1. putty.exe 누르면 바로 켜짐(설치 그런거 없고)

Host Name : ec2-user@퍼블릭 IPv4 주소 22번 포트(다른 서버에서 접근 가능하게 한 포트) Saved sessions -> Host Name 복붙(ec2-user@퍼블릭 IPv4 주소) -> save

SSH -> Auth -> Credentials -> aws_날짜.ppk 선택 -> open -> accept 검은창 나옴 : 맨 마지막 줄에 [ec2-user@ip-172-31-44-43 ~] 붙어있으면 서버 잘 들어온 것

Putty 명령어

pwd : 내가 지금 어디 있음 cd ../ : 상위 폴더로 이동하겠다 (/ (root : 최상단) -> home -> ec2-user~(내폴더 느낌)) -> 하위 폴더(aaa) ls : 파일들 보기 ls -al : 파일 정보와 함께 보기 (단축키 : ll)

☆ tab : 자동완성 됨

  1. 폴더 만들기 : mkdir 폴더이름 ★ 2. 간단하게 폴더로 이동 : cd 폴더이름/
  2. bbb로 파일 이동 : mv test1.txt /home/ec2-user/bbb/
  3. bbb에서 aaa로 파일 복사(copy) : cp bbb/test1.txt /home/ec2-user/aaa/
  4. 간단하게 내용 보기 : cat 파일이름.txt
  5. 파일 삭제 : rm 파일이름.txt

★ vi 파일이름.txt : 글씨 쓰는 파일로 이동 1) i 입력 : 글씨 쓸 수 있음(insert 가능) 2) esc : 중지 3) shift + ; : 다음 명령을 입력할 수 있게 해줌 4) shift + ; + wq 입력 : 저장 5) q: 나가기 6) q! : 저장하지 않고 빠져나가기

프로그램 설치

  1. Yum : 프로그램을 설치하고 관리하는 명령어 기반 도구
  2. Java 설치 : 11버전으로 해야 함(17부터는 짜잘한거 다 따로 다운받아야 하므로 귀찮)

★ sudo : 관리자 권한으로 실행(root, home 영역에서 접근/수정할 때) ★

  1. 톰캣 9버전 : https://tomcat.apache.org/download-90.cgi -> core -> tar.gz 우클릭 -> 링크 주소 복사 -> putty에서 입력 : wget + 우클릭

☆★ 붙여넣기 : 우클릭 ★☆

-> 압축 풀기 : tar -xvf apache~(탭하기) (ls로 확인했을 때 : aaa apache-tomcat-9.0.73 apache-tomcat-9.0.73.tar.gz bbb)

-> 톰캣 이동 : mv apache~(탭하기) tomcat (ls로 확인했을 때 : aaa apache-tomcat-9.0.73.tar.gz bbb tomcat)

-> sudo mv tomcat /usr/local

-> 확인

cd /usr/local/ -> ls
cd tomcat/ -> ls
  1. MySql5 설치 및 실행 cd ~ 1) 5.7 설치 패키지를 내려 받는다. (rpm)
    sudo yum install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

2) GPG key 등록

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

3) mysql server 설치

sudo yum install mysql-community-server

4) 서버 시작

sudo systemctl start mysqld.service
sudo systemctl enable mysqld.service

5) MySql 수행하기 - 비밀번호 찾기

sudo cat /var/log/mysqld.log
sudo cat /var/log/mysqld.log | grep password

☆★putty는 드래그만 해도 복사가 자동으로 됨★☆

2023-03-08T08:35:17.743188Z 1 [Note] A temporary password is generated for root@localhost: m)/uXflfk9l-
[ec2-user@ip-172-31-44-43 ~]$

m)/uXflfk9l-

6) mysql 실행(로그인) 비밀번호 입력 : mysql -u root -p -> 비밀번호 한번만 붙여넣기(우클릭) : 안 보이므로 그냥 엔터

ALTER USER 'root'@'localhost' identified by 'MarobianA12#';
-> exit; 또는 ctrl + D

7) 다시 로그인(MarobianA12#)

mysql -u root -p
MarobianA12#

8) 쉬운 비번으로 바꾸기

SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_length=4;

ALTER USER 'root'@'localhost' identified by 'root';

9) 다시 로그인(root)

mysql -u root -p
root

10) DB 보기 : show databases; DB 생성문 : 기존 DB명과 일치하게 만들기 use DB명; : DB 사용한다고 선택 테이블 생성 쿼리 쭉 수행 show tables;

인바운드 규칙 설정, 톰캣 매니저 켜기

보안 -> 보안 그룹 -> 인바운드 규칙 편집 -> 규칙 추가 사용자 지정 TCP, 8080, anywhere ipv4 -> 규칙 저장

tomcat 서버 켜기

sudo /usr/local/tomcat/bin/catalina.sh start

-> 접속 ip혹은 도메인으로 페이지에 접속해서 설정이 적용 되었는지 확인 (http://ip주소:8080)

★ 톰캣이 살아있는지 확인 : ps -ef | grep tomcat -> 한 줄만 뜨면 안 켜있는 것

이동 : cd /usr/local/tomcat/ -> ls -> cd bin/

톰캣 켜기 : sudo ./catalina.sh start

-> ip주소 : 8080 해서 페이지가 뜨면 잘 된 것.

서버 타임존 설정(톰캣)

이동 : cd /usr/local/tomcat/bin

sudo vi setenv.sh -> i로 입력 ->

#!/bin/bash
export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+9"

-> shift + ; ->wq(저장 후 나가기)

sudo ./catalina.sh top

putty 다시 켜기

putty 클릭 -> 기존 키 Load -> SSH -> Auth -> ppk 가져오기 -> open

tomcat manager 설정 (배포 할 수 있게)

1) tomcat 설치 디렉토리로 이동

cd usr/local/tomcat/
cd conf

2) user 태그의 username 과 password 부분은 실제 접속에 사용할 아이디와 비번이다.

sudo vi tomcat-users.xml

-> i로 insert 가능하게 함

<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>    
<role rolename="manager-script"/>  
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-status"/>

-> 하늘색 위쪽에 복붙 -> esc -> shift + ; -> wq로 저장 + 종료

3) manager 페이지를 로컬환경에서만 열도록 해주는 설정으로, 이를 해지해서 어디서든 접속할 수 있도록 한다.

cd ..
cd webapps/
cd manager/
cd META-INF
sudo vi context.xml

-> i로 수정 : Valve 주석 처리

<!--
 <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

-> 상대 경로: 현재 위치 기준으로 이동 -> tab으로 잘 찾았나 확인, 또는 pwd로 위치 확인

톰캣 켜기

sudo /usr/local/tomcat/bin/catalina.sh start 

-> 절대경로 : 위에서부터 절대 위치

->이제 브라우저에서 에러가 안 날 것이다.

http://퍼블릭 IPv4 주소:8080/manager

-> 2)에서 설정한 username 과 password인 admin, admin 입력

AWS용 환경 세팅 코드 설정

war export (프로젝트 코드를 WAR로)

  1. 프로젝트에 build.gradle에 war 빌드 속성을 추가, java 11버전으로 변경 -> Gradle refresh

    plugins {
    id 'war'
    }
    sourceCompatibility = '11'
  2. 프로젝트명Application.java파일에서 메서드명 옆에 extends SpringBootServletInitializer -> import

  3. FileManagerService 경로 AWS용으로 수정 putty에서 cd ~ -> mkdir images cd images -> pwd하면 경로가 뜬다.

복붙해서 재설정하면 이런 식으로 된다.

public static final String FILE_UPLOAD_PATH = "/home/ec2-user/images/";
  1. WebMvcConfig 파일에서도 경로 코드 수정 // AWS 리눅스는 //(2개)
    .addResourceLocations("file://" + FileManagerService.FILE_UPLOAD_PATH);

☆★ 이제 master 브랜치에 절대 커밋하면 안 됨. develop에 수정하고, aws 관련 설정은 aws 브랜치에

  1. sourcetree에 aws 브랜치 코드 수정사항 커밋 -> push

  2. 프로젝트 sts에서 file -> export -> war 검색 -> next -> 프로젝트명 작성 -> Destination : 저장할 경로 지정하고, ★ 이름은 무조건 ROOT.war ★ -> finish

  3. 톰캣 매니저 - http://퍼블릭 IPv4 주소:8080/manager 에서 배치할 war 파일 -> 파일선택 -> ROOT.war 선택 -> 배치 클릭(좀 걸리니 기다리자)

  1. 페이지 잘 뜨는지 확인(프로젝트 내 페이지 경로 아무거나) http://퍼블릭 IPv4 주소:8080/페이지 경로

추가 tip

무한 루프나 오래켜면 메모리가 많이 찰 수 있다. -> 메모리 상태를 본다. top free -m -> ctrl + c : 보고 있던 것 빠져나온다.

putty로 에러 보기

cd logs/ sudo vi catalina.out : 에러 보기 -> shift + ; +q로 나가기

sudo tail -f catalina.out : 에러 그때그때 찍힌다. -> ctrl+c로 나가기

chessta0126 commented 1 year ago

AWS 동작 문제

  1. db festivalbooking으로 되어있는데, yml festivalBooking이라 대소문자 불일치 -> aws 설정에서 수정했음

★ default 이미지 경로 재설정 -> aws에 반영해야 함

미완성된 부분(일단 develop에만 추가)

아쉬운 추가할 사항