본문 바로가기
lean/life

오늘도 대패.

by mattew4483 2020. 11. 8.
728x90
반응형

약 2달 동안 열심히 개발해온 행요.

생각했던 모든 것을 구현해내지는 못했지만... 일단 어찌어찌 배포를 해보기로 한다.

지금까지 배포 전적은 2전 2패.

이전 멋사 세션 때는 중간에 설명을 놓쳐 아예 따라가지도 못했고,

1학기 토이 프로젝트 때는 프로젝트 폴더와 프로젝트 이름을 아예 잘 못 적어 실패하고 말았다.

대망의 세 번째 싸움. 아침부터 학교 근처 카페에 다 같이 모인다.


일단 저번에 가입한 aws를 이용해 서버를 열어준다.

다른 건 크게 건드릴 필요가 없지만, 다른 이용자들도 서버에 접근할 수 있도록 HTTP를 추가해 위치 무관으로 설정한다.

이후 새 키 페어를 다운로드한 후 인스턴스 시작을 누르면 성공!

 

 

다음은 PuTTY.

우선 puTTYgen을 켜고 load로 아까 다운로드했던 키 페어를 올려준다.

이후 비밀번호를 설정하고 Save private key를 통해 ppk파일을 생성(파일명. ppk로 저장해야 한다)하면 끝.

 

잘 생성된 게 확인되면(모자 쓴 컴퓨터 모양 페이지다), 과감히 화면을 끄고 PuTTY로 접속!

 

완료됐으면 이번에는 puTTY에 들어간다.

aws에서 받은 퍼블릭 IPv4 주소를 Host Name에, 아까 생성한 ppk파일을 SSH-Auth에 넣어주면 된다.

저장 후 open하면 (드디어) ubuntu가 켜진다!

참고로 open을 하면, 굉장히 오류 같은 창이 하나 뜬다.

굉장히 성공적인 것이니 놀라지 말고 yes를 누르자.

 

ubuntu로 로그인, 아까 ppk를 생성할 때 정했던 비밀번호를 입력하면... 드디어 출발이다.

또 참고. 간단히 말하자면 켜자마자 ubuntu - 설정한 비밀번호순으로 입력하면 되는 것이다.

그런데 간혹 비밀번호를 입력하는데 너무 오래 걸리면 접속이 안 되니, 호다닥 치기로 하자.

제일 처음 할 일은? 당연히 git clone.

그 후 곧바로

sudo apt-get update

sudo apt-get install build-essential

sudo apt-get install python3

sudo apt-get install python3-pip

sudo pip3 install --upgrade pip

를 신나게 쳐주면 된다. 왜? → 현재 abuntu속 요놈들은 아무것도 없는 새 컴퓨터 상태. 그러니 파이썬을 깔아주는 거다.

 

다음으로는 cd -- 을 통해 manage.py가 있는 곳으로 찾아간다.

sudo apt-get install virtualenv -- 요 녀석은 가상 환경을 설치하는데 필요한 virtualenv 설치

virtualenv -p python3 venv  -- 요 녀석으로 가상 환경을 설치하고,

source venv/bin/activate  -- 요 녀석으로는 가상 환경을 실행시킨 후,

pip install -r requirements.txt  -- 필요한 녀석들을 몽땅 설치!

 

여기서 makemigrations 및 migrate를 해야 하는데...

보안을 위해. config_secret파일을 이용하고 있다면?

mkdir 폴더명 으로 폴더를 생성하고, touch 파일명 을 통해 파일을 생성한 후,

sudo vi 파일명 을 통해 직접 해당 내용을 써줘야 한다.

 

이까지 잘했다면... 물 한 잔 마시고 숨 한 번 돌리고 오자.


이제 남은 일은 요 녀석들과 nginx를 연결시켜주는 것.

우선 pip install uwsgi로 설치하고, vi uwsgi.ini로 실행시키자.

그럼 보기만 해도 머리가 멍해지는 화면이 나온다.

이곳을 잘 채우는 것이 관건인데...

[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

이렇게 쓰면 된다! 눈이 지끈거린다면 지극히 정상이다.

저 {프로젝트 폴더}의 위치가 중요한데, 이는 manage.py가 있는 곳에서 pwd를 실행하면 알 수 있다.

또한 주의사항!

저기 있는 {프로젝트 내 파일 이름}은 url과 settings 친구들이 있는 곳이란 걸 명심 또 명심하자. 엄청 헷갈린다.

 

잘 썼다는 확신이 든다면, 아마 90% 정도 착각일 가능성이 높다. 이런.

하지만 그럼에도 불구하고 정말 정말 잘 쓴 것 같다면?

uwsgi --ini uwsgi.ini 요 녀석으로 위 변경 사항들을 업데이트해준다. 분홍색 파일이 생겼다면 성공!

 

다음은

sudo apt-get install nginx 서버를 연결해주는 실체인 nginx를 설치.

sudo vi /etc/nginx/nginx.conf 요놈을 실행한 후, http 부분을 수정해 django와 연결.

sudo vi /etc/nginx/sites-enabled/default 를 실행한 후, location과 static&media 루트 경로 설정.

 

이렇게 간단하게 쓰니 정말로 쉬워 보이지만, 한 글자 한 글자 심혈을 기울이는 게 좋다. 안 그러면 무조건 틀린다.


기나긴 여정이 얼추 마무리되었다.

토씨 하나 틀리지 않고, 제대로 잘 적었다며 뿌듯해하겠지만...

앞서 말한 것처럼 틀렸을 가능성이 95% 정도.

하지만 그럼에도 그럼에도 불구하고 자신 있다면?

python manage.py collectstatic 를 통해 static 경로들을 한 곳에 모으고,

uwsgi --ini uwsgi.ini 를 통해 다시 한번 변경사항들을 저장한 후,

sudo service nginx reload 를 실행한다. 따란.

 

그러면 아무 일도 안 생긴다!!!

 

대신 제일 처음 aws에서 받았던 퍼블릭 IPv4를 주소창에 입력한다. 그리고 엔터.

기대하던 모습이 나왔을까??

728x90
반응형

'lean > life' 카테고리의 다른 글

대패 한 판 더.  (0) 2020.11.14
한 문장으로.  (0) 2020.11.11
주소로 위도경도 찾기  (0) 2020.11.06
행복드림카드 요기있네?  (0) 2020.11.05
앉아가자버스  (0) 2020.11.03