Programmers/데브코스 인공지능

[프로그래머스 스쿨 AI] Weak 5 Django + uwsgi+ nginx + aws 완전 삭제후 따라해보기 드뎌! 배포 됫다

1. 일단 aws 설정은 전에 완전 삭제후 aws 만들기 따라하면 된다

1. aws 서버를 만들어 놓는다 

vscode 로 ssh 되게하면 더좋음 잘보임

2. aws 에 파이썬 및 다른것들 버전 업데이트 및 맞추기

1. 일단 램 크기 만들어 놓는게 좋긴하다 (동영상에서는 늦게 업해버림)

free -h 에 램이 1g라 힘듬 이거 4기가 만들어줘야함

 

#터미널
$ sudo fallocate -l 4G /swapfile

$ sudo chmod 600 /swapfile 

$ sudo mkswap /swapfile

$ sudo swapon /swapfile

$ free -h

대충 이제 램이 된다

 

2. 처음에는 version을 봐서 확인해야한다

#터미널
$ python --version
$ pip --version


#젠장 버전 다 이상하게 되있음 쓰래기 같은 aws 같으 웁!! 웁!!~!~~!

$ sudo dpkg --configure -a (선택)
aws 기본 다운된거 컴파일링 하는거 오래걸림 참고 이거키고 1시간

 

3. 파이썬 버전 맞추기

터미널
$ ls /usr/bin/ |grep python

# 이걸로 파이썬3 있나 확인부터

$ sudo update-alternatives --config python 

# 이걸로 터미널 파이썬 첫을때 실행되는거 확인(아마 아묵더솓 안되있을거임) 에러뜸


$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 

# 파이썬2 는 1이라는 숫자표 주기 

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

#파이썬3 은 2라는 숫자표 주기

$ sudo update-alternatives --config python

# 이제 2라는 숫자표 가진 python 만 쓰게 하기

$ python --version 
# 이제 3뜰거임

 4. pip 버전 맞추기

# 파이썬 3 되니깐 

$ wget https://bootstrap.pypa.io/get-pip.py

# pip 수동으로 다운받음

$ sudo -H python3 get-pip.py

# 이걸 3으로 풀어써서 pip를 파이썬 3 로 재설정

$ pip --version

#이제 파이썬3 뜰거임

5. 우분투도 업해주자

# 우분투 업그래이드

$ sudo apt-get update

 동영상에선 이제 메모리 올림 (이전에 했다면 스킵)

6. 파이썬 pip 설치하자

# python-pip 설치

$ sudo apt-get install python3-pip

#pip3 확인해보자

$ sudo -H pip3 install --upgrade pip

#아마 최신일거임

2. 이제 본격적 web 실행 준비

1. django설치

#폴더 ubuntu 유저로 이동바람

(아마 난 desktop 만들어서좀 파일 관리하기 편하게 만들었음 선택임) 
$ mkdir Desktop (선택임)
$ cd Desktop (선택임)

# virualenv 설치

$ sudo apt-get install virualenv

# 설치 실행

$ sudo -H pip install virtualenv
 
$ virtualenv -p python3 venv

# 그다음 실행 이건내가 터미널에 실행

$source venv/bin/activate

# 됫다 가상환경


pip install Django

# 데장고 깔고

django-admin.py startproject mydjweb

# mydjweb으로 프로젝트만듬 


# 그리고 파일에 settings.py 에 
'''
ALLOWED_HOSTS(이거찾으셈) = ['*']
'''
# *로바꿔서 오는 접속방법 다되게한다



$ python3 manage.py runserver 0.0.0.0:8000

#서버 켜서 확인해보자
#이거 기본 ip로는 안들어가지고 포트따라가면 될것이다

#안돼면 재부팅 이거 aws 설정 다시봐야함
'''
######## 안될경우 ########################
aws에 이 서버에 되있는 사용자 구릅을 들어가서 http 80(기본www에서 들어가는 포트임)을 
넣어주고 tcp :8000 포트를 접글할수 있게 만들어준다

'''

 

2. uwsgi 설치 

$ pip install uwsgi 

# 드디어 uwsgi 이제 설치해준다

#이 그 뭐냐 mydjweb에서 파일 하나 만들어준다 manage.py랑 같이 있게

$ vi uwsgi.ini

#솨랄라 뭔가 나옴
## i를 눌러서 입력함
##여기안에 잘 맞쳐서 넣어준다
'''
[uwsgi]
chdir=/home/ubuntu/{프로젝트 폴더}
module={프로젝트 내 파일이름}.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/{프로젝트 폴더}/django.log
home=/home/ubuntu/{프로젝트 폴더}/venv
virtualenv=/home/ubuntu/{프로젝트 폴더}/venv
socket=/home/ubuntu/{프로젝트 폴더}/uwsgi.sock
chmod-socket=666
'''
내가 쓴거
'''
[uwsgi]
chdir=/home/ubuntu/Desktop/mydjweb
module=mydjweb.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/Desktop/mydjweb/django.log
home=/home/ubuntu/Desktop/venv
virtualenv=/home/ubuntu/Desktop/venv
socket=/home/ubuntu/Desktop/mydjweb/uwsgi.sock
chmod-socket=666

'''

#이제 ini 적용

$ uwsgi --ini uwsgi.ini


#됫으!!!! 이제

3. nginx 설치

1. 설치하고 conf 찾아 수정하기

$ sudo apt-get install nginx

#이제 설치 ㅅㄱ


$ sudo vi /etc/nginx/nginx.conf

#이 파일 수정하자(설치하면 생김)

'''
안에 http 있는데 거기에 적어줘야함
http(이거 찾으셈) {
        upstream django {
                server unix:/home/ubuntu/Desktop/mydjweb/uwsgi.sock;
        }
}
'''
# 이제 파일 수정하고 나오면

2. 또 sites default 인가 수정하기

$sudo vi /etc/nginx/sites-enabled/default

## 여기안에서 location 찾으셈

'''
location(이거찾으셈) / {

	include /etc/nginx/uwsgi_params;
	uwsgi_pass django; 
    
}
#이제 서버 연동될거임


# static 파일 연동해주기(이건 밑에 만드셈)
# 그전에 파일 만들어야하는건 잊말것!!
location /static/ {
	alias /home/ubuntu/Desktop/mydjweb/mydjweb/static/;
}

# 이것도 같음 내꺼 이미지 넣은 폴더 주소에 추가해주는거임
location /media/ {
	alias /home/ubuntu/Desktop/mydjweb/mydjweb/media/;
}

'''

3. aws ip에 django web 실행하기

1. 이 한줄을 위해서 위에 엄청난 짓을 했다

$ sudo service nginx restart

 이젠 서버를 키지 않아도 ip만 적어주면 된다 (포트도 안적어도 된다)

확인해보자

aws 에 적혀있는 ip를 복사 chrome에 넣어줘보자 

드뎌 !!! 됫다

3. 동영상 촬영한거

 

 

 

 

4. 추가 재부팅시 자동 웹서버 실행

ubuntu@ip-172-31-42-203:~$ sudo pip3 install uwsgi
ubuntu@ip-172-31-42-203:~$ sudo mkdir /etc/uwsgi
ubuntu@ip-172-31-42-203:~$ sudo mkdir /etc/uwsgi/vassals
ubuntu@ip-172-31-42-203:~$ sudo ln -s /home/ubuntu/Desktop/mydjweb/uwsgi.ini /etc/uwsgi/vassals/
ubuntu@ip-172-31-42-203:~$ sudo uwsgi --emperor /etc/uwsgi/vassals/ --uid www-data --gid www-data

 

/etc/rc.local 에 설정 추가해줘야됨

아마 뭐뭐 있을텐데 이거 추가해줘야됨

/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals/ --uid www-data --gid www-data --daemonize /var/log/uwsgi-emperor.log
ubuntu@ip-172-31-42-203:~$ sudo vi /etc/rc.local

i저기 밑에 한줄추가함

#!/bin/sh
  
# DLAMI Configurations
/opt/aws/dlami/bin/init

# DLAMI Conda Configurations
/opt/aws/dlami/bin/init_conda

/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals/ --uid www-data --gid www-data --daemonize /var/log/uwsgi-emperor.log
exit 0
~                                                                                                                                       
~                 

 

======================경고 실험중 안됨 ==================================

aws 추가 설정

# 터미널

sudo chmod +x /etc/rc.local

sudo vi /lib/systemd/system/rc-local.service

파일에 이렇게 내용을 추가한다

 

[Service]
.....................

[Install] 
WantedBy=multi-user.target
​​

 

# 터미널

sudo systemctl enable rc-local.service 
sudo systemctl start rc-local.service

sudo dpkg --configure -a