[5주차_웹개발] 개발일지 (서버에 올리기)

Coastby·2022년 6월 28일
0
  • 웹 서비스 런칭
  • AWS 서버 구매하기
  • 서버 세팅하기
  • flask 서버 실행해보기
  • AWS에서 포트 열어주기
  • 쇼핑몰 업로드해보기
  • 포트포워딩
  • nohub 설정하기
  • 도메인 구입하기
  • og 태그

👉 flask 서버를 실행해보기

  • 기본적인 flask 서버 파일을 만들어서 올린다.
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return 'This is Home!'

if __name__ == '__main__':  
   app.run('0.0.0.0', port=5000, debug=True)
  • filezilla로 업로드 한 후에 원격으로 실행시켜본다
# 실행
python app.py
결과는 에러가 난다. 
flask 패키지가 없다는 에러이므로 파이참에서 패키지 설치를 한 것처럼 패키지를 설치해줘야 한다.

○ pip로 패키지 설치하기

# 간단! 설치
pip install flask

# 설치 후 다시 실행 (flask가 실행되면 끄기 전까지 다른 명령어 실행되지 않음)
python app.py

# 끄기
[crtl] + [c]
  • 서버 실행이 되면 크롬에서 접속을 해 본다.
크롬 브라우저 창에 아래와 같이 입력합니다.

http://[내 EC2 IP]:5000/

# result
작동하지 않는다...
AWS에서 포트를 열어줘야지 들어갈 수 있다.

👉 AWS에서 포트 열어주기

AWS EC2에서 자체적으로 포트를 열고/닫을 수 있다.
AWS EC2 Security Group에서 인바운드 요청 포트를 열어준다.

  • EC2 관리 콘솔에서 보안그룹 (Security Group)으로 들어간다.
  • 인바운드 규칙 편집 (Edit inbound rules) 클릭
  • 3가지 포트 추가
    • 80포트 : HTTP 접속을 위한 기본 포트
    • 5000포트 : flask 기본포트
    • 27017포트 : 외부에서 mongoDB 접속을 하기위한 포트

포트 추가 시, type, port range, source 설정 후 저장

  • type : port 22는 ssh
  • port range : port 번호 입력
  • source : anywhere-IPv4
  • 다시 접속
http://[내 EC2 IP]:5000/

👉 쇼핑몰 업로드해보기

⭐️ AWS의 mongoDB에 아이디와 비밀번호를 추가했으니, 우리의 pymongo에도 아이디와 비밀번호를 입력해야 올바르게 DB에 접근할 수 있다.

app.py를 열고 가운데 한 줄을 바꾸어준다.

# 원래 코드
# client = MongoClient('localhost', 27017)

# 넣는 코드
client = MongoClient('mongodb://test:test@localhost', 27017)

아이디/비밀번호를 바꾸고 싶으면 initial_ec2.sh에서 바꾸면 된다.

  • filezilla에서 드래그/드롭으로 EC2 인스턴스의 home/ubuntu/sparta 폴더에 업로드한다.
  • 실행해보기
# home 디렉토리로 이동
cd ~

# 해당 폴더로 이동해서 아래 코드를 실행합니다.
python app.py
  • 패키지를 설치하지 않아서 에러가 난다
# 설치하기
pip install pymongo
  • 실행해보기
python app.py
  • 접속해보기
http://내AWS아이피:5000/

👉 포트포워딩

지금은 5000포트에서 웹 서비스가 실행되고 있다. 따라서 매번 :5000 이라고 뒤에 붙여줘야 한다.
http 요청에서는 80포트가 기본이기 때문에 굳이 :80을 붙이지 않아도 자동으로 연결이 된다.
포트 번호를 입력하지 않아도 자동으로 접속되기 위해서 80포트로 오는 요청을 5000포트로 전달하게 하는 포트 포워딩 (port forwarding) 을 사용한다. (5000으로 들어오면 flask를 만남)
리눅스에서 기본으로 제공해주는 포트포워딩을 사용하며, 코드는 앞선 기본 세팅에 들어가있다.

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

👉 nohub 설정하기

○ SSH 접속을 끊어도 서버가 계속 돌게하기

  • 현재는 터미널을 종료하면 (= ssh 접속을 끊으면) 프로세스가 종료되면서 서버가 돌아가지 않는다. 서비스 배포를 위해서는 원격접속을 끊어도 서버는 계속 동작이 되어야한다.
  • 서버가 계속 돌아가게 하기
# 아래의 명령어로 실행하면 된다
nohup python app.py &
  • 서버 종료하기 - 강제 종료하는 법
# 아래 명령어로 미리 pid 값(프로세스 번호)을 본다
ps -ef | grep 'app.py'

# 아래 명령어로 특정 프로세스를 죽인다
kill -9 [pid값]
# 리눅스 명령어
ps -ef : 컴퓨터에 돌아가고 있는 모든 프로세스를 다 보여줌
| grep : 그 중에 `''`안에 들어가는 애들만 보여주라
  • 다시켜기
nohup python app.py &

👉 도메인 구입하기

도메인을 구입한다는 것은 네임서버를 운영해주는 업체에 IP와 도메인 매칭 유지비를 내는 것이다. 한국 또는 글로벌 업체 어디든 상관 없다.

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

[도메인 연결] - [DNS 설정] - 호스트이름에 @, IP 주소에 AWS의 IP주소 입력
→ 웹브라우저에서 도메인 주소로 접근해보기

👉 og 태그

카톡/페이스북/슬랙에 공유했을 때 이쁘게 나오도록 꾸며주기

# 먼저, static폴더에 이미지 넣어주기

<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="{{ url_for('static', filename='ogimage.png') }}" />




스파르타 웹개발 종합반 끝!!!

profile
훈이야 화이팅

0개의 댓글