pip freeze > requirements.txt
/
(루트주소)로 들어오면 django로 가게/static/
으로 들어오면 staticfiles 폴더로 가게새로운 탭에서 진행
EC2는 cloud9 생성시 자동생성
0.0.0.0/0
, ::/0
이후 내용은 cloud9 터미널에서 진행합니다.
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
pyenv -v
# 출력 확인 => pyenv 1.2.27-31-ga7f3e3a5
pyenv install 3.8.7
pyenv global 3.7.4
python -V
#=> Python 3.7.4
루트폴더와 프로젝트폴더, 두개의 이름에 주의하며 진행
두 폴더의 이름을 통일하면 조금더 편하게 설정할 수 있음
cd ~
는 홈디렉토리로 이동)cd ~
git clone {project_remote_url}
home/
ubuntu/
{루트폴더}
{프로젝트폴더}
{앱}
manage.py
requirements.txt
편의를 위해 루트폴더와 프로젝트 폴더의 이름을 통일하였습니다.
cd ~/{루트폴더}
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py loaddata {data.json}
collectstatic
static 파일은 기본적으로 django가 직접적으로 관리 x
django 앞에 있는 서버가 그 역할을 하게 됨
그것은 Nginx가 할 수 있도록 static파일을 모으는 작업을 하는 것
[setting.py](http://setting.py)
수정
# settings.py
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
collectstatic
staticfiles란 폴더에 137개의 static파일이 카피됨
python manage.py collectstatic
vim을 사용하여 터미널에서 파일을 수정
sudo apt-get update
sudo apt-get install -y nginx
/
(루트주소)로 들어오면 django로 가게/static/
으로 들어오면 staticfiles 폴더로 가게server_name *.compute.amazonaws.com;
location / {
uwsgi_pass unix:///home/ubuntu/{루트폴더}/tmp/{프로젝트폴더}.sock;
include uwsgi_params;
}
location /static/ {
alias /home/ubuntu/{루트폴더}/staticfiles/;
}
파일수정
c9 환경에서는 root folder에 접근할 수 있는 권한이 없기 때문에
vim을 이용하여 수정을 하는 것
sudo vi /etc/nginx/sites-enabled/default
i
버튼으로 수정모드로 전환esc
로 수정모드 빠져나오기:wq
명령어로 저장 후 종료pip install uwsgi
cd ~/{루트폴더}
mkdir tmp
mkdir -p log/uwsgi
mkdir -p .config/uwsgi/
touch .config/uwsgi/{프로젝트폴더}.ini
uwsgi.ini
수정# {루트폴더}/.config/uwsgi/{프로젝트폴더}.ini
[uwsgi]
chdir = /home/ubuntu/{루트폴더}
module = {프로젝트폴더}.wsgi:application
home = /home/ubuntu/{루트폴더}/{가상환경이름}
uid = ubuntu
gid = ubuntu
socket = /home/ubuntu/{루트폴더}/tmp/{프로젝트폴더}.sock
chmod-socket = 666
chown-socket = ubuntu:ubuntu
enable-threads = true
master = true
vacuum = true
pidfile = /home/ubuntu/{루트폴더}/tmp/{프로젝트폴더}.pid
logto = /home/ubuntu/{루트폴더}/log/uwsgi/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
touch .config/uwsgi/uwsgi.service
.config/uwsgi/uwsgi.service
설정파일 수정[Unit]
Description=uWSGI Service
After=syslog.target
[Service]
User=ubuntu
ExecStart=/home/ubuntu/{루트폴더}/{가상환경이름}/bin/uwsgi -i /home/ubuntu/{루트폴더}/.config/uwsgi/{프로젝트폴더}.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
심볼릭링크 생성
sudo ln -s ~/{루트폴더}/.config/uwsgi/uwsgi.service /etc/systemd/system/uwsgi.service
# daemon reload
sudo systemctl daemon-reload
# uswgi daemon enable and restart
sudo systemctl enable uwsgi
sudo systemctl restart uwsgi.service
# check daemon
sudo systemctl | grep nginx
sudo systemctl | grep uwsgi
# nginx restart
sudo systemctl restart nginx
sudo systemctl restart uwsgi
systemctl status nginx.service
nginx
재시작sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
settings.py
수정nginx
재시작ALLOWED_HOSTS = [
'3.35.230.223'
]
도메인 결제 후 진행
settings.py
수정nginx
재시작ALLOWED_HOSTS = [
'3.35.230.223',
'tsman9404.click'
]
https://letsencrypt.org/ko/getting-started/
certbot 사용을 권장
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx
http://
를 제외하고 입력합니다.)0.0.0.0/0
, ::/0
https://
주소로 요청 후 확인