반응형

들어가는 말

예전부터 AWS EC2 프리티어를 잘 이용했었고, 무료 기간 1년이 끝나고서 기존 사용하던 서버를 라이트세일 서버로 이전했었다.

 

현 시점 기준으로 라이트세일 서버도 1년간 사용해봤기 때문에 얼마나 쉽고 간편한지 몸소 알고있기 떄문에 이번에 워드프레스로 새로 운영할 블로그도 라이트 세일로 구축하기로 했다.

 

따라서. 이 포스팅은 AWS 라이트세일을 이용하여 워드프레스 블로그 서버 구축을 위한 포스팅임을 알고있음 좋을 것 같다!

라이트세일 VS EC2

오케이 좋아! 설치형 블로그인 워드프레스 블로그를 만들려면, 호스팅 서버가 있던지, 본인 서버에 올리던지 대표적으로 EC2 도 있을텐데 왜 라이트세일이야?

 

사실 이 포스팅을 보기위해서는 라이트세일 키워드를 넣어서 검색하고 왔을것이고.. 라이트세일이 제일 좋아보여서 최종적으로 검색한것이기 때문에 지금 비교하는게 무의미하겠지만..! 나는 이런점이 좋았다!

가격이 저렴해!

  1. 나의 경우 작은 블로그를 운영할껀데 월 3.5달러~5달러 선이면 소형 블로그 운영하는데 문제없을 성능의 서버스펙을 갖출 수 있다!
  2. 커피한잔에 5~6000원 하는데… 한달에 커피 한잔 먹는다고치면 사실.. 거의 복지에 가까운 요금이지않나 생각된다..!
  3. 아 그리고. EC2와 비교되는점은 EC2는 가장 요금 대비 성능을 비교하면 비싸다. EC2에서 엔트리급 서버하나 1년 굴렸을 때 한달에 만얼마가 나갔던걸로 기억한다.
    1. 현재 온디멘드 기준. 가장 싼 a1.medium 스펙 이용시 시간당 0.0255 USD로 한달인 약 720시간을 돌릴 경우 18.36 달러가 나온다.. 현재 환율 기준 약 24,000원..
    2. 라이트세일과….꽤 격차가 크다..
    3. 사실 비싼이유가. 라이트세일과 정확히 동스펙은아니고 램이 1GB많긴한데. 반대로 말하면, 나는 EC2 가장 작은 스펙의 서버보다도 더 작은 스펙의 서버가 필요한데. 그 작은것들이 바로 라이트세일에 있는 것이다!
    4. 즉! 라이트세일 이름답게 개인과 같은 라이트 유저들을 위한 것이다!

설정이 편해!

  1. 기존 EC2하고 가장 비교되는 점이다. 기존 EC2 구축하는데있어서는 ㄹㅇ 서버만 덩그러니 받아가지고, 우분투위에 필요한거 패키지 관리자로 다 받고 구축하고 Config 바꾸고… 방화벽설정하고… 사실 귀찮은 부분이 많았다.
  2. 관련 업계에 종사하는 나도 귀찮은데… 전공자가아닌… 순수하게 블로그를 가지고 싶어서 들어온 비전공자는 얼마나 복잡하겠는가…
  3. 그래서 선택한게 라이트세일이다… 이미 청사진(Blueprint)가 있기 때문에 서버 만들때 “뭐 어떤 서버 만들껀데?” 를 물어보는데 거기서 WordPress 아이콘 한번 누르고 만들기를 누르면 블로그 구축이 되어 있는 상태로 서버를 생성해준다….. 확실히 이런 편리함은 EC2에 비해 좋다!

기존 사용하던 AWS 스택이라 편해!

  1. 너무 무책임하거나.. 혹은.. 한번도 AWS 서비스를 경험해보지 않은 사람들은 공감이 되지 않을수도있다….
  2. 하지만.. 학창시절부터 카페24, 가비아 등 여러 호스팅 업체를 이용해 봤는데.. AWS 가 가장 편하고 직관적인 것 같다.
  3. 부가적으로… 회사에서도 AWS 서비스들을 많이 쓰니까.. 이럴때 같이 해보면서 시야를 넓혀놓으면 업무에 도움도되고 얼마나 좋은가!

1. 인스턴스 생성

본격적으로 인스턴스를 생성해보자. 비전공자들은 그냥 “서버를 생성해보자” 정도로 이해하면 될 것 같다.

 

아래 라이트세일 페이지를 들어간 후 AWS 로그인을 해주자.

인스턴스 생성하기

나는 기존에 운영하던 서버가 있기때문에 인스턴스 탭에 서버가 하나 잡힌다. 무시하고 중앙 우측에 있는 주황색 “인스턴스 생성”버튼을 눌러주자.

인스턴스 이미지 선택

요부분이 아까 말했던 “쉽다!” 라는 요소다. 워드프래스 말고도 Nginx나 Django 등 다른 어플리케이션도 바로 이미지형태로 부어 서버 셋업을 할 수 잇다. 우리는 플랫폼은 “Linux/Unix” 를 선택해주고 블루프린트는 “앱+OS” 탭에 “WordPress”를 선택해주자.

요금제 및 인스턴스 이름 선택

요기서 요금제를 골라주면된다. 나는 AWS에 단 1달러 내는것도 부담돼!!!!!!!!!!하면 바로 3.5달러짜리 누르면 된다.

 

하지만..! 스토리지와…램이 1.5달러에 2배..! 1.5달러면.. 약 1900원…!!!! 요즘 …피카추 돈까스도 2500원 하더라…(나떈 500~700 했던 것 같은데…)

 

아무튼… 3.5 > 5달러짜리는 가격차에비해 성능차이가 꽤 나니…개인적으로는 5달러짜리를 추천한다…! 5>10 도 고려는해봤으나…5달러차이는…………..그렇다..5달러는 좀 크다..!(개인적으로)

 

그리고 인스턴스 확인란에 인스턴스 이름을 입력해주자.. 머 서버이름정도로 생각하면 되겠다. 나는..머 서버가 많진 않아서 WordPress 로 지었다.

 

나중에 서버 아이콘이랑 이름 바꾸는거 찾아봤는데… UI상에서 바꾸는 메뉴 바로 안나오던데.. 못바꾸는걸수도 있으니 신중하게 입력하기 바란다….(혹시 바꿀 수 있는사람 댓글로 방법 부탁한다)

그 다음 간단한게 서버 인스턴스의 이름을 정해주자. 그리고 인스턴스 생성 클릭!

방금 생성한 인스턴스로 워드프레스 서버가 생성되며 초기에는 대기중으로 초기화 과정을 거친다.

조금 기다리면 금방 실행중으로 바뀐다

반응형

2. 고정 IP 적용

그 다음 해야할 일은 바로 고정 IP 적용이다. 고정 IP적용을 하지 않으면 EIP 로 동작하는데, 서버를 껏다키면 IP주소가 새로 부여되기 때문에 IP가 바뀔때마다 도메인 연결을 다시 해줘야한다. 떄문에 IP가 유동적으로 바뀌지 않도록 고정 IP를 등록해줘야한다.

간단하게 고정 IP 이름을 입력해준다. 그냥 추천해주는대로 쓰는것도 나쁘지 않은 듯..

 

주의할점은. 고정 IP할당은 인스턴스 5개까지 무료지만 할당 해놓고 서버를 꺼놓으면 돈이 나간다. 왜냐면 IP도 AWS 입장에선 디지털 자원인데 점유하고 있는데 쓰질 않으면 회사 입장에선 손해이기 때문이다. 즉, 너가 운영할꺼면 공짜지만, 운영하지도 않는데 IP만 차지할 경우에는 IP 자리세를 받는 격..!

처음과 다르게 고정IP를 적용했기 때문에 고정핀이 생긴 것을 볼 수 있다!

3. 워드프레스 계정 확인

서버 접속

이제 워드프레스 블로그를 운영하려면 관리자 계정이 있어야하는데 이건 서버에서 직접 들어가 확인 할 수 있다. 연결 탭에서 SSH를 사용하여 연결 버튼을 눌러주자. 그럼 PuTTy 나 이런 터미널 없이 웹환경에서 서버로 터미널 연결을 할 수 있다. 예전엔 좀 불안정했던 것 같은데 이번에 써보니 꽤나 안정된 느낌.

이런식으로 비트나미 쉘이 나오면 서버 접속 성공

패스워드 확인

쉘에 아래 며령어를 입력해주자! 그럼 난수암호가 나오는데 이게 블로그 운영계정 비밀번호다!

cat bitnami_application_password

4. 워드프레스 블로그 접속

서버 접속 주소 확인

서버 인스턴스의 빨간 박스 부분을 보면 본인 서버의 public IP 를 확인 할 수 있다.

<http://PublicIpAddress/wp-login.php>

위 주소에서 PublicIpAddress 에 위에서 확인한 본인 IP 를 대입하자.

💡 http://10.100.100.100/wp-login.php

머 이런꼴로 될껀데 브라우저에서 본인 IP 주소에 맞는 URL을 치고 한번 들어가보자.

관리자 계정 로그인

 💡 초기 ID : user

초기 관리자 계정은 user다 비번은 아까 위에서 확인한 난수를 입력해주면 된다.

로그인하면 아래처럼 관리자화면에 접속할 수 있게 된다!

언어 변경

마지막으로 Setting > General > Site Language 를 한국어로 바꾸고 Save Changes 버튼을 누르면 끝!

5. 사이트 접속

이제 관리자 페이지를 나와서 본인 워드프레스 서버의 IP주소를 브라우저에서 쳐보자! 그럼 기본적으로 세팅된 블로그가 출력된다! 지금은 IP로 접근가능한데 다음 포스팅에서 도메인과 연결하는 방법을 알아보자

반응형
반응형

현상

어느날.. 서버설정을 조금 만지고 서버를 재부팅했는데.. AWS 콘솔 접속이 안되는것이다....허걱

오류가 발생하여 인스턴스에 연결하거나 연결 상태를 유지할 수 없습니다. 이 인스턴스가 방금 시작된 경우 1~2분 후에 다시 시도하십시오. UPSTEAM_NOT_FOUND [519]

콘솔 접속 할 경우 위와같은 메시지와 함께 콘솔접속이 안되는 상황.. 1~2분 기다려보래서 10분을 기다려도 연결 할 수 없었다.

반응형

 

해결 방법

중지 > 실행

해결방법은 생각보다 간단했다.. 나는 계속 재부팅을 눌러 재부팅하만을 기다렸는데.. 재부팅으로 하면 안된다... 먼저 서버 콘솔에서 중지 명령을 먼저 해주고 인스턴스가 중지됨을 확인하고 다시 시작을 누른다.

 

사실 재부팅이 중지>시작을 합쳐놓은거지만 인스턴스에서 처리되는 것은 세부적으로 차이가 있다. 따라서, 재부팅 시도하지말고 중지와 시작을 나눠서 수행하면 정상 연결 되는 것을 볼 수 있다.

 

AWS 라이트세일 UPSTREAM_NOT_FOUND[519] 해결하기 / LightSail 콘솔 접속 안됨 문제 해결

반응형
반응형

이번에는 마리아DB SQL 조회시 담은공간이 없다고 뜨는 Disk Full 문제를 해결해보는 포스팅이다.

 

현상

어느날 개인적으로 운영하고 있는 서비스의 유입 사용자가 한자리 수 단위로 급감하여 서비스를 확인해보니.. 서버가 다운됐다… 정확히 말하자면 톰캣서버가 다운되진 않았고 서비스들을 점검해보니 DB를 타는 서비스들만 오류가 발생했다.

과거에도 비슷한 사례가 있었다. 그때는 로그성 테이블이 있었는데, 요기가 테이블의 최대치까지 차버려서 문제가 되었는데, 이번에도 그건가 해서 SELECT SQL을 돌려보니 위와 같은 오류가 발생했다.

 

💡 SQL 오류 (1021): Disk full (/tmp/#sql_258e0d_0.MAI); waiting for someone to free some space… (errno: 28 “No space left on device”)

 

원인

해당 오류는 DB가 동작하면서 필요한 임시데이터를 tmp 이하 경로에 적재하여 사용하는데 디스크 용량부족으로 임시 데이터 생성조차 되지 않아 발생한 오류였다.

디스크 용량은 왜 부족해진거야?

예전에는 비슷한 케이스로는 실제로 테이블에 row가 수십이었나, 수백만건이 쌓야 순수 row 행수로 데이터가 꽉차 서버 DB의 용량만으로 디스크 공간이 꽉차 문제가 발생했었다.

 

이럴 경우 DBMS 관리툴로 (난 HeidiSQL 을 사용한다) 문제가 있을법한 테이블을 보면 비 이상적으로 많은 로우가 나타나거나 빨갛게 문제가 있다고 나오기때문에 DELETE 로 지워주던지하면 된다.

 

하지만 이번 케이스의 경우는 DB때문에 용량이 꽉 찬 케이스가 아니었다..그렇다면.. 의심되는 것은…!?

 

정답은 WAS 로그 때문..

하기 명령어로 서버의 디스크 사용현황을 한번 확인해 보았다.

df -h

홀리씟 일단 디스크를 모두 사용하고 있는건 realFact 로 확인되었다.. 어 ? 그럼 데이터가 대량 생성될껀 DB의 log 테이블이 아니라면… 혹시나 WAS로그..?

반응형

먼가 생각해보니…보통 3개월의 log를 로컬 서버에 저장해둘텐데.. 나는 그 설정은 해두지 않았다…따로 설정하지 않았다면…제작년부터 운영하던 모든 로그가 남아있을텐데 이것때문인가??

허걱.. 바이트 단위가 바로 GB로 환산되진 않았지만 대략… 내 서버 디스크가 40GB 짜리니까… 앞에 34면 대략 34기가가 아닐까 생각이 들었다.

 

해결

허걱… 역시는..역시였다… 대략 로그파일이 35기가가 쌓여..서버 디스크에 공간이 없었던것.. 그래서 MariaDB에서 쿼리 명령 실행하는데도 DBMS단에서 사용하는 임시데이터 생성할 공간도 없어…이지경이 되었던것.. 위 파일들은 필요없어서 일단 다 삭제했다..

 

사실.. 간단한 경량 서비스라.. 로깅 레벨이나, 보존기간을 설정해두지 않았는데.. 이번에 새삼.. 로깅관리도 중요하구나 생각이 들었다..

 

파일 삭제를 했지만. 아직도 서버에스는 디스크 용량을 100%사용으로 잡고있었다. 아마.. 파일을 가르키는 주소값만 없어지고 Free 된 내용이 반영된 것 같지않아 깔끔하게 서버 재부팅을 했다.

허걱..라이트 세일 재부팅을 했는데.. 계속 터미널이 붙지 않아서 식겁했지만.. 재부팅말고 중지>시작 단계로 구분하여 리부팅 시도하니 정상적으로 터미널이 붙었다.

그 후 디스크 상태를 확인하니 정상적인 디스크 사용량으로 변해있었다. 후.. 이후 모든 서비스들을 다시 부팅하고 서버 복구 완료..!

결론

💡 서버에서 공간을 많이 차지하고 있는 파일을 삭제해라!

반응형
반응형

이번에 아마존 EC2 인스턴스를 12개월 동안 무료로 사용할 수 있는 프리티어 기간이 끝난다는 메일을 받았다.

아무생각 없이 영원히 이용할 수 있을 것 같았던 EC2가.. 끝이라니..! 무료 사용 종료는 2020년 4월 30일.. 이번달이 지나고 나서 온디멘드 요금으로 전환된다.

그래서 그냥 유료로 기존 EC2 서버를 운용 할 것인가. 아님 그냥 서비스를 종료할까, 아니면 다른 서버로 이주해서 계속 서비스를 할 것인가 고민을 많이 했다.

고민끝에 서버를 이전하기로 했고, 기존 EC2 서버는 더 이상 요금이 발생하지 않도록 삭제하기로 했다.

1. EC2 인스턴스 종료 및 삭제

 

인스턴스 중지

EC2 인스턴스를 삭제하기 전에 실행중이라면 인스턴스를 종료해주자.

1. EC2 대시보드에서 인스턴스를 눌러주자.

2. 삭제하려는 인스턴스 선택

3. 인스턴스 상태 클릭

4. 인스턴스 중지 선택

정지할꺼냐고 물어보는데 중지를 눌러줍시다.

상단에 성공적으로 중지됐다고 나오고, 인스턴스 상태가 중지됨으로 나오면 완전히 중지된 상태이다.

인스턴스 종료(삭제)

이제 인스턴스를 삭제할 꺼다. 예전에 AWS 처음 할 때 저 인스턴스 종료가... 그냥 윈도우 잠깐 시스템 종료 해두듯이. 그냥.. 단순 종료인줄 알았는데.. 저거 서버 삭제다.. ㅋㅋ 아무생각없이 눌렀다가 서버 날아가서 오열했던 기억이 잠깐 난다.

1. 삭제할 인스턴스 선택

2. 인스턴스 상태 선택

3. 인스턴스 종료 선택

진짜 삭제할꺼냐고 묻는다. 종료를 눌러주자.

그럼 성공적으로 종료되었다는 메시지와 함께 인스턴스 상태를 보면 종료됨으로 표시된다. 처음에 어..? 삭제 끝났는데 왜 목록에 자꾸 남아있지!? 하고 이상해했다. 계속 새로고침을 눌러봐도 종료됨으로 떠있어서 이게 삭제가 아닌가? 했는데 한 5~10분 지나면 목록에서 사라진다 ㅋㅋ..

몇분 후면 이렇게 목록에서 사라져있다 ㅎㅎ 여기까지 EC2 인스턴스 삭제는 끝이다.

하지만, 인스턴스만 삭제고, 나머지 EIP 등으로 과금이 생길 수 있기때문에 깔끔하게 다른 것 까지 지워주자.

2. EIP 삭제 (Elastic IP / 탄력적 IP)

EIP를 사용하지 않고 유동 IP를 사용했다면 추가 과금 될 것은 없다. 하지만 서버에서 서비스를 운영하는 입장에서는 보통 고정 IP를 쓰고 프리티어에서 1개의 EIP는 무료로 사용 할 수 있기 때문에 아마도 다들 EIP 할당이 되어있을 것 같다.

EIP는 프리티어에서 1개까지는 무료지만, EIP할당 받아놓고 인스턴스를 Run 해놓지 않으면 과금이 발생한다. 보통 대학생들이 AWS에 돈나갔어요 ㅜㅜ 한번만 봐주세요 하고 보내는는 이유중, 이런 사유로 발생하는 경우가 많다 ㅋㅋ..

AWS 입장에서는 고정 IP를 한정적으로 가지고있고, 여기에 인스턴스가 돌아가지 않고 있다면, IP 자원 하나를 손실보는 것이기 떄문에 인스턴스가 안돌아가는 경우 과금을 하는 것 같다. 이제 할당된 EIP를 삭제하는 법에 대해 알아보자.

1. 좌측에 탄력적 IP를 눌러주자.

2. 삭제하려는 IP를 선택해주자.

3. 상단 작업을 클릭

4. 탄력적 IP 주소 릴리즈 를 눌러주자

진짜 삭제할 꺼냐고 묻는다. 릴리스를 눌러주자.

일단 여기까지 하면 보통 과금될 일은 없다. 추가적으로 AWS S3, Route 53, RDS, 스냅샷 을 사용할 경우 이 서비스들 각각 다 서비스를 삭제해주면 된다. 하지만 난 S3, RDS를 사용하지 않고 Route 53은 계속 사용할 것이기 떄문에 일단 여기까지만 했다.

다음은, 과금에 영향은 없지만 이 EC2와 관련된 것은 다 지우고 싶다 할 경우 진행하면 된다.

3. 보안그룹 삭제

일단 기존 EC2 에서 사용되었던 보안그룹도 삭제할 것이다. 보안 그룹이 뭐지? 하는 사람은 머.. 방화벽 정책정도로 생각하면 될 것 같다. 나중에 다시 EC2 인스턴스를 올려서 동일한 방화벽 정책을 사용할 경우에는 남겨두어도 좋지만, 난 라이트세일 서버로 이전했기 때문에 필요 없어서 지웠다. 머.. 나중에 EC2 인스턴스를 다시올릴때 필요하다면 다시 만들려고 한다. 머 어차피... DB포트정도만 열면되기 떄문..

1. 네트워크 및 보안 탭에 보안그룹을 클릭

2. 삭제하려는 보안 그룹 선택

→ 2번에 빨간 박스친 밑에 default 보안그룹은 말그대로 기본 설정이기 때문에 안지워도 된다. 본인이 만든것만 지우면 되기때문에 디폴트는 걍 무시한다.

3. 작업 선택

4. 보안그룹 삭제 선택

진짜 삭제할 꺼냐고 물어본다. 삭제를 눌러주자.

짜잔 삭제 완료

4. 키 페어 삭제

이제 기존 EC2 서버 접속간 사용했던 키페어를 삭제할 예정이다. 이거 머 삭제해도 되나..? 한번 고민은 해봤었는데 어치파.. 기존 EC2 접속에만 사용했었기 때문에 더 이상 그 인스턴스는 필요하지 않으니, 삭제해도 상관 없을 것이라고 판단됐다.

 

1. 네트워크 및 보안 키 페어 클릭

2. 삭제하려는 키 페어 선택

3. 작업 클릭

4. 삭제 클릭

그 다음 진짜 삭제할꺼냐고 묻는데 상당히 중요한 판단인가본지 직접 "삭제"라고 타이핑 하고 진행하라고 한다. 일단.. 삭제하기로 맘먹었기 때문에 그냥 삭제 치고 삭제를 누르자.

짜짠.. 키 페어 삭제 완료

삭제 후기

삭제 후기? 별거 없다. AWS 프리티어 1년간 정말 잘 썼다. 앞으로 이거 관련해서 추가 과금은 없겠지..? ㅎㅎ 요금 폭탄 안나오길 바란다.

#AWS #EC2 #인스턴스 #삭제 #프리티어 #종료 #방법 #탄력적IP #키페어 #보안그룹 #서버 #서버삭제 #인스턴스삭제

반응형
반응형

 

https://extsdd.tistory.com/126

 

[아마존 AWS EC2] AWS서버 8080 톰캣 포트 숨기기 / 포트포워딩 / 8080포트 번호 없이 들어가기 / iptables

https://extsdd.tistory.com/125 [아마존 AWS EC2] AWS서버 URL 주소에 프로젝트명 숨기기 / 톰캣 주소 변경 / 포워딩 / 스프링 / server.xm https://extsdd.tistory.com/124 [Maria DB] AWS EC2 원격 서버 마리아..

extsdd.tistory.com

  자 저번시간까진 내 서버 URL에서 프로젝트 이름명도 제거하고, 포트번호도 제거했다. 이번에는 IP형식의 내 주소에 도메인을 할당해보자! 비전공자들에겐 어려울 수 있으니 쉽게 설명해주겠다.

DNS (Domain Name System)

 

  모든 서버들은 IP주소를 가진다. 우리가 만든 AWS EC2서버도 하나의 IP주소를 가지듯이 우리가 알고있는 Naver나 Daum 이런친구들도 다 IP를 갖는다. 하지만 우리가 접속할땐 네이버의 ip를 치고들어가는게 아니고 naver.com을 치고 들어간다. 왜냐하면 IP로 외우고 접속하다보면 이게 딱봤을때 뭐하는 서버인지, 어디 주소인지도 모르고, 수많은 IP들을 다 외우고 다니긴 힘들기 떄문이다.

 

  그래서 DNS라는걸 이용한다 Domain Name System으로써 저 서버의 IP들과 우리 인간들이 알아먹을법한 naver.com 이런걸로 다 매칭을 시켜놓고 사람들이 주소창에 naver.com을 치면 저 DNS 서버에서는 해당 네이버 서버 IP로 변환시켜주는 시스템이다. 아무튼 우리가 이제 할 것도 이거랑 관련이 있는데 도메인을 구입한후 AWS에 등록시켜주는 작업을 할 예정이다.

 

1. 도메인 구입

 

  일단 가비아나 머 이런데서 살 수도 있는데 AWS에서 서비스하고 있는 Route 53에서 도메인을 구매해보자 가격차이는 크게 안난다. 머 1년에 1.4만원정도? 업체별로 천원, 이천원 차이인데 편한곳에서 구매하면 된다.

 

https://console.aws.amazon.com/route53/home?#

 

  위 링크로 들어가 Route 53 서비스 페이지로 들어가자

 

 

  저기 우측 도메인 등록의 지금 시작하기를 눌러보자.

 

 

  다시 도메인 등록 버튼 클릭!

 

 

 

  자 1번 박스에 자신이 구매하려는 도메인을 입력하자. 예를 들면 naver 같은걸루, 2번 박스는 최상위 도메인을 뭘로 할지 고르란건데 나는 당연히 가장 무난한 .com을 택했다. 그뒤 3번 박스의 확인 버튼을 누르면 가능한지 여부가 나오고 그 밑에는 유사한 것 들도 나온다. 지체 없이 장바구니에 추가해주자(4), 그리고 5번 박스를 보며 소계가 나온다. 1년에 12달러! 마지막으로 6번 박스의 계속을 눌러주자!

 

 

  그다음 적당히 내용을 입력해주고 계속버튼을 누르자. 아 맞다 전화번호 국가코드는 0없이 그냥 82만 넣어주면 된다. 한국 국가코드가 82다

 

 

  다음으로 넘어가면 이런 팝업이 나온다. 뭐 한마디로 이메일주소 구라면 죽는다란 뜻이다. 제대로 입력했는지 다시 한번 확인해보고 넘어가자! 15일 뒤까지 이메일로 인증안하면 취소된단 얘기다.

 

 

  차근차근 해보자 먼자 1번 박스 개중요하다. 이거 1년뒤에 자동결제 할꺼냐는건데 우리같은 취미로 하는분들은 비활성화를 해놓자.. 안그럼 1년뒤에 자동으로 결제된다. 혹시 꼭 이 도메인을 절대 빼앗기고 싶지 않은분은 뭐 자동연장이 좋겠지만.....1년뒤에 이거 결제해논게 기억이나 날까..? ㅠㅠ

 

  암튼 두번쨰 박스로 넘어가서 잘 할꺼냐는 말에 동의해주자. 마지막 3번 이메일 인증 받고오란다. 생각날때 지금 해두자. 15뒤에 해지되지 말고..

 

 

  짜잔 .! 메일함에 가보면 링크가 있다. 인증해주자.

 

 

  인증 완료!!

 

 

  다시 주문서로 와서 상태 새로 고침버튼을 눌러보자.

 

 

  진짜루 인증에 성공했다 이제 마지막으로 주문완료를(4) 눌러주자!

 

 

  짜잔! 주문성공! 결제 프로세스가 없는걸 보니 이미 EC2 인스턴스 만들때 등록했던 카드로 승인이 따지는 형태인거 같다.

 

 

  저기 보이는 도메인으로 이동버튼을 눌러주자!

 

 

  그럼 도메인 등록이 진행중이라고 나온다.

 

 

  한 2분 정도가 지나니 승인 문자가 왔다.

 

2. 도메인 등록

 

 

 

  대시보드로 이동해주자!

 

 

  그다음 호스팅 영역으로 이동! 숫자가 1이 카운트 된걸 볼 수 있다.

 

 

  자신의 도메인 이름을 클릭해보자!

 

 

 

  위와같은 화면이 나오는데 1번 박스에 있는 레코드 세트 생성 버튼을 누르자!

 

  2번 박스는 서브도메인이 있는경우에 설정하고, 없는사람은 두면된다. 보통은 없기에 걍 비워두면 된다. 그 밑에 유형은 주소체계인데 IPv4를 사용할꺼니 그냥 두자. 3번 박스는 캐싱시간인데 그냥 디폴트로 두자.. 가장중요한게 4번이다. 바로 연결하려는 자기 AWS EC2 인스턴스의 IP주소를 저기다 넣으면 된다. 5번은 라우팅 방식인데 심플한게 젤 좋으니 그냥 두자 ㅎㅎ 마지막으로 생성 버튼을 누르자!

 

 

  히힛..하나가 추가됐당.

3. 결과 확인

 

  다른 글들 읽어보면 15분은 걸린다고 하는데 새벽 1시44분 기준으로.. 머.. 해보니까 바로 됐다.

 

http://신청한도메인/reqUrl.do?reqParam=3

 

자 이제 최종적으로 자기가 신청한 도메인 + 우리가 만든 서비스를 치면 그대로 수행되는걸 볼 수있다. 위 주소대로라면 구글이 나올것이다.

 

캬..이제 주소 줄이는건 마스터 한 것 같다. 리뷰를 한번 해보자.

 

 

http://자기AWS아이피:8080/CP_service-1.0.0/reqUrl.do?reqParam=3

처음엔 포트번호에...프로젝트 이름에.. 너무 조잡했다. 하지만 https://extsdd.tistory.com/125이 포스팅을 통해서 저 프로젝트명을 없애줬다.

 

http://자기AWS아이피:8080/reqUrl.do?reqParam=3

 

후.. 프로젝트명을 없앴는데도 저 :8080 포트가 남아있다 ..ㅡㅡ 하지만 https://extsdd.tistory.com/126이 포스팅을 통해 우린 포트포워딩을 통해 80포트가 들어와도 자동으로 8080으로 연결될 수 있도록 설정했다

 

http://자기AWS아이피/reqUrl.do?reqParam=3

많이 줄여준거 같은데도 주소가 IP로 되어있으니까 사람들에게 소개하기 쪽팔린다... 이번 포스팅을 통해 도메인을 등록해주자.

 

http://도메인/reqUrl.do?reqParam=3

캬..이제야 다른 홈페이지처럼 간지가 나게 됐다 히히..

 

#아마존 #AWS #EC2 #인스턴스 #Route53 #서버 #도메인 #주소 #연결 #설정 #URL #DNS #등록 #구입 #비용 #톰캣 #스프링 #프로젝트

 

반응형
반응형

 

https://extsdd.tistory.com/125

 

[아마존 AWS EC2] AWS서버 URL 주소에 프로젝트명 숨기기 / 톰캣 주소 변경 / 포워딩 / 스프링 / server.xm

https://extsdd.tistory.com/124 [Maria DB] AWS EC2 원격 서버 마리아 DB 접속 / HeidiSQL / 데이터 삽입 / 테이블 생성 https://extsdd.tistory.com/123 [아마존 AWS EC2] #3 스프링/전자정부프레임워크 프로젝..

extsdd.tistory.com

  저번시간까지 AWS에 올린 내 스프링 프로젝트 URL에서 프로젝트 이름 빼는걸 했었다.

 

  http://자기AWS아이피:8080/reqUrl.do?reqParam=3

 

  위 링크처럼 프로젝트 이름도 빠지고 간단해 졌지만 아직도 :8080 포트 번호가 써져있어서 메이플 프리서버같은 느낌이 안날 수가 없다. 이번에는 저 8080 포트를 뺴보자!

 

1. EC2 쉘 Root 접속

 

 

 

 

  짜잔.. 접속 성공..!

 

 

  su 명령어를 통해 Root계정으로 들어가자.

2. 포트 포워딩 정보 입력

 

  iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

  위 명령어를 먹여주자! 저게 뭐냐면 라우팅정보를 가지고 있는 테이블이 있는데 앞으로 80으로 들어오는 포트번호는 8080으로 해석해주세요~ 라고 입력해 놓는거다. 그럼 우리가 그냥 인터넷 주소치듯이 (보통 인터넷 포트가 80포트니까 80포트는 생략함) 치면 사실 80포트로 요청이 갈껀데 저 테이블 정보를보고 아! 80포트는 8080으로 해석하라네!? ㅇㅋㅇㅋ 하고 8080으로 변환을 시켜주는거다. 그럼 우리 톰캣주소로 포워딩이 되는거다.

 

 

  말은 거창했는데 명령어를 먹이면 뭐.. 큰 반응은 없다..

3. 결과 확인

 

변경 전 : http://자기AWS아이피:8080/reqUrl.do?reqParam=3

변경 후 : http://자기AWS아이피/reqUrl.do?reqParam=3

 

자 변경 후 주소로 접속이 가능한걸 확인 할 수 있다. 아마도 우리 소스대로라면 구글을 띄울것이다.

 

#아마존 #AWS #EC2 #톰캣 #포트번호 #8080 #숨기기 #없애기 #포트포워딩 #없이들어가기기 #주소

 

반응형
반응형

 

https://extsdd.tistory.com/123

 

[아마존 AWS EC2] #3 스프링/전자정부프레임워크 프로젝트 AWS에 FileZilla로 배포하기 / 메이븐 빌드 /

자 여태까지 만들었던 프로젝트를 아마존에 배포할 시간이다. https://extsdd.tistory.com/113 [Spring/eGov ] #8 이클립스에서 마리아DB 데이터 조회하기 / MyBatis / 컨트롤러 Controller / 서비스 / DAO / http..

extsdd.tistory.com

  자 저번시간까지 했던걸 보면, 만들었던 스프링 프로젝트가 AWS EC2 인스턴스에 올라갔다. 이후 페이지를 요청했지만, 원격 서버에 마리아 DB만 설치해놓고 DB에 테이블과 데이터를 생성해놓지 않았기 때문에 오류를 뱉어냈다. 오늘은 HeidiSql을 이용해 원격 DB에 데이터를 넣어보자!

 

1. HeidiSql로 원격 DB 접속

 

https://extsdd.tistory.com/117

 

[아마존 AWS EC2] 마리아 DB 원격접속 설정하기 / HeidiSQL 원격 접속 / plink.exe / SSH 연결 / 인스턴스

과거 포스팅을 보면 EC2 인스턴스를 생성할때 3306포트에 대한 방화벽 설정은 다 해줬음으로 바로 연결을 시도해보자. 1. HeidiSql 을 이용한 원격 접속 HeidiSql을 실행하고 11시방향에 있는 새 연결 아

extsdd.tistory.com

  AWS 원격 서버에 있는 DB에 붙는법은 여기 포스팅에 써놨다. 위 포스팅을 참조해 HeidiSql로 본인 EC2 마리아DB에 접근해보자!

 

 

  다른점이 있다면 접속 계정을 Root계정으로 접근하도록 하자!

 

 

  접속 성공! AWS에 있는 본인 EC2 인스턴스에 설치한 마리아 DB에 접속하면 처음에 저렇게 빈깡통으로 되어있을 것이다. 이제 본격적으로 데이터들을 만들어보자.

2. 데이터베이스 생성

 

  일단 우리가 쓸 DB통부터 만들어야한다.

CREATE DATABASE `cp_service_db` /*!40100 COLLATE 'utf8_general_ci' */

 

  위 코드를 실행해주자.

 

 

  자 데이터베이스를 생성할 세션을 클릭하자, 3번 박스처럼. 이후 쿼리창으로가 위 명령어를 실행해주자. 따옴표 사이에 본인이 생성하려는 데이터베이스의 명칭을 입력하면 된다.

 

  명령어를 복붙하고 F9를 누르면 해당 쿼리가 실행된다. 그 결과로 2번 박스에 실행 결과가 나온다. 그럼 왼쪽 목록에 바로 생기진 않을텐데 새로고침을 해줘야한다. 본인이 눌렀던 세션을 다시 누르고 새로고침인 F5를 눌러보자. 그럼 방그 만든 테이블을 볼 수 있다(4).

 

2. 테이블 생성

 

 

 

  이번 프로젝트간 만들었던 테이블은 저 두개다. 바뀐점이 있다면 저 오른쪽 테이블의 이름이 REQ_MST에서 REQ_LOG로 바뀐 것 밖에 없다. 왜냐면 마스터성 정보가아니고 로그성 정보이기 때문이다. 저번에 테이블 생성했던 쿼리를 가지고와보자!

 

PRD_MST

 

CREATE TABLE `prd_mst` (
	`SEQ_NO` INT NOT NULL AUTO_INCREMENT COMMENT '고유 번호',
	`URL_STR` VARCHAR(300) NOT NULL COMMENT '목적지 URL',
	`DISC_STR` VARCHAR(50) NULL DEFAULT NULL COMMENT '목적지 설명',
	`USE_YN` VARCHAR(2) NOT NULL COMMENT '사용 유무',
	PRIMARY KEY (`SEQ_NO`)
)
COLLATE='utf8_general_ci'
;

 

  자 PRD_MST 테이블 생성 쿼리다. 저번에 넣었던 쿼리하고 동일하다.

 

 

  보자. 먼전 테이블을 생성할 데이터베이스를 클릭하고(1) 쿼리창에 위 테이블 생성쿼리를 입력한다(2) F9를 해당 쿼리가 실행되는데 3번박스에서 실행 결과를 확인한다. 생성결과는 밑에 REQ_LOG테이블을 생성하고 한꺼번에 확인하자

REQ_LOG

 

CREATE TABLE `req_log` (
	`SEQ_NO` INT NOT NULL COMMENT '고유 번호',
	`REQ_DATE` DATETIME NOT NULL COMMENT '날짜'
)
COLLATE='utf8_general_ci'
;

  위랑 똑같다. 그냥 쿼리 복붙..

 

 

  복붙하고 F9를 누르면 실행된다.

테이블 생성 확인

 

 

 

 

  내가 만든 데이터베이스 옆의 화살표를 눌러서 평쳐보자. 그럼 방금 만든 테이블들이 있다. 우리가 로컬에서 테스트 했던 데이터들을 넣어주자!

 

3. 테스트 데이터 삽입

 

INSERT INTO prd_mst (URL_STR, DISC_STR, USE_YN) VALUES
('www.naver.com','네이버','Y'),
('www.daum.net','다음','Y'),
('www.google.com','구글','Y'),
('www.youtube.com','유튜브','Y');
																			
SELECT * FROM PRD_MST

 

  위 쿼리를 돌리면 된다.

 

 

 

  과정은 똑같다. 2번 박스에 쿼리넣고 F9 돌리면끝. 3번 박스를 확인해서 조회 결과를 확인하자 ㅎㅎ

 

 

4. AWS EC2 서비스 결과 확인.

 

http://자기AWS아이피:8080/CP_service-1.0.0/reqUrl.do?reqParam=3

 

 

  위 주소를 복붙하고 "자기AWS아이피" 에 본인 EC2 아이피를 넣고 돌리면 저번엔 데이터가 없어서 에러가 났겠지만, 이번에는 데이터가 있기때문에 구글을 호출할 것이다.

 

#마리아DB #MariaDB #AWS #EC2 #원격 #접속 #HeidiSQL #데이터삽입 #테이블생성 #DB생성 #루트계정

 

 

반응형
반응형

  자 여태까지 만들었던 프로젝트를 아마존에 배포할 시간이다.

https://extsdd.tistory.com/113

 

[Spring/eGov ] #8 이클립스에서 마리아DB 데이터 조회하기 / MyBatis / 컨트롤러 Controller / 서비스 / DAO /

https://extsdd.tistory.com/112 [Spring/eGov ] #7 스프링, 전자정부프레임워크 샘플 예제- 마이바티스(MyBatis)로 마리아 DB 연동하기 / https://extsdd.tistory.com/102 [Spring/eGov ] #6 웹 서비스 만들기 2..

extsdd.tistory.com

  여기까지 못따라온 사람은 위 글까지 마치고 오면 될 것 같다.

 

메이븐 프로젝트 / Maven

 

 

  자 지금까지 정자정부프레임워크(스프링)으로 간단한 서비스를 만들었고, 그걸 내 서버에서 돌려봤다. 서버에서 돌리기위해 이클립스상에서 Run을 누르면 JDK환경에서 실행할 수 있는 최소 실행파일만 생성되어 로컬 톰캣에 올라가는 것이지만. 이제 정식으로 내 서비스를 실제 서버에 올리려면 그 서버가 받아 들일 수 있게 만들어야한다.

 

  이게 바로 패키징 과정이라고 하며 Build라고도 부른다. 갤럭시폰을 만들기위해 삼성전자에서 액정 따로 사고, 메인보드사고, 저장장치사고 전선으로 대충 이어서 전원들어오고 작동시켜보면서 테스트는 해보자. 실제로 이런식으로 고객에게 팔지는 않는다. 그걸 다 다듬어서 플라스틱 외관에 담아 우리가 아는 핸드폰의 모양으로 만들어 고객에게 판다. 이거랑 똑같은거다. 소프트웨어도 실제로 완성을 하면 Build 과정을 통해 이걸 다른 JAVA환경에서 실행할 수 있게 만들어 줘야 하는 것이다.

 

 

 

 

 

  메이븐, 많이 들어봤을 것이다. 보통 라이브러리 관리할 메이븐 dependency를 이용해 간단하게 추가하니까 말이다. 맞다 보통 알고있다시피 메이븐이 간단하게 라이브러리 주소만 디펜던시로 걸어주면 알아서 그 라이브러리의 최신본을 따오는 기능을 수행한다. 하지만 더 중요한 기능이 있다.

 

  바로 이 프로젝트를 패키징하여 빌드하고 이 산출물을 통해 배포할 수 있는 배포 툴인건다. 메이븐 프로젝트라는 단어도 들어봤을 것이다. 혹시 그래들이라고도 들어봤나..!? 보통 메이븐과 그래들을 쌍쌍바처럼 같이 다니는걸 들어봤을텐데 이게 다 최종 산출물을 만들어주는 프레임워크의 이름인거다. 자. 결론만 말하자면 이 메이븐이라는 친구가 우리가 EC2서버에서 우리 프로젝트를 돌릴 수있도록 완성품을 만들어주는 역할이라고 생각하면 된다.

 

1. Maven Clean

 

 

 

  자 일단 처음부터 깔끔하게 시작하기 위해 Maven Clean과정을 통해 깔끔하게 없애주자. 본인 프로젝트 오른쪽마우스(1)를 누른뒤 Run As를 누르고(2) Maven clean을 눌러주자(3)

 

 

  여기서 오류나는 사람은 없을꺼고, 보통 다 빌드 성공이 뜰 것이다.

2. Maven Test

 

  자 이제 메이븐을 밀어줬으니 빌드 할 준비가 되었는지 확인하기 위해서 Maven Test를 진행해주자.

 

 

  위 설명대로 이번엔 Maven test를 눌러보자!

 

 

  짜잔~ 빌드 성공

TroubleShooting

 

 

 

  혹시나 저런식으로 JRE, JDK에 관련된 오류가 나타나면 아래 포스팅을 참조해 해결하고오자!

https://extsdd.tistory.com/122

 

[Spring/eGov] 메이븐 빌드 실패 / Failed to execute goal / Perhaps you are running on a JRE rather than a JDK

자 메이븐 빌드를 했는데 위처럼 JRE대신 JDK를 써보라는 오류가 발생했다. 원인은 간단하다. JRE로 빌드를 못한다는거다. JDK로 경로를 다시 잡아주면 된다. 1. Installed JREs 재설정 이클립스 상단 윈�

extsdd.tistory.com

  나도 저 오류가 나타났어 잠시 헤멨었다 ㅎㅎ

 

3. Maven Install

 

  자 다시 본론으로 와서, 이제 진짜 Maven 배포파일을 만들어보자!

 

 

  과정은 똑같고 빌드할 프로젝트를 눌러 Maven Install 버튼을 눌러주자..!

 

 

  그럼 글자들이 쭈루룩 지나가면서 4초만에 완성이 됐다! Build SUCESS!

4. 배포파일 확인

 

 

 

  빌드후 달라진 점이라면 target 폴더에 .war 파일이 생성됐다..! 이게 배포파일이고 이걸 톰캣 폴더에 갔다놓고 재부팅하면! 내가만든 서비스가 시작된다!

 

  저 배포파일의 위치를 잠깐 알아둬야하는데

 

 

  해당 .war 파일을 오른쪽마우스 클릭후 Properties를 눌러주자.

 

 

  저기 로케이션에 나온 경로를 복사해두던지 아님 어디 메모장 같은데 메모를 해놓는다.

5. FileZilla SFTP를 이용한 배포

 

  배포방법에는 수많은 종류가 있다. GIT으로 EC2 인스턴스에 소스를 받아서 Maven Wrapper로 그 자리에서 빌드하는 방법이 있고, 비슷하게 그래들로 하는 방법도 있고, 젠킨스 같은 툴을써서 배포를 더 쉽게하는 방법이 있지만, 나는 소스 수정이 많지 않아 가장 직관적인 방법은 FTP로 직접 배포파일을 쏘기로 했다. ㅎㅎ..

 

https://extsdd.tistory.com/121?category=853192

 

[아마존 AWS EC2] EC2 서버 FileZilla로 FTP 접속하기 / Root 계정 접속 / 파일질라 / SFTP

이제 우리가 만든 EC2 인스턴스에 FTP 접속을 시도해보자. FTP 접속 툴로는 대학교때무터 자주 썼던 파일질라로 정했다. 먼저 알아두자면 FTP란 FIle Transafer Protocol 로써 장비간 파일을 주고받는 프로

extsdd.tistory.com

  자 일단 선행되어야 할 것이 있다면, FIleZilla를 다운 및 설치 후, Root 계정으로 EC2 인스턴스에 붙는 과정을 진행해야한다. 위 포스팅을 보면 나와있으니 따라하고 오면 된다.

 

 

  자 시작해보자.

  1. 먼저 화면의 좌측이 내 실제 컴퓨터다. 저기 1번 박스에 위에서 아까 복붙해놓은 .war파일의 경로를 쳐서 찾아가던지, 디렉토리를 눌러서 찾아가던지 알아서 완성된 .war파일이 있는곳까지 가라.

 

  2. 우측화면은 EC2 인스턴스다. 본인들이 설치한 톰캣폴더의 webapps폴더까지 들어가라, 내 포스팅을 보고한 사람들은 아마 폴더를 server에 만들었을 것이다.

 

  3. 우리 컴퓨터에 있는 .war파일을 오른쪽마우스 눌러주자.

  4. 당연히 업로드 버튼을 눌러준다.

 

 

  오오... 퍼센트가 다 차서 전송이 완료되면 우측 EC2 인스턴스에서도 우리가 만든 .war파일을 볼 수 있다.

6. 톰캣 재부팅

 

  이제 톰캣 재부팅을 하면 저 .war파일을 서버가 돌리기 시작한다.

 

 

  우리 서버로 돌아가서 일단 SU 권한으로 접속후 본인들이 만들어놓은 아파치 톰캣폴더의 bin 폴더까지 이동해보자.

cd /server/apache-tomcat-8.5.55/bin

 

  나 같은 경우에는 위 주소에 톰캣을 설치해놨기 때문에 내 포스팅을 보고 온사람들은 위 명령어를 입력하면 톰캣의 bin까지 올 수 있다.

 

 

 

./shutdown.sh

 

  bin폴더까지 왔으면 위 명령어를 이용해 서버를 꺼주자.

 

 

 

./startup.sh

 

  다시 톰캣 시작명령어를 치고 톰캣이 부팅되면, 아까 넣어놨던 .war파일을 인식해 돌리게 된다.

 

7. 결과 확인

 

http://본인AWS아이피주소:8080/CP_service-1.0.0/reqUrl.do?reqParam=3

 

  위 경로를 찍어보자, 주소중 "본인AWS아이피주소" 이칸에 본인 EC2 IP주소를 넣으면 된다. 그리고 :8080은 톰캣 포트고 뒤에 CP_service-1.0.0 이란게 붙었는데 이건 우리가 만든 배포파일인 .war의 이름이기도 하다. 이거 안보이게 하는법은 나중에하도록하고 우리가 전에 만들었던 변수에따라 url을 리다이렉션 해주는 서비스가 정상적으로 작동하는지 확인하자!

 

 

  아마 위와같은 창이 뜨면 성공인거다!. 엥? 에러가발생했는데 왜 성공이야? 할 수 있지만, 이 에러는 우리가 EC2 서버에 설치한 마리아DB에 테이블이랑 데이터를 넣지 않아서 그런거다. 일단 저 화면이 나오는거 자체만으로 WAS는 문제 없이 돌고있다는 것이다. 왜냐하면 내가 만든 reqUrl.do라는 요청에 어떻게든 반응은 나타내고 있으니까! 오늘은 여기까지하고, 다음에 한번 마리아 DB에 값을 넣고, 테스트해보도록 하자.

 

#AWS #EC2 #스프링 #전자정부프레임워크 #메이븐 #프로젝트 #배포 #파일질라 #Maven #Filezilla #Build #install #빌드 #인스톨

 

반응형

+ Recent posts