현제의 현재이야기
EC2 배포 정리 본문
ec2 설정
- 리전을 서울로
- Ubuntu Server 18.04 LTS 운영체제 선택
- 키페어 생성 - pem 파일로 만든다.
- 다운로드 받은 폴더로 터미널 열고 소유주 설정
$ chmod 400 ~/.ssh/deploy_test.pem
- 키페어 경로적고 해당 폴더 터미널에서 원격접속 (ec2에 연결 누르면 나옴)
$ ssh -i [키 페어 경로] [유저 이름]@[퍼블릭 DNS 주소]
- 접속후 아래 명령어 실행
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install python3-pip
- 깃 클론을 위한 /srv/ 폴더 소유권 변경
$ sudo chown -R ubuntu:ubuntu /srv/
- srv 이동 후 깃 클론
$ cd /srv
$ git clone [레포지토리 주소]
uWSGI 연결
- 가상환경
$ sudo apt-get install python3-venv
$ cd ~
$ python3 -m venv myvenv
- pip 설치
$ cd /srv/django-deploy-test/
$ pip3 install -r requirements.txt
- 런서버
$ python3 manage.py runserver 0:8080
- 보안 그룹에 인바운드룰 추가
- settings.py 수정
ALLOWED_HOSTS = [
".ap-northeast-2.compute.amazonaws.com"
]
- uwsgi 패기지 설치
$ source ~/myvenv/bin/activate
$ pip3 install uwsgi
- (로컬컴퓨터 )manage.py 있는 폴더로 가서 .config 폴더 생성, 그 안에 uwsgi 폴더 생성
$ ls
db.sqlite3 manage.py requirements.txt
main mysite
$ mkdir .config
$ cd .config
$ mkdir uwsgi
- uwsgi 폴더에 mysite.ini 생성
[uwsgi]
chdir = /srv/django-deploy-test/ # 프로젝트 폴더 경로
module = mysite.wsgi:application # mysite에 .wsgi 파일 이름 적기
home = /home/ubuntu/myvenv/ # 가상환경 경로
uid = ubuntu
gid = ubuntu
http = :8080
enable-threads = true
master = true
vacuum = true
pidfile = /tmp/mysite.pid
logto = /var/log/uwsgi/mysite/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
- (서버컴퓨터) 깃풀 받고, logoto 폴더 생성
$ sudo mkdir -p /var/log/uwsgi/mysite
- 소유주 변경
$ sudo chown -R ubuntu:ubuntu /var/log/uwsgi/mysite/
- 서버 실행
$ sudo /home/ubuntu/myvenv/bin/uwsgi -i /srv/django-deploy-test/.config/uwsgi/mysite.ini
- 로ㄱ보기
sudo cat /var/log/uwsgi/mysite/2020-03-15.log
nginx 연결
$ sudo apt-get install nginx
- nginx 유저 선언
$ sudo vi /etc/nginx/nginx.conf
user ubuntu; # user을 ubuntu로 변경
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
.... 중략
esc + :wq로 탈출
- (로컬컴퓨터) .config 폴더 안의 nginx 폴더 생성, 그 안에 mysite.conf 파일 생성
server {
listen 80;
server_name *.compute.amazonaws.com;
charset utf-8;
client_max_body_size 128M;
location / {
uwsgi_pass unix:///tmp/mysite.sock;
include uwsgi_params;
}
}
- 포트 80 변경으로 인한 mysite.ini 수정
[uwsgi]
chdir = /srv/django-deploy-test/
module = mysite.wsgi:application
home = /home/ubuntu/myvenv/
uid = ubuntu
gid = ubuntu
# 밑 세줄 변경
socket = /tmp/mysite.sock
chmod-socket = 666
chown-socket = ubuntu:ubuntu
enable-threads = true
master = true
vacuum = true
pidfile = /tmp/mysite.pid
logto = /var/log/uwsgi/mysite/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
- uswgi 항시 켜두기 위한 .config/uwsgi/ 에 uwsgi.service 파일 생성(경로 수정만 하면 됨)
[Unit]
Description=uWSGI service
After=syslog.target
[Service]
ExecStart=/home/ubuntu/myvenv/bin/uwsgi -i /srv/django-deploy-test/.config/uwsgi/mysite.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
- 깃푸시 이후, 서버컴퓨터 깃 풀, uwsgi.service를 데몬에 등록하기 위해 /etc/systemd/system/ 에 링크를 걸기
$ sudo ln -f /srv/django-deploy-test/.config/uwsgi/uwsgi.service /etc/systemd/system/uwsgi.service
- 데몬 새로고침
$ sudo systemctl daemon-reload
- uwsgi 서비스를 위한 restart
$ sudo systemctl enable uwsgi
$ sudo systemctl restart uwsgi
- django 내 nginx 파일을 nginx 어플리케이션에 등록하기 위해 등록 경로로 파일 복사
$ sudo cp -f /srv/django-deploy-test/.config/nginx/mysite.conf /etc/nginx/sites-available/mysite.conf
- 등록 경로에 복사된 설정 파일을 sites-enables에도 링크
$ sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
- sites-enables 폴더 안의 default 파일 삭제
$ sudo rm /etc/nginx/sites-enabled/default
- 데몬 새로고침, 다시실행
$ sudo systemctl daemon-reload
$ sudo systemctl restart uwsgi nginx
- 인바인드룰에 80포트 추가
- 포트 없이 접속 시도
static 파일 설정
- settings.py에 static 경로 추가
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
- 깃 푸시이후 서버컴퓨터 풀, 그 이후 명령어, static 폴더 생김
$ python3 manage.py collectstatic
130 static files copied to '/srv/django-deploy-test/static'.
$ ls
db.sqlite3 main manage.py mysite requirements.txt static
- (로컬컴퓨터) mysite.conf 수정
server {
listen 80;
server_name *.compute.amazonaws.com;
charset utf-8;
client_max_body_size 128M;
location / {
uwsgi_pass unix:///tmp/mysite.sock;
include uwsgi_params;
}
location /static/ {
alias /srv/django-deploy-test/static/;
}
}
- 서버컴퓨터 풀 이후 nginx에 등록 이후 재부팅
$ sudo cp -f /srv/django-deploy-test/.config/nginx/mysite.conf /etc/nginx/sites-available/mysite.conf
$ sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
$ sudo systemctl daemon-reload
$ sudo systemctl restart uwsgi nginx
'etc' 카테고리의 다른 글
[GoLang] 잊지 말아야 할 것들 (0) | 2023.08.21 |
---|---|
SQL 서브쿼리 연습 (0) | 2023.04.25 |
SQL 정리 (0) | 2023.04.23 |
AWS 1주차 (0) | 2023.01.12 |
새 토이 프로젝트 구상 (0) | 2022.08.15 |
Comments