더보기
어제까지 배운것을 기반으로 플라스크를 백앤드
엔진엑스를 프론트엔드로 CI/CD를 진행해보려 한다.
그러면 일단 플라스크와 엔진엑스를 연동하는 작업을 처음해보고 나서 CI/CD를 진행하면 될거같다.
플라스크는 장고보다 가벼워서 MSA에 좋다고 하는데 그건 뭐 개발하는 팀에서 쓰고싶은 것을 쓰면되는데
장고는 배워봤고 이번시간에는 플라스크를 이용하려고한다.
프로젝트 실행해서
pip install Flask
플라스크 설치후
파이썬파일에 기본실행코드를 넣어보자
from flask import Flask
app = Flask(__name__)
#장고기준으로 함수
@app.route("/")
def main():
return "Hello World!"
#장고기준으로 url
@app.route("/meet")
def meet():
result = {"code":200,"message":"hello Flask"} #json 형태로 반환되는형태
return result
#장고기준으로 서버실행해주는애
if __name__ == '__main__':
app.run(host='0.0.0.0',port=80)
백앤드 프론트 구분할떄
사용자들이 ui입력하고 백엔드에서 처리하고 리턴될떄 json형태로 주고받는다.
백엔드를 따로 구성하고 연결하면 strict-origin-when-cross-origin에러가 난다
출발지와 도착지가 달라서 그렇다플라스크에서 CROS를 설치하여 셋팅해주자
#커맨드에서 pip install flask_cors 설치
from flask_cors import CORS
app = Flask(__name__)
CORS(app, resources={r"/*":{"origins":"*"}})
파이썬과 엔진엑스를 연결하기위해 uWSGI를 연결하는 프로그램을 설치해야한다.
vm환경에서 테스트를 먼저해보자
#centos8
#nginx 설치
yum update -y
yum install nginx -y
systemctl restart nginx
systemctl stop firewalld
#파이썬 설치
yum install python3-pip python3-devel gcc -y
alias python=python3
alias pip=pip3
pip install flask flask_cors
#사용자생성 및 nginx에게 user 그룹권한 주기
useradd -m user
usermod -a -G user nginx
chmod 750 /home/user
#작업파일 옴기기
vi main.py
#테스트실행(기존80포트 nginx사용중이므로 포트변경하여 실행)
#wsgi.py 생성
from main import app
if __name__ == "__main__":
app.run(host='0.0.0.0')
pip install uwsgi
#테스트
gunicorn --bind 0.0.0.0:8000 wsgi:app
#데몬으로 gunicon 실행하기
vi /etc/systemd/system/backend.service
[Unit]
Description=Gunicorn Service
After=network.target
[Unit]
Description=Gunicorn Service
After=network.target
[Service]
User=user
Group=user
WorkingDirectory=/home/user/
ExecStart=/usr/local/bin/gunicorn --workers 1 --bind unix:backend.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
#저장후
systemctl demon-reload
systemctl restart backend
#nginx 설정
vi /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name IP주소;
location / {
proxy_set_header Host $http_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_pass http://unix:/home/user/backend.sock;
}
}
systemctl restart nginx
참고자료
728x90
반응형