항해 사전강의 마지막주 수업에서는 웹사이트를 배포하는 방법을 배웠다.
웹사이트를 배포하기 위해서는 일련의 과정이 필요학고 간단히 그림으로 그려보았다.
가장먼저 나의 파일이 완성되면, 나의 웹사이트를 24시간 동안 공장처럼 돌릴 컴퓨터 즉 수뇌부가 필요하다. 24hours 컴퓨터는 내 방구석에서는 impossible하니 아마존에서 빌리게된다.
그것이 바로 aws이다. 그럼 이제 새로생긴 컴퓨터(aws)에 내가 만든 작업물을 올려야 하는데 이때 file zilla를 통해 작업물을 등록한다.
하지만 file zilla와 aws는 서로 대화가 가능하지 않기 때문에 이둘을 연결해주는 징검다리 역할의 git bash가 필요하다. git bash가 이 둘 사이를 연결해주면 이제 나의 작업물은 전세게 어디에서든 볼수 있게되는데 단, ip주소를 쳐야 가능하다. 그래서 마지막으로 gabia에서 도메인을 구매하여 ip주소를 연결하면 우리가 흔히 아는 www.naver.com 이런형식의 웹사이트를 겟하게 된다.
AWS는 클라우드 환경의 가상 서버이다. 먼저 AWS에서 회원가입을 한뒤
인스턴스- 인스턴스 시작을 하면 인스턴스를 생성할 수 있게된다.
인스턴스 생성화면에서 우분투 서버를 선택한뒤 새 키페어 생성을 하고
인스턴스 유형은 프리티어사용가능인 t2.micro를 설정해준다. 설정을 마치면 인틴스턴스 시작을 눌러준다.
몇분뒤 새로고침을 하면 나의 인스턴스가 생성된 걸 확인할 수 있다.
프로그램을 깔고 나서 프로그램에 들어가면 상단에 노란색으로 색칠한 버튼이 있다. 이쪽으로 들어가 서버와 연결을 먼저 해줄 것이다.
프로토콜을 선택한뒤, 호스트는 우리가 만든 aws인스턴스의 주소를 넣는다. 사용자는 ubuntu로 넣은지 키파일을 연결하고 확인을 누른다.
키파일을 찾아보기하였을때 안보일수 있다. 그땐 확장자에 pem선택해주기!
서버와의 연결이 확인되면 보기와 같이 나의 작업물을 오른쪽으로 옮겨주면 전송완료!
이때 폴더를 하나 만들어주고, 그안에 app.py, static폴터, templates폴더만 올려주면 된다.
서버가 24시간 잘 돌아갈수 있게 관리해주기 위해서는 git bash가 필요하다.
git bash를 사용하기 위해서는 몇가지 명령어를 알아야 한다.
서버연결 : ssh -i (팸넣기) ubuntu@(ip주소) 폴더만들기: mkdir 폴더명 폴더보기 : ls 폴더 들어가기: cd 폴더나가기: cd .. python3 -> python: sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 pip3 -> pip (a.k.a패키지마법사): sudo apt-get update sudo apt-get install -y python3-pip sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 port forwarding 로컬호스트5000을 떼는 명령어: sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000 서버 켜두기 : nohup 강제 종료하기: ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill
우선 깃을 통해 서버에 원격접속을 하는것이다.
ssh -i 띄고
팸넣고 (''있어야함)
띄고 ubuntu@
ip주소 넣으면
원격접속 완료
그후
파일질라에서 폴더를 만들고 파일을 넣어준뒤
다시 깃에서
파이썬 실행을 위한 플라스크를 깔려고 하는데
계속 에러가 뜬다.
E: Unable to locate package python-pip
pip: command not found
python3-pip' has no installation candidate
stackoverflow에서 확인 결과
업데이트 에러였고,
sudo apt-get install python3-pip
업데이트를 실행하니 되었다.
추가로
ModuleNotFoundError: No module named 'pymongo'
이런 에러가 나올때마다 파일을 깔아주면 된다.
그렇게 한 뒤에
python3 app.py 하면파일이 실행이된다.
그리고 ip주소로 서버에 접속하면
실행이 안된다.
그 이유는50000 포트를 안열어줘서 그렇다.
보안-보안그룹-인바운드 규칙편집
사진과 같이 규칙편집을 해주면 된다.
우리 할것은 서버를 연결 한뒤 nohup으로 서버를 켜두는 것이다.
nohup python3 app.py &
이렇게 해주면 된다.
nohup을 끄는법은
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kil
gabia는 웹사이트와 도메인을 연결해주는 전화번호부와 같은곳이다.
이곳에서 도메인을 구입한뒤
DNS관리에 들어가 보기와 같이 값/위치에 aws에서 받은 ip 주소를 넣으면 나의 ip와 도메인 연결 끝.
나의 도메인만 입력하면 어디에서든 웹사이트로 접근이 가능하다.
대표적인 리눅스 명령어
ls: 내 위치의 모든 파일을 보여준다.
pwd: 내 위치(폴더의 경로)를 알려준다.
mkdir: 내 위치 아래에 폴더를 하나 만든다.
cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.
cd .. : 나를 상위 폴더로 이동시킨다.
cp -r [복사할 것][붙여넣기 할 것]: 복사 붙여넣기
rm -rf [지울 것]: 지우기
sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)