AWS

AWS 230327 기초4

주영재 2023. 3. 27. 14:08

향상된 패키지 관리도구 apt

-외부 파일을 리눅스에 설치하는 방법으론 크게 3가지가 있습니다.

  1. wget명령어로 다운하기 (window의 브라우저와 비슷합니다.)
  2. FTP통신으로 tar파일을 옮기고 압축해제하고 실행하기
  3. apt명령문으로 파일 다운받기

 

apt는 인터넷을 통해 원격에 저장된 패키지를 다운로드 받아서 설치해주는 향상된 패키지 관리 도구 입니다.

향상된 패키지 관리 도구 apt는 필요한 파일을 다운로드 하고 환경 설정까지 처리 해줍니다.

 

--apt 명령문은 다 관리자 권한이 필요함. 앞에 sudo를 붙여서 사용

 

패키지 관리 도구 업데이트

apt-get update

패키지 찾기

apt search <패키지명>

패키지 다운로드하기

apt-get install <패키지명>

 

 

echo $PATH

--경로를 입력하지 않아도 파일이 환경변수에 등록되어 있다면 관련 명령문을 실행가능하게 만듦 

 

java파일이 있는 경로에 가서 java 파일명 을 하면 실행된다. sysout처럼.

 

 


 

실행(자바설치)

apt설치 시 환경변수 설정은 자동으로 이루어 집니다.

sudo apt-get update
sudo apt search openjdk-11
sudo apt-get install openjdk-11-jdk

자바버전 or 컴파일 버전 확인하기

java -version javac -version

자바실행파일 찾기

which java


  • 모놀리식 아키텍쳐 웹서버
    • 대표적인 웹서버 구현 아키텍쳐는 하나의 운영체제 위에 필요한 서비스를 모두 묶어서 구축하는 형식입니다.
    • 전통적인 서버 구축 방식입니다.
    • 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍처를 가질 때, Monolithic 하다고 합니다.
    • 데이터베이스는 같은 운영체제에 묶을 수도 있고, 다른 서버에 분리해서 구축할 수도 있습니다.
    • RDS and EC2데이터베이스 and 웹서버에 데이터베이스
    • 예제에서는 DB도 묶어서 실습합니다.

EC2서버, EC2서버에 프로젝트와 db가 있는 것.

시나리오

    1. 자바설치
    2. mysql서버설치
    3. aws인 경우 서버 보안그룹 설정
    4. window환경에서 원격 mysql서버에 접속해보기
    5. 개발 서버에서 프로젝트 빌드
    6. FTP통신을 이용해서 빌드 된 파일을 전송
      1. 또는 깃으로 다운로드하고 리눅스에서 직접빌드 (서버스펙이 요구됨 , AWS 프리티어인 경우 어림도 없음)
    7. 스프링부트인 경우 백그라운드로 war파일 실행
      1. AWS인 경우 서버 스펙이 낮기 때문에 swap으로 메모리설정
  • https://jins-dev.tistory.com/entry/전통의-소프트웨어-아키텍처-모델-모놀리식Monolithic-아키텍처
 

전통의 소프트웨어 아키텍처 모델 - 모놀리식(Monolithic) 아키텍처

모놀리식 아키텍처란, 마이크로서비스의 각광에 따라 마이크로서비스가 아닌 전통의 아키텍처를 지칭하는 의미로 생겨난 단어이다. 위의 그림에서 처럼 모든 모듈은 서비스 내부의 Product 형태

jins-dev.tistory.com

 


1. 자바설치 (위에서 함)

2. mysql설치

https://dev.mysql.com/doc/refman/8.0/en/alter-user.html

  • apt방식으로 mysql을 받고 설치한다.

sudo apt search mysql

sudo apt-get install mysql-server


'mysqld is running as pid 숫자'

  • mysql설치 후 초기 비밀번호 설정

mysql접속
sudo mysql

초기비번설정
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '비밀번호';

탈출
exit

루트로접속
mysql -u root -p

비밀번호 입력후 접속이 되면 정상 설치 완료
여기까지 과정은 최초 한번만.


3. AWS라면 보안그룹 설정으로 포트를 설정합니다. (4번이랑 연결해서 보세요)

  1. mysql의 포트개방 입니다.
    • 설정하지 않더라도 ssh를 통해서 접속이 가능함. (보안을 강화하려면 설정하지 않음)
  2. 접속가능한 아이피주소 입니다.
    • 0.0.0.0/0 인 경우 어디서든 접속 가능입니다. (보안에 매우 위험. 데이터베이스 해킹에 취약해짐)
    • 본인의 공용 아이피를 적어서 본인 컴퓨터에서만 접속 가능하게 할 수 있습니다.
  3. ssh접속 포트개방 입니다.
    • 반드시 열어야 함
  4. 접속가능한 아이피주소 입니다.
    • 0.0.0.0/0 인 경우 어디서든 접속 가능입니다. (보안에 매우 위험)
    • 본인의 공용 아이피를 적어서 본인 컴퓨터에서만 접속 가능하게 할 수 있습니다.

4. window환경에서 원격 mysql서버에 접속해보기

워크벤치에서 연결을 확인합니다. 2가지 방식이 있습니다.

방식1

mysql의 3306포트를 운영체제에서 개방한 경우 어디서든 들어갈 수 있습니다. (보안에 취약)

AWS CIRD를 0.0.0.0/0으로 하면 어디서든지 접근가능하다.

22번 포트로 들어가지 않고 EC2서버의 DB에 바로 들어갈 수 있다.

ip번호만 알고 있으면 root비밀번호 없이 바로 들어가는게 가능해진다.

 

 


 

 

방식2

3306포트는 개방하지 않고 리눅스에 ssh로 접속하여 mysql로 접근할 수 있습니다. (보다 안전)

 

--파일 변경 필요. ppk파일을 pem파일로 변경해야 한다.

--PuTTygen파일 실행하고 load에 ppk파일을 올림.

--하고, 위의 Conversions에서 Export OpenSSH key 선택

--저장할 때 이름은 똑같이 하고 확장자를 .pem으로.

--sql의 SSH Key File을 이 pem파일로 올리면 된다.

 

 

 

  • 접속했으면 개발 환경의 데이터베이스를 운영을 백업하고, 동일한 환경을 구성합니다.
  • MySQL 환경과 설정에 따라 대소문자를 구분하기도 하고 그렇지 않기도 한다.
  • 컬럼이름은 모든 환경에서 대소문자를 구분하지 않는다.

create database spring default character set 'utf8';

create user 'spring' identified by 'spring';

grant all privileges on spring.* to 'spring';