관리 메뉴

웹개발자의 기지개

[Flask] Flask 서비스 백그라운드에서 실행시키기 본문

python/Flask

[Flask] Flask 서비스 백그라운드에서 실행시키기

웹개발자 워니 2025. 7. 24. 13:43

 

[ 챗봇 예제 소스 app.py  ]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from flask import Flask, request, jsonify
 
app = Flask(__name__)
 
@app.route('/')
def index():
    return 'Hello! This is your chatbot.'
 
@app.route('/chat', methods=['POST'])
def chat():
    user_input = request.json.get('message''')
    # 간단한 챗봇 응답 예시
    response = f"당신이 말한 '{user_input}'에 대해 생각해볼게요!"
    return jsonify({'response': response})
 
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
cs

 

 

[Flask 서비스 가동]

flask run --host=0.0.0.0 --port=5000

 

[Flask 서버 백그라운드에서 계속 실행]

 

flask run은 개발용이므로 운영용으로 **gunicorn**이나 systemd 서비스 사용할 것.

 

(1) gunicorn 사용

 

pip install gunicorn

# 아래 명령으로 실행 (백그라운드 & 포트 지정)
gunicorn -w 2 -b 0.0.0.0:5000 app:app --daemon

 

 

(2)  systemd 서비스로 등록 (서버 재부팅 후에도 자동 실행)

 

sudo nano /etc/systemd/system/chatbot.service

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=GB-Chatbot
After=network.target
 
[Service]
User=root
WorkingDirectory=/ai_study/chatbot
Environment="PATH=/ai_study/chatbot/bin"
ExecStart=/ai_study/chatbot/bin/python3.11 app.py
Restart=always
 
[Install]
WantedBy=multi-user.target
cs

 

 

User= 와 WorkingDirectory= 등 경로는 실제 환경에 맞게 수정

 

# systemd 서비스 활성화
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable chatbot.service
sudo systemctl start chatbot.service

# 상태 확인
sudo systemctl status chatbot.service


# 방화벽 5000포트 풀기
sudo ufw allow 5000

 

sudo ufw allow 8501/tcp

 

 

# systemd 서비스 종료

sudo systemctl stop chatbot.service

 

 

# systemd 서비스 재시작

sudo systemctl restart chatbot.service

 

 

 

# systemd 서비스 자동 시작 비활성화 / 재활성화

 

자동 시작 비활성화 (부팅 시 실행 안 함)

sudo systemctl disable chatbot.service

 

 

자동 시작 다시 활성화

sudo systemctl enable chatbot.service

 

 

Comments