-> sudo nano /etc/systemd/system/myenv.service
안에 내용을 작성한다.
[Unit]
Description=Gunicorn instance to serve my sample flask app
After=network.target
[Service]
// user = ubuntu 이 부분은 ubuntu로 했다면 필수
User=ubuntu
Group=www-data
// WorkingDirectory server.py 가 있는 폴더로 지정
WorkingDirectory=/home/ubuntu
// Environment = envs/["myenv"]/bin" 이 부분이 중요
Environment="PATH=/home/ubuntu/miniconda3/envs/myenv/bin"
// 이 부분은 사실 잘 모르지만 myenv.sock가 생성이 되는데 그 설정을 적용 시킨다 라는 의미 인 듯?
ExecStart=/home/ubuntu/miniconda3/envs/myenv/bin/gunicorn --workers 3 --bind unix:myenv.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
저장 하고 나온다.
-> sudo systemctl start myenv
-> sudo systemctl enable myenv
를 차례대로 입력하면
Created symlink /etc/systemd/system/multi- user.target.wants/myenv.service → /etc/systemd/system/myenv.service.
라고 명령어가 나올 것 이다.
위의 명령어가 나오지 않았다면 처음부터 다시 해야 할 듯...
-> sudo systemctl status myenv
상태를 확인 해보면
Active: active (running)
이런식으로 running 이라는 메세지가 확인이 되어야 한다.
WorkingDirectory=/home/ubuntu 이 부분에 myenv.sock가 생성이 된다.
http://localhost:8000/ 다시 확인 해보기
다음 Ngnix 설정하기
-> sudo apt-get install nginx
sudo usermod ubuntu -g www-data
sudo nano /etc/nginx/sites-available/myenv
server {
// 80포트는 http의 기본 포트 즉:8000 과같은 포트번호는 나오지 않는다
listen 80;
server_name <"ip번호 ex) 11.111.111">;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/myenv.sock;
}
}
저장하기
-> sudo ln -s /etc/nginx/sites-available/myenv /etc/nginx/sites-enabled
-> sudo nginx -t
-> sudo systemctl restart nginx
그리고 위에서 입력한 ip번호로 들어가면 끝!
sudo nano /etc/nginx/sites-enabled/pic2vox 에서
모르고 주석처리를 한다는게 // 를 넣어버려서 계속 에러가 발생했었다...
이렇게 설치를 하고 html로 테스트를 하면 화면은 뜨는걸 확인이 가능 했다.
하지만 이후 html을 수정하고 코드를 이것저것 수정을 했는데 최신화가 안되는 문제 발생!
그래서 찾은 방법
-> sudo nano /etc/systemd/system/gunicorn.service
[Unit]
Description=Gunicorn service
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu
Environment="PATH=/home/ubuntu/miniconda3/envs/myenv/bin"
ExecStart=/home/ubuntu/miniconda3/envs/myenv/bin/gunicorn --workers 3 --bind unix:myenv.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
저장 하고 나온다.
-> sudo systemctl daemon-reload
-> sudo systemctl enable gunicorn
-> sudo systemctl start gunicorn
-> sudo systemctl status gunicorn
출처
1번글 : https://faun.pub/deploy-a-flask-ml-model-on-ngnix-using-wfastcgi-gunicorn-gateway-ubuntu-18-04-part-i-8c621beda19d
2번 글 : https://faun.pub/deploy-a-flask-ml-model-on-ngnix-using-wfastcgi-gunicorn-gateway-ubuntu-18-04-part-ii-2a3adbf25f57