지극히 개인적인 공부 노트/웹(Web)

[Web] AWS 가상 서버 이용하기(2) - 가상 컴퓨터에서 서버 파일 실행하기

AS J 2021. 7. 2. 04:07

저의 경우에 아주 간단한 개인 프로젝트를 진행하기 위해 AWS를 통해 가상 서버를 만들고 이용해봤고, 아래와 같은 과정을 진행했습니다.

1. AWS 인스턴스 생성(가성 서버 생성과 같은 의미입니다.)
2. 깃 배시(Git bash)를 통해 내 노트북에서 가상 서버 컴퓨터로 접속
3. 파일 질라(File Zilla)로 가상 서버 컴퓨터에 내 프로젝트 파일 복사
4. 가상 컴퓨터에 있는 프로젝트 원격 실행 및 원격 종료

4개의 과정 중 1번, 2번 과정은 아래 링크의 글에 작성했습니다.

https://as-j.tistory.com/44

 

[Web] AWS 가상 서버 이용하기(1) - AWS 인스턴스 생성하기

스타트업이나 개인 프로젝트를 하다 보면 제작한 웹 페이지를 24시간 돌아가는 서버를 통해 모두에게 서비스를 공유할 수 있어야 합니다. 이 글에서는 개인 프로젝트로 원페이지 쇼핑몰 웹 페이

as-j.tistory.com

이 글에서는 이후 과정 3번, 4번에 대해 작성해보겠습니다.

 

 

3. 파일 질라(File Zilla)로 가상 서버 컴퓨터에 내 프로젝트 파일 복사

파일 질라(File Zilla)란 다른 컴퓨터, 서버 등에 원격 접속하여 파일을 이동하거나 복사, 삭제하는 등 관리 기능을 수행할 수 있는 프로그램입니다. 우선 파일 질라가 설치되어있지 않다면, 맨 아래 <참고>의 링크를 통해 설치를 진행하면 됩니다.

1) 설치된 파일 질라를 실행, 왼쪽 위 [사이트 관리자 열기] 아이콘 클릭하면 나오는 사이트 관리자 창의 [New site]를 클릭해서 새로운 사이트를 생성합니다. 저는 'myec2'라는 이름으로 사이트를 생성했으며, 사이트 관리자 창의 오른쪽 부분은 다음과 같이 세팅했습니다.

사이트 관리자 창에서 위와 같이 설정 및 입력할 부분이 있습니다. 프로토콜은 SFTP, 호스트는 AWS에서 생성한 인스턴스의 퍼블릭 IPv4 주소, 포트는 22, 로그온 유형은 '키 파일', 사용자는 ubuntu, 키 파일 위치는 [찾아보기]를 통해 입력합니다. 이후 [연결]을 클릭하면 AWS로 생성한 인스턴스(가상 컴퓨터)가 파일 질라를 통해 연결됩니다. 즉 파일 질라를 통해 원격으로 파일을 관리할 수 있습니다.

2) 파일 질라로 연결된 가성 컴퓨터에 디렉터리를 생성한 후, 프로젝트 실행에 필요한 파일을 드래그로 복사합니다. 디렉터리는 마우스 오른쪽 클릭을 통해 나오는 메뉴창으로 할 수 있으며, 저는 'sparta'라는 디렉터리를 생성하고, 이 디렉터리에 제 프로젝트 파일(Python 파일, HTML 파일) 복사했습니다.

제가 만든 프로젝트는 원페이지 쇼핑몰로써, 서버 실행 파일(app.py), HTML 파일을 담은 templates 디렉터리, CSS 부분에 필요한 이미지 파일을 담은 static 디렉터리까지 총 3개의 디렉터리(또는 파일)를 복사했습니다.

 

 

4. 가상 컴퓨터에 있는 프로젝트 원격 실행 및 원격 종료

이렇게 가상 컴퓨터로 프로젝트 파일 복사까지 완료한 후엔 서버 파일을 실행만 해주면 됩니다. 이 파일 실행은 이전에 연결했던 깃 배시를 통해 진행합니다. 깃 배시로 가상 컴퓨터에 연결하는 코드는 아래와 같습니다.

$ ssh -i 키페어_파일_위치_주소 ubuntu@복사한_IPv4_주소

명령 대기줄이 'ubuntu@ip'로 시작된다면 원격 접속된 상태입니다.

 

1) 원격 컴퓨터의 서버 기본 세팅

이후에 이 글에서 입력할 명령어가 오류 없이 잘 수행되기 위해서는, 미리 원격 컴퓨터의 디렉터리 내에서 깃 배시의 쉘(Shell)로 아래 파일을 실행시킴으로써 서버 세팅을 해두어야 합니다. 먼저 'initial_ec2.sh' 파일을 다운로드하고 파일 질라를 통해 원격 컴퓨터의 'sparta' 디렉터리로 복사한 후, 쉘 명령을 통해 실행해서 서버 세팅을 진행했습니다.

initial_ec2.sh
0.00MB

'initial_ec2.sh' 파일을 파일 질라로 원격 컴퓨터에 복사한 후, 쉘 명령을 통해 원격 컴퓨터의 'sparta' 디렉터리로 이동해서 파일을 확인합니다. 'ls', 'cd sparta' 등의 명령어는 <참고>의 간단한 리눅스 명령어 관련 글을 참고하면 됩니다.

파일이 있는 것을 확인한 후에 아래 명령어 2줄을 순서대로 입력합니다.

$ sudo chmod 755 initial_ec2.sh    # 해당 파일에 대한 권한을 조정하는 명령
$ ./initial_ec2.sh

 

2) 서버 파일 원격 실행(24시간 내내)

이렇게 세팅되고, 연결된 가상 컴퓨터에서 실행되는 서버 파일은 내 컴퓨터에서 깃 배시를 종료하든, 내 컴퓨터를 끄든 24시간 내내 실행되고 있어야 합니다. 이를 가능하게 하는 명령어는 아래와 같습니다.

$ nohup python app.py &

명령어를 입력하고 엔터키를 치면 아래 화면처럼 메시지 한 줄이 뜹니다. 이제 깃 배시를 끄든, 현재 사용하는 노트북을 끄든 원격 컴퓨터의 서버 파일은 24시간 실행되고, 웹 페이지 또한 언제든 접근할 수 있게 됩니다.

제가 제작한 웹 페이지도 언제든 접근 가능합니다. 단, 아래 화면의 경우는 주소가 '가비아'를 통해 도메인까지 구매하고 입힌 상태이기 때문에 화면과 같이 'seongjin.shop'으로 뜹니다. 보통의 경우 AWS 인스턴스를 통해 확인한 '퍼블릭 IPv4 주소'를 주소창에 입력하면 접근할 수 있습니다.

프로젝트가 실행되는 화면

 

3) 서버 파일 강제 종료

깃 배시를 통해 4-2) 명령어를 수행했다면, 이후 깃 배시에서 다른 작업을 하든, 컴퓨터에서 무엇을 하든 가상 컴퓨터의 서버 파일은 이를 무시하고 계속 실행되고 있습니다. 하지만 중간에 원격 컴퓨터에 있는 프로젝트 파일의 수정이나 다른 작업이 필요한 경우와 같이 이 서버 파일을 잠시 또는 아예 종료시켜야 하는 경우도 있습니다. 이런 경우엔 아래 명령어를 순서대로 입력함으로써 무시하고 실행되던 서버 파일을 강제 종료할 수 있습니다.

우선, app.py로 실행되는 프로세스 목록을 찾습니다. 아래 명령어에서 '|'는 Shift + \(백스페이스 밑에 있는 키)를 누르면 입력되며, 띄어쓰기에 유의합니다.

$ ps -ef | grep 'app.py'    # 'app.py'라는 이름이 포함된 프로세스 목록을 보여주는 명령어

그럼 아래 화면과 같이 목록이 나오고 끝 부분이 'grep --color=auto'인 부분을 뺀 나머지 두 줄이 실질적인 프로세스입니다.

프로세스를 확인한 후에 프로세스 번호마다 지정해서 각 프로세스를 강제 종료하면 됩니다. 강제 종료 명령어는 아래와 같습니다.

$ kill -9 프로세스_번호

제 경우에는 2개의 프로세스를 종료하면 됐기 때문에, 아래 화면처럼 각 프로세스 번호를 위 명령어 형식에 맞춰서 각각 입력했습니다.

그러면 파이썬 파일인 app.py가 죽었다는 메시지와 함께 실행되던 프로젝트 페이지가 연결이 되지 않는 것을 확인할 수 있었습니다. 다시 연결하고 싶을 땐 4-2) 과정의 실행 명령어를 다시 입력하면 됩니다.

 

이렇게 AWS의 인스턴스를 통해 가상 컴퓨터를 생성하고, 그 컴퓨터에서 서버 파일을 실행시킴으로써 누구든 언제든지 제가 만든 토이 프로젝트의 웹 페이지를 볼 수 있게 했습니다. 이후 다른 웹 서비스나 프로젝트를 진행해보면서 이 AWS 인스턴스 기능은 유용하게 사용할 수 있을 것이라 생각되고, 다른 분들도 간단하게 AWS 인스턴스를 이용하는데 조금이나마 도움이 될 수 있도록 이렇게 제 경우의 AWS 인스턴스 생성 과정을 정리해봤습니다.

 

 

<참고>

1. 파일 질라(File Zilla) 설치: https://filezilla-project.org/download.php

 

Download FileZilla Client for Windows (64bit x86)

Download FileZilla Client for Windows (64bit x86) The latest stable version of FileZilla Client is 3.54.1 Please select the file appropriate for your platform below. Please select your edition of FileZilla Client FileZilla FileZilla with manual FileZilla P

filezilla-project.org

2. 기초적인 리눅스 명령어를 담은 글: https://as-j.tistory.com/35

 

[Git] Git 명령어 모음(feat. 간단한 리눅스 명령어)

'깃(Git)'이란 컴퓨터의 많은 문서(특히, 많은 버전으로 작성되는 문서)를 보다 편리하고 직관적으로 관리할 수 있게 해주는 프로그램입니다. 깃의 핵심 기능은 크게 3가지 기능을 제공하며, '버전

as-j.tistory.com