EC2에 redis-server, nginx, supervisor 설치

환경

  • ubuntu 16.04
  • 설치일 2019년 4월 2일 기준 버전.
  • ec2 python version 2.7.12

초기 설정

EC2를 만들고 apt-get을 업데이트 한다.

sudo apt-get udpate
sudo apt-get upgrade

redis-server 설치

pparedis-server를 등록후 설치 한다.

sudo add-apt-repository ppa:chris-lea/redis-server
sudo apt-get update
sudo apt-get install redis-server
redis-server -v
Redis server v=5.0.4 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=6840e401a1a58e85

버전 v = 5.0.4 이다.

/etc/redis/redis.conf에 설정을 수정 하고 redis-server를 재시작

sudo systemctl restart redis-server.service

자동 재시작

sudo systemctl enable redis-server.service

Synchronizing state of redis-server.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable redis-server
Created symlink from /etc/systemd/system/redis.service to /lib/systemd/system/redis-server.service.

이후 ec2를 재부팅 하고 redis-cliping하면 pong

redis-cli
127.0.0.1:6379> ping
PONG

설치 방법중 제일 간단했따.

nginx 설치

sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx
sudo nginx -v
nginx version: nginx/1.14.2

nginx 설정

/etc/nginx/sites-available
/etc/nginx/sites-enabled

sites-available에 잇는 conf로 여러 가상서버를 만들고 사용하고 싶은 서버를 sites-enabled로 링크를 걸면 된다. 기본은 default 파일로 설정 되어 있다.

확인 및 재시작

  • 위 설정으로 설치시 daemon으로 자동으로 서버 구동시 재시작이 된다.
  • sudo nginx -t로 설정 파일 검사
  • sudo systemctl restart nginxnginx 설정 변경후 재시작.

supervisor 설치

sudo apt-get install supervisor
sudo supervisord -v
3.2.0
sudo touch /etc/supervisor/conf.d/supervisor_nginx.conf
sudo vim /etc/supervisor/conf.d/supervisor_nginx.conf

해당 파일에 데몬을 돌릴 프로그램을 명명 할수도 있다.

[program:uwsgi]
command = uwsgi -i /srv/project/.config/dev/uwsgi.ini

uwsgi.ini

[uwsgi]
chdir = /srv/project/app
module = config.wsgi.dev

socket = /tmp/app.sock

master = true
vacuum = true
logto = /tmp/uwsgi.log
log-reopen = true

아니면 각각의 프로세스를 다른 파일로 만들어서 사용할 수도 있다.

[program:example]
user = root
name = %(program_name)
command = /home/ubuntu/example/gunicorn/start.sh
stdout_logfile = /home/ubuntu/example/logs/gunicorn_supervisor.log
stopsignal=INT
redirect_stderr = true
environment=LANG=en_US.UTF-8, LC_ALL=en_US.UTF-8

start.sh

#!/bin/bash

TARGET_VENV=/home/ubuntu/.pyenv/versions/example
source ${TARGET_VENV}/bin/activate

SOCKFILE=/home/ubuntu/webapp/example/run/example.sock
cd /home/ubuntu/webapp/example/app

exec gunicorn config.wsgi.dev \
  --name=example \
  --timeout=120 \
  --workers=5 \
  --worker-class=gevent \
  --user=root --group=root \
  --bind=unix:${SOCKFILE} \
  --log-level=debug \

참고

redis-server

출처 : 스택오버플로우 출처 : TongChun님 블로그

nginx

출처 : recordingbetter`s devlog

Comments