spacesheep 배포 기록

1. ec2 초기 세팅

  • 가상환경 생성
sudo yum install virtualenv
virtualenv -p python myenv
source myenv/bin/activate

2. daphne, gunicorn 설치 및 서비스 등록

  • 서비스 실행/종료/삭제/재시작
	- sudo service nginx start # 시작
    - sudo service nginx enable # 서비스로 등록(처음 시작할 때만 해줌)
	- sudo service nginx stop # 정지
	- sudo service nginx restart # 재시작
    - sudo service nginx disable # 서비스 삭제
 
 # 실행중인 서비스 목록 보려면
 sudo systemctl -l
 # 서비스 파일 경로 
 /etc/systemd/system
 # 서비스 파일에 변경사항 반영하려면 
 sudo systemctl daemon-reload

3. nginx 서비스 등록 및 ssl 발급

yum install python-certbot-nginx 

4. nginx로 daphne(ws), gunicorn(http) 연동

upstream daphne {
    server 127.0.0.1:8001;
}
upstream gunicorn {
    server 127.0.0.1:8000;
}
server {
    server_name  도메인 이름;
    listen 443 ssl; 
    location / {
        proxy_pass http://gunicorn;
        include uwsgi_params;
        proxy_buffer_size 128k;
        proxy_buffers 4 256k;
        proxy_busy_buffers_size 256k;
    }
    location /static/ {
        root /home/ec2-user/{정적 파일 경로};
    }
    location /home/ask {
        proxy_pass http://daphne;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $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-Host $server_name;
    }
    ssl_certificate 
    (ssl 발급받으면 이 밑으로 자동으로 셋팅이 생성된다.)

5. elasticache 연결

AWS에서 elasticache Redis 생성 후
클러스터 주소를 settings에 로컬 주소 대신 넣으면 된다.
기타 설정 과정이 간편해서 ec2에 redis 설치하는 대신 사용했다.

기타 에러 발생 시 유용한 메모

  • 다른 서비스가 점유중인 포트 확인 방법
netstat -anp | grep {port}

# kill
sudo fuser -k {port}/tcp 
  • 특정 서비스에 대한 로그만 검색
journalctl -u {service name}

도움받은 사이트 :

좋은 웹페이지 즐겨찾기