본문 바로가기
내마음대로만들어보자/나만의 웹 서비스 만들기

나만의 웹 서비스만들기 배포하기(AWS)

by 소농민! 2021. 6. 6.
728x90

터미널을 종료하더라도 계속해서 서버에 올라가 있을 수 있도록 작업을 해놨다! 

 

http://data05.shop

 

K-Koding 맛집 리스트도 | Main

로그인 후 나만아는 우리동네 맛집을 추천해주세요! 로그인하지 않아도 맛집검색은 가능합니다! 아이디는 2-10자의 영문과 숫자와 일부 특수문자(._-)만 입력 가능합니다. 영문과 숫자 조합의 8-20

data05.shop

 

로컬환경에서 사이트를 만들고 테스트를 해본 이후 웹 서버에 배포를 했다!

 

1. AWS를 통해 ec2 서버를 구매 

    ※ 무료 서버를 구매했으며, Keypair 는 필수로 저장해야한다.

2. AWS ec2 접속하기

    - 접근권한 변경하기 : sudo chmod 400 Keypair 끌어다놓기

    - SSH 접속하기 : ssh -i Keypair 끌어다 놓기 ubuntu@ip주소

       ※ Key fingerprint 관련 메세지가 나올경우 Yes 입력

 

* 간단한 리눅스 명령어 알아두기

리눅스 명령어

3. AWS 포트열어주기 

    AWS EC2에서도 자체적으로 포트를 열고/닫을 수 있게 관리를 하고 있으므로, 인바운드 요청 포트를 열어줘야한다.

    (보안그룹 내 인바운드 규칙 수정)

     * 이번 사이트만들기 작업 시, 필요한 세가지 포트를 추가해줘야한다.

        - 80포트 : HTTP접속을 위한 기본포트

        - 5000포트 : flask 기본포트

        - 27017 포트 : 외부에서 몽고DB를 접속하기 위한 포트

 

4. AWS EC2세팅하기 (.feat 파일질라)

   

 

※ EC2 한번에 세팅하기     한번에 내 서버에서 세팅할 수 있도록 강의에서 해당파일을 제공 해주었다. "initial_ec2.sh"

    (1) sudo chmod 755 initial_ec2.sh

    (2) ./initial_ec2.sh

    위 명령어를 순서대로 터미널을 입력하면 간단하게 세팅완료

 

※ 한걸음 더 - 서버환경 세팅 

   - 한국시간으로 세팅 

      sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

   - 파이썬 (python3 → python)

      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

   - pip (pip설치, pip3 → pip)

     # pip3 설치
        sudo apt-get update
        sudo apt-get install -y python3-pip

     # pip3 대신 pip 라고 입력하기 위한 명령어
        sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

   

 5. mongoDB 설치

    몽고 DB 공식자료 : https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

 

Install MongoDB Community Edition on Ubuntu — MongoDB Manual

Install MongoDB > Install MongoDB Community Edition > Install MongoDB Community Edition on Linux MongoDB AtlasMongoDB Atlas is a hosted MongoDB service option in the cloud which requires no installation overhead and offers a free tier to get started.Use th

docs.mongodb.com

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt sudo apt-get update
sudo apt-get install -y mongodb-org

 

→ 몽고DB설치코드 이며, 한줄씩 입력하면 설치 완료

 

6. mongoDB 실행

    sudo service mongod start

    → 아무것도 안나와야 정상적으로 실행이 된것이며, 다른어떠한 문구가 나올경우 오타 확인 필요

 

7. mongoDB 접속 계정 생성

    mongo 

    몽고라고 입력하면 좌측 ">" 표시가 나오면 성공적으로 접속한거라고 보면된다.

 

# admin 계정바꾸기

    use admin;

# 계정생성하기
    db.createUser({user: "test", pwd: "test", roles:["root"]});

 

위와같은 화면으로 나오면은 정상적으로 접속계정 생성이 완료된것입니다. 

이후 몽고DB 재시작하면 끝!

 

8. mongoDB 외부에서 열어주기

    우선 관리자 권한으로 실행 

    sudo vi /etc/mongod.conf

# sudo : 관리자 권한으로 다음을 실행

# 관리자 권한으로 /etc 폴더 아래 mongod.conf 파일을 vim으로 켜달라는 의미

관리자 권한으로 실행이 되었을때, 위와같이 수정을 해주면된다!

# 입력모드 전환 : a 

# 내용저장하고 에디터 종료하기 : esc 누르고 :wq 입력 

# 재시작 : sudo service mongod restart

 

※ 해당 내용을 수정할떄, "#"은 주석표시가 되어있는것이므로 내용만 수정하지말고 주석표시도 없애줘야한다. 

 

9. mongoDB에 접속하기 위한 robo3T 접속하기 

* 접속정보 세팅하기 

※ 포트포워딩 ( 80포트 → 5000포트로) 

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

 

10. 파일질라 파일 업로드하기

 

* 업로드 하기 전! app.py 파일의 mongoDB 세팅부분을 바꿔줘야한다. 

   지금까지는 로컬서버에서 테스트를 하기위해 접속 localhost : 27107 만 세팅을 했지만, 이제는 아이디/비밀번호까지 연결해줘야한다.

   client = MongoClient('mongodb://test:test@localhost', 27017)

 

이제는 필요한 패키지 설치가 모두 완료된다면

python app.py 로 실행이 가능하다!

 

* 포트포워딩은 위에서 포트번호 없이도 접속가능하도록 세팅을 해두었기때문에 지금부터는 http://ip주소 만으로도 접속이 가능하다.

11. nohup 설정하기 (SSH접속을 끊어도 계속 돌아가게 하기)

 

     - 실행 : nohup python app.py &

     - 종료 

        ps -ef | grep 'app.py'   : 명령어로 미리 PID값을 본다(프로세스번호)

        kill -9 "pid값" : "" 없이 pid값만 입력해서 죽여주면 끝

 

12. 도메인구매하기 (가비아)

https://my.gabia.com/service/

 

웹을 넘어 클라우드로. 가비아

그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브

www.gabia.com

- 회원가입 / 로그인

- DNS관리 툴 

- 도메인 연결

- DNS 설정

- 호스트 이름에 @ , IP주소에 IP주소를 입력

* URL, IP주소를 매핑하는데 10분정도 소요 될 수 있음!

 

이렇게 해서 내가 만든 사이트를 배포하고 접속 URL까지 변경을 했다.

이렇게 한번쯤 웹사이트가 어떻게 동작하고 배포되는지 쭉 경험해볼 수 있는 좋은 기회였던 것 같다!