AWS시작하기

김윤빈·2021년 8월 22일
1

aws

목록 보기
1/2

AWS 시작하기

지금껏 학과에서 했던 프로젝트들의 목표는 알고리즘을 위한 코드를 짜고 나오는 그래프들뿐이였다.

하지만 코드를 짜는건 일부분일뿐, 배포하고 운영하는것까지 프로젝트의 끝과 시작이다.

그에 있어 싸피 2학기의 공통프로젝트를 하며 aws를 사용해보고 어떤 문제가 있었는지 기록해보려고 한다.

서버 접속하기

기존에 AWS를 공부했을때 나오는 웹에서 여러가지 설정을 할 수 있는데에 반해 싸피에서 나오는 AWS는 오로지 인증키 하나만 준다. 오로지 검은화면에 흰글씨와 함께 싸워야하는 환경으로 들어가게 된다.

기본적으로 필요한 포트들은 열어서 우분투 머신 한대를 주게 되는데 접속 방법은 SSH 방법으로 인증키를 통한 접속으로 들어가고 있다.

PuTTY Gen 실행하기

  • Load를 클릭한 후 All Files를 눌러보면 지급받은 보안키 (.pem) 방식을 로드해준다.

  • 로드해주면 save private key가 활성되고, 클릭하면 ppk 파일을 저장한다.

PUTTY 접속하기

  • Connection > SSH > Auth: ppk 파일키를 넣어준다
  • Host Name: ubuntu@키파일이름소문자.p.ssafy.io
  • 하고 클릭하고 들어가면 aws에 들어온것이다
  • cmd창 하나주고 aws라고?? 생각이 들지만 내 원격의 우분투에 접속이 된건 맞다.

Install

기본적인 apt, nginx, gradle, mysql,npm 등을 깔아준다.

putty 접속후에 cmd창 접속

  • apt 업데이트

    $ sudo apt-get update
    $ sudo apt-get upgrade
  • 서버 시간 변경

    $ sudo timedatectl set-timezone "Asia/Seoul"
    
    # 확인하는법
    $ date
    Mon Aug  2 15:46:24 KST 2021
  • npm 설치

$ sudo apt install npm
  • 깃클론 받기
$ git clone <주소>
$ ls
frontend backend ...
# frontend(vue.js) 빌드 진행
$ cd frontend 
$ npm install 
$ npm run build
  • nginx 설치

    $ sudo apt install nginx
    $ sudo systemctl start nginx
  • nginx 설정

  • insert 하고 들어가서 편집후 :wq!

  • mysql 설정
$ sudo apt-get install mysql-server

# 포트 열기
$ sudo ufw allow mysql
Rules updated
Rules updated (v6)

# 실행 
$ sudo systemctl start mysql

# 접속

$ sudo /usr/bin/mysql -u root -p
# 접속하면 아래처럼 sql 프롬프트가 보임 
mysql> 

# 비번 변경
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root1234';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root1234';
  • mysql 사용계정 만들기
  • database 만들기

    mysql> CREATE DATABASE ssafy_web_db;
    
    # db 확인
    mysql> SHOW DATABASES;
  • 계정 만들기

    # 계정은 kimyunbin Host는 localhost 패스워드는 root1234
    mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'root1234';
    
    # mysql의 user 테이블에 추가하거나 변경이 있을 경우 flush privileges 쿼리를 실행
    mysql> FLUSH PRIVILEGES;
    
    # 만들어졌는지 확인
    mysql> SELECT User, Host, authentication_string FROM mysql.user;
  • 권한 부여

    mysql> GRANT ALL PRIVILEGES ON ssafy_web_db.* to kimyunbin@localhost;
    
    # 권한 변경후 flush privieges 실행
    mysql> FLUSH PRIVILEGES;
    
    # 권한 가지고 있는지 확인
    mysql> SHOW GRANTS FOR 'kimyunbin'@'localhost';
  • gradle 권한주기

    $ chmod +x ./gradlew
  • java 설치

  • openjdk 8

    $ sudo apt-get install openjdk-8-jdk
    $ sudo apt-get install openjdk-8-jre
    
    # javac 위치 확인
    $ which javac
    usr/bin/javac
    
    # 환경변수 파일 들어가기
    $ sudo nano /etc/profile 
    # 환경변수 맨 밑에 추가 
      export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASS_PATH=$JAVA_HOME/lib:$CLASS_PATH
    
    # 입력 후 Ctrl+X → Y 입력 → 엔터 키를 눌러 저장을 한다.
    
    # reload
    $ source /etc/profile

gradle 설치

$ sudo apt install wget unzip # wget, unzip 설치

$ cd /tmp

$ wget <https://services.gradle.org/distributions/gradle-6.7-bin.zip>

$ sudo mkdir /opt/gradle

$ sudo unzip -d /opt/gradle gradle-6.7-bin.zip

$ export PATH=$PATH:/opt/gradle/gradle-6.7/bin

$ gradle -v

ubuntu 내 파일찾기

$ cd home
$ cd ubuntu/
$ cd S05P13C104
$ cd /backend
$ chmod +x ./gradlew
$ ./gradlew clean build
  • 실행

    $ cd build/libs
    $ java –jar ssafy-fifth-web-common-project-1.0-SNAPSHOT.jar
  • mysql bind-address = 0.0.0.0 포트 열어주기

  • Nginx backend reverse proxy 설정 추가

  • $ sudo vim /etc/nginx/sites-enabled/default

    server {
    listen 80;
    	…
    	root /home/ubuntu/S05P13C104/frontend/dist; # dist 파일 찾아서 넣어야함 
    location / {
    	try_files $uri $uri/ /index.html;
    }
    # 대충 설명하자면 / 로가면 프론트 
    # /api로 가면 서버의 api/~ request를 찾아간다. 
    location /api {
    	proxy_pass <http://localhost:8080>;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port $server_port;
    }
  • 터미널을 종료해도 프로세스를 유지할 수 있는 방법

    $ nohup {{ 프로세스 실행 명령어}}&
  • 프로세스를 종료하고 싶다면?

    # Java가 들어간 프로세스를 모두 표시
    $ ps –ef | grep java
    
    # - 해당 프로세스 종료
    $ kill -9 {{ 프로세스 번호 }}
    sudo docker run --rm \\
        -p8888:8888/tcp \\
        -p5000-5050:5000-5050/udp \\
        -e KMS_MIN_PORT=5000 \\
        -e KMS_MAX_PORT=5050 \\
        kurento/kurento-media-server:latest
profile
I'm yunbin

0개의 댓글