해당 게시물은 EC2 카테고리에서 작성된 Amazon Linux 2 인스턴스 웹 서버 만들기 시리즈에서 이어지는 글입니다. 이 글을 시작으로 파이썬으로 웹 애플리케이션을, 게임 커뮤니티 사이트를 만드는 과정을 서술해 볼려고 합니다.
연습용 디렉터리를 만들자
저는 EC2에서 만든 Amazon Linux 2 인스턴스에서 파이썬 파일을 만들어서 연습할 것입니다.
제가 만든 인스턴스는 웹 서버입니다. 웹 서버를 막 다룰 순 없고 잘 정리해서 사용해야겠지요. 파일이 흩어져있으면 어떤 목적으로 만들어진 파일인지 알기 힘드니까요. 그래서 연습용 디렉터리를 만들겁니다.
#홈 디렉터리로 이동
[ec2-user@ ]$ cd ~
#htdocs 디렉터리 생성
[ec2-user@ ~]$ mkdir htdocs
#현재 디렉터리 안에있는 파일들의 상태를 자세히 보여준다
[ec2-user@ ~]$ ls -al
drwxrwxr-x 2 ec2-user ec2-user 6 Oct 15 22:19 htdocs
mkdir 명령어로 htdocs 디렉터리를 만든 후 htdocs의 상태를 확인해봅시다. 출력된 정보가 저와 달라도 당황하지 마세요. 괜찮습니다.
생소한 글자들이 보이죠? drwxrwxr-x? 처음 보면 이해하기 힘든 정보이지요. 왜 저것에 대해 말하냐면 저것을 이해하고 제어할 수 있어야 원하는 파일을 만들고 제어할 수 있습니다.
크게 어려운 내용은 아니므로 간단하게 이해하고 가는 게 좋겠군요.
리눅스 파일 상태 보는 법

정보 | 표현방식 | 설명 |
---|---|---|
파일 타입 | d | – | i | * d는 디렉터리를 의미 * -는 일반 파일을 의미 * i는 링크파일을 의미 |
퍼미션 정보 | r | w | x | * 그룹 또는 사용자의 사용 권한을 나타냄 * rwx 차례대로 읽기, 쓰기, 실행 권한을 의미 * 소유자, 그룹, 일반 사용자에 대한 권한을 차례대로 rwx를 3번 출력해 총 9개의 정보를 보여줌 |
링크수 | 숫자 | * 해당 파일이 링크된 수 |
소유자 | 사용자명 | * 해당 파일의 소유자 이름 |
소유 그룹 | 그룹명 | * 해당 파일을 소유한 그룹 이름 * 특별한 변경이 없을 경우 소유자가 속한 그룹이 소유그룹으로 지정됨 |
용량 | 용량 | * 파일의 용량 |
생성 날짜 | 날짜 | * 파일이 생성된 날짜 |
파일 이름 | 텍스트 | * 파일 이름 |
위 그림과 테이블 중에서 가장 중요한 것은 퍼미션 정보입니다. 그림의 퍼미션 정보는 rwxrwxr-x입니다. 이 실행 권한 정보의 의미를 풀어볼게요.
퍼미션 정보는 소유자, 그룹, 일반 사용자 순으로 출력된다고 했습니다. 그렇다면 소유자의 실행 권한은 rwx입니다. r은 read의 약자이고 읽기 권한, w은 write의 약자이고 쓰기 권한 그리고 x는 execution의 약자이고 실행 권한입니다. 즉, 소유자는 읽고 쓰고 실행하고 모두 가능한 상태이죠.
위에서 설명했던 방식으로 그룹과 일반 사용자의 권한도 이해하실 수 있을 것입니다.
이해하기 힘든 용어는 일반 사용자인데 애초에 일반 사용자라는 용어 자체가 처음 접하는 분들에게는 의미가 모호합니다. 일반 사용자는 간단하게 말하자면 해당 게시물을 보고있는 여러분이 일반 사용자에 속합니다.
갑자기 생뚱맞게 무슨 말이냐고요? 여러분이 블로그 게시물을 보려면 서버 컴퓨터에 저장된 게시물에 대한 HTML 정보를 서버에게 요청해야 볼 수 있습니다. 그리고 이때 여러분은 서버 컴퓨터가 보낸 파일을 실행할 권한과 읽을 권한이 필요합니다.

만약에 블로그 서버에서 파일 권한 설정을 잘못한다면 블로그 접속 또는 특정 게시물 호출이 안될 겁니다. 이와 같은 이유들 때문에 서버 컴퓨터로 사용되는 리눅스에서 퍼미션(파일 권한)은 매우 중요합니다.
vi 편집기를 통해 파일 생성
#htdocs 디렉터리로 이동
[ec2-user@ ]$ cd ~/htdocs
#syntax 디렉터리 생성하고 이동
[ec2-user@ htdocs]$ mkdir syntax
[ec2-user@ htdocs]$ cd syntax
#test.py 파일 생성
[ec2-user@ syntax]$ vi test.py
저는 htdocs 디렉터리에서 컴퓨터 문법을 의미하는 syntax 디렉터리를 만들었습니다. 그리고 vi 편집기로 test.py 파이썬 파일을 만들었습니다. vi 편집기는 리눅스에서 파일을 생성하고 편집할 수 있는 에디터입니다.

파일을 처음 생성하면 위 사진처럼 텅 빈공간이 나옵니다.
축하드립니다! 여러분은 리눅스에서 파이썬 파일을 직접 만드셨습니다!
모든 프로그래밍 언어의 통과의례죠? Hello World를 출력하는 파이썬 파일을 만들어봅시다.
#'i'를 입력하여 -- INSERT -- 상태로 바꾸자
#아래 부분은 꼭 가장 윗줄에 기입하세요!
#!/usr/bin/python3
print ('Hello World')
#'esc'를 입력하여 초기 상태로 바꾼 후
#':wq'를 입력하여 저장하고 파일 편집을 종료
저는 리눅스에서 파일을 처음 만들 때 너무 불편하여 많이 당황스러웠는데 여러분은 어떻게 느끼실지 모르겠네요. 저와 비슷한 감정을 느끼신 분들은 너무 걱정하지 마세요. 무엇이든 처음에 힘들지 않은 것은 없지요. 점점 더 나아질 겁니다.
#!/usr/bin/python3는 shebang이라고 하는 것인데 어떤 인터프리터에 의해서 동작되는지 알려주는 것입니다. shebang이 사용된 파일의 단점은 직접 입력한 위치에 인터프리터(지금의 경우엔 python3)가 설치되어 있지 않다면 실행할 수 없습니다.
저는 EC2 Amazon Linux 2 인스턴스를 통해 파이썬을 설치하였고 파일을 만들었으므로 위 경로가 맞지만 저와 다른 분들은 위와 같이 입력해도 효과가 없겠지요. 결론부터 말하자면 python의 링크 파일의 경로를 기입하면 됩니다.
shebang을 기입하지 않아도 파이썬 파일을 실행할 수 있으니 너무 걱정하지 않으셔도 됩니다.
위와 같이 파일을 생성하였으면 이제 실행해 봐야겠지요?
파이썬 파일 실행
#shebang을 기입하지 않았을 때
#Python3로 test.py 실행
[ec2-uesr@ syntax]$ python3 test.py
Hello World
#shebang을 기입했을 경우에
[ec2-user@ syntax]$ ./test.py
Hello World
정상적으로 Hello World가 출력되나요?
만약에 권한 거부(Permission denied)가 출력된다면 test.py 파일에 대한 권한 설정을 해야합니다.
#Permission denied가 출력될 경우
#권한 설정을 해주자
[ec2-user@ syntax]$ chmod 755 test.py
이제 잘 되지요?
test.py처럼 간단한 파일도 권한 부여가 안 되어있으면 실행이 안 됩니다. 리눅스에서 권한 설정은 매우 중요하다는 것! 기억해 주세요.
고생하셨습니다! 파이썬 파일로 웹 페이지를 작성하기 위해선 아파치 설정 파일을 수정해야 합니다. 다음 글에서는 파이썬 CGI 설정에 대해 알아봅시다.
입문자인데 도움 되었습니다. 감사합니다.
도움이 되었다니 다행입니다.
vim 과 vi 로 파이썬 코드를 짜는건 무슨 차이가 있는건가요?
어떤 곳은 vim test.py로도 하던데 궁금합니다.
편의성 차이입니다. 윈도우 10 기본 메모장을 쓰는 것과 워드를 쓰는 것의 차이라고 할까요?
그 정도로 편의성 차이가 나는 건 아니지만 어쨌든 그렇습니다. 파이썬 코드는 똑같이 동작합니다.
쉽고 자세하게 써주셔서 감사합니다!
감사합니다 !
python3 test.py 이렇게 입력하면 정상적으로 출력되는데
./test.py 로 입력하면 다음과 같이 뜨는데 왜 그럴까요?
-bash: ./test.py: /usr/bin/python3: bad interpreter: No such file or directory
test.py 코드상에 shebang을 입력하셨나요?