목록AWS/EC2 (11)
군침이 싹 도는 코딩

깃허브 액션을 이용해서 소스코드를 자동으로 ec2 서버에 적용하도록했을때 서버에는 반영이 되있지만 브라우저를 열어보면 적용이 되지 않았다 이는 스트림릿을 사용할때 소스코드를 바꾸고 저장을 해도 rerun을 누르지 않으면 페이지가 바뀌지않는다 이것과같은 문제점인데 이를 수정하기 위해서는 한가지 작업을 해줘야한다 # 먼저 서버를 내려야한다 ps -ef |grep streamlit 을 타이핑해 서버에서 돌리고 있는 포트를 확인한다 내릴 서버의 포트와 프로세스 아이디를 확인하고 kill 프로세스아이디를 입력해 서버를 내린다 그 후 서버를 재시작할때 nohup streamlit run app.py --server.port 할당할포트번호 --server.runOnSave true & 를 타이핑해서 실행한다. 이렇게..

본래의 개발 방식은 깃허브에서 레파지토리를 생성하고 로컬 컴퓨터로 클론 해온 뒤 그것을 작업하고 테스트를 거친다음 문제가 없으면 다시 푸쉬해서 깃허브로 보내고 ec2 서버에 접속하기 위해서 SSH를 이용하여 ec2 서버에 접속하여 아나콘다 프롬프트나 깃과 같이 필요한 프로그램을 다운로드하고 깃허브에 있는것을 클론해서 ec2 서버에 적용한다. 이 후 유지보수를 할때마다 로컬 컴퓨터에서 깃허브로 푸쉬하고 SSH를 사용해서 ec2서버에 접속해 ec2 서버에서 git pull을 이용해 당겨와야한다 이러한 과정이 너무 번거롭기 때문에 해당 방법을 자동화하는 방법이 있다 그것이 깃허브의 액션기능이다 깃허브의 액션 기능을 사용하면 로컬 컴퓨터에서 푸쉬를 눌러주기만 하면 ec2서버에 자동으로 적용되게 해준다 # put..

동영상등과 같이 파일의 용량이 큰 것은 깃허브에 올리지 못한다 깃허브는 용량 제한이 있기때문이다 따라서 소스코드가 아닌 용량이 큰 파일은 FTP로 ec2 서버에 바로 보낼수 있다 그중에 파일질라를 이용해 보자 # 파일질라를 실행시켜 사이트 관리자를 누른다 # 사이트 관리자를 누르고 새사이트를 눌러 사이트를 생성한다 그 후 ec2 서버의 호스트를 입력하고 로그온 유형을 키 파일로 했으니 키 파일을로 세팅하고 사용자 아이디에 ec2-user를 입력 그 후 키파일을 넣어주고 확인을 누르면 된다 # 연결을 눌러보면 오른쪽에 서버 상태가 잘 뜨는것을 확인할수있다

ec2 서버에서 실행한다음 아이피나 dls 주소를쳐서 들어가보면 해당 사진처럼 사이트에 연결할 수 없다고 뜬다 이유는 AWS 방화벽에 해당포트가 뚫려있지 않기때문이다 인스턴스에 들어가서 해당 서버를 클릭하면 보안그룹이라는것이 있다 이것을 누른다 인바운드 규칙 편집을 클릭한다 규칙 추가를 눌러 해당 포트를 써주고 anywhere 로 세팅 해준다음 규칙 저장을 누른다 다시 접속해보면 이제 잘 접속이 된다

다음 예제를 통해 수정한 소스코드를 ec2에 반영하는법을 알아보자 # 홈 화면에 환영합니다를 지워주세요 1. 로컬 컴퓨터에서 수정한다 # 비주얼 스튜디오 코드에서 위와 같이 코드를 삭제한다 그 후 커밋 해준 뒤 푸쉬한다 2. putty 를 실행시켜 데이터를 풀한다 putty 를 실행시켜 git pull 이라고만 써주면 간단하게 데이터를 받아올수 있다 이렇게하면 수정이 완료된다 # 서버를 열어 확인해보니 수정된 결과값이 잘 반영 되었다

putty 에서 스트림릿을 돌리고 있을때 putty를 끄면 돌리고 있던 스트림릿이 위 처럼 접속이 끊어진다 이유는 백그라운드 실행을 하고 있지 않아서이다 백그라운드 실행을 하려면 nohup streamlit run 파일이름 & 이렇게 써주면 된다 이것을 종료하고 싶다면 ps -ef | grep streamlit 을 쳐서 프로세스 아이디를 확인한다 # 위처럼 보이는 4자리 숫자가 프로세스 아이디이다 그 후 kill 프로세스 아이디를 써 서버를 종료할수 있다

먼저 AWS 인스턴스에 들어가서 보안 탭에 보안그룹을누른다 그 후 인바인드 규칙 편집을 누른다 규칙을 추가해주고 포트범위에 8501을 써주고 소스정보에 anywhere 를 해준 뒤 추가해준다 자신의 깃허브에 클론할 레파지토리로 가서 주소를 복사한다 그 뒤 putty 에 git clone 레파지토리 주소를 치면 된다