도움말

bbgo 문서 및 가이드 뒤로가기
uWSGI + Nginx 로 AWS에 bbgo 배포하기
genonfire
68 0
2018-12-30 14:23:40
https://gencode.me/26/
125.178.*.*
2019-01-06 22:48:52

요즘은 AWS를 많이 이용하기 때문에 AWS EC2 Ubuntu 18.04 에 uWSGI + Nginx 를 이용해 bbgo를 배포하는 가이드를 작성했습니다. (참고문서)

bbgo + apache 사이트 구축하기

Setting up Django and your web server with uWSGI and nginx

How To Serve Django Applications with uWSGI and Nginx on Ubuntu 16.04


bbgo 환경설정


bbgo 시작하기 문서를 참고해 bbgo 가 돌아갈 수 있는 기본 환경을 생성합니다. ./runlocalserver.sh 로 꼭 브라우저에서 정상동작하는 걸 확인하고 uWSGI + Nginx 설정을 시작하는 게 좋습니다.


환경설정시 python2.7 과 python3.6 또 그에 맞는 pip 와 pip3 를 혼용할 경우 uwsgi 실행 시 ImportError: No module named site 와 같은 에러가 발생할 수 있습니다. 한 가지만 쭉 사용하시기 바랍니다. bbgo는 두 버전을 모두 지원하고 아래 예에서는 python3.6 과 pip3를 사용하는 걸 전제합니다.


AWS 의 경우 80 및 8000 포트가 막혀 있기 때문에 아래처럼 네트워크 및 보안 - 보안 그룹에서 해당 포트를 열어둬야 접속이 가능합니다.




Nginx 설치


1. Nginx 설치

$ sudo apt-get install nginx
$ sudo systemctl start nginx

브라우저로 접속해 Welcome to nginx! 페이지가 나오는지 확인


2. Nginx 설정

https://github.com/nginx/nginx/blob/master/conf/uwsgi_params 다운로드 및 적절한 위치에 저장 (여기선 ~/bbgo/bbgo/uwsgi_params 로 저장함)

- /etc/nginx/sites-available/default 가 80포트를 사용중이므로 default에 작성하던가 default를 없애거나 혹은 다른 포트를 사용해도 무방합니다.

- Nginx 용 bbgo 설정 파일 생성

$ sudo vi /etc/nginx/sites-available/bbgo

- 내용 작성

server {
    listen 80;
    server_name <IP 주소 혹은 도메인>;

    location /static {
        alias /home/ubuntu/bbgo/static;
    }

    location / {
        include /home/ubuntu/bbgo/bbgo/uwsgi_params;
        uwsgi_pass unix:/run/uwsgi/bbgo.sock;
    }
}

- 심볼릭 링크 생성

$ sudo ln -s /etc/sites-availabe/bbgo /etc/sites-enabled/

- 문법 체크

$ sudo nginx -t

- 설정 파일 반영되도록 Nginx 재시작

$ sudo systemctl restart nginx

- 참고: Nginx 상태 보기

$ sudo systemctl status nginx

- 참고: Nginx 에러 로그 보기

$ sudo tail -F /var/log/nginx/error.log


virtualenv 환경에서 uWSGI 설치


시스템 와이드로 설정하기 전에 개발환경에서 한 스텝 씩 진행하는 것이 뭔가 안될 때 설정을 고쳐가며 테스트하기 좋습니다. 숙련자는 이 단계를 건너 뛰고 바로 시스템 와이드로 설정해도 무방합니다.


1. uWSGI 설치

(bbgo) ~/bbgo$ pip3 install uwsgi


2. uWSGI 로 bbgo 실행

- home 은 현재 사용중인 virtualenv package가 깔린 위치

- chdir 은 bbgo가 설치된 경로 (현재 이 경로에 있으면 안 써도 됨) 

(bbgo) ~/bbgo$ uwsgi --http :8000 --home /home/ubuntu/.pyenv/versions/bbgo --chdir /home/ubuntu/bbgo -w bbgo.wsgi

- 브라우저로 <IP 주소>:8000 접속되는지 확인

- Nginx 가 잡고 있지 않은 포트로 테스트해야 합니다.


3. uWSGI + Nginx 로 bbgo 실행

- connect() 관련 에러 날 경우 뒤에 --chmod-socket=666 붙여 봄

(bbgo) ~/bbgo$ uwsgi --socket bbgo.sock --module bbgo.wsgi


4. uWSGI .ini 파일로 bbgo 실행

- bbgo용 uWSGI .ini 생성

(bbgo) ~/bbgo$ sudo vi /etc/uwsgi/sites/bbgo.ini

- 내용 작성

[uwsgi]

chdir = /home/ubuntu/bbgo
module = bbgo.wsgi
home = /home/ubuntu/.pyenv/versions/bbgo

master = true
processes = 1
socket = /run/uwsgi/bbgo.sock
chmod-socket = 666
vaccum = true

- 실행

(bbgo) ~/bbgo$ uwsgi --http :8000 --ini /etc/uwsgi/sites/bbgo.ini

- 브라우저로 <IP 주소>:8000 접속되는지 확인

-참고: uwsgi 에러 확인

$ sudo journalctl -u uwsgi


시스템 와이드로 uWSGI 설치 및 서비스 등록


1. virtualenv 나가기

(bbgo) ~/bbgo$ pyenv deactivate


2. uWSGI 설치

~/bbgo$ sudo pip3 install uwsgi


3. uWSGI .ini 파일로 bbgo 실행

- virtualenv 환경에서 이미 만들었으면 생략

- bbgo용 uWSGI .ini 생성

$ sudo vi /etc/uwsgi/sites/bbgo.ini

- 내용 작성

[uwsgi]

chdir = /home/ubuntu/bbgo
module = bbgo.wsgi
home = /home/ubuntu/.pyenv/versions/bbgo

master = true
processes = 1
socket = /run/uwsgi/bbgo.sock
chmod-socket = 666
vaccum = true

- 실행

$ uwsgi --http :8000 --ini /etc/uwsgi/sites/bbgo.ini

- 브라우저로 <IP 주소>:8000 접속되는지 확인


4. Emperor 서비스 등록

- 설정 파일 생성

$ sudo vi /etc/systemd/system/uwsgi.service

- 내용 작성

[Unit]
Description=uWSGI Emperor service

[Service]
ExecStartPre=/bin/bash -c 'mkdir -p /run/uwsgi; chown ubuntu:ubuntu /run/uwsgi'
ExecStart=/home/ubuntu/.pyenv/versions/bbgo/bin/uwsgi -i /etc/uwsgi/sites/bbgo.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
StandardError=syslog

[Install]
WantedBy=multi-user.target

- 서비스 재시작

$ sudo systemctl daemon-reload
$ sudo systemctl restart uwsgi

- 브라우저로 접속해 bbgo 동작 확인

비추 공유
댓글 [ 0 ]