WEB2 - Python

설치 및 연동 - Linux & Codeanywhere

수업소개

이 수업에서는 온라인을 통해서 실습을 진행할 수 있는 codeanywhere.com 의 사용법과 Python, Apache를 연동해서 Python 웹애플리케이션을 구동하는 방법을 살펴봅니다. 

 

웹서버 준비

 

 

Python 설치와 실행방법

 

 

Apache와 Python을 CGI로 연동하는 방법

nano 에디터로 Apache 웹서버가 동작하는 방법을 변경하기 위해서 설정 파일을 편집합니다. 

sudo nano /etc/apache2/sites-enabled/000-default.conf

 

Document root(웹서버가 요청한 파일을 찾는 최상위 디렉토리)에 있는 파일 중 확장자가 py인 파일은 Python으로서 실행 되도록 합니다. 추가한 내용은 4~7행입니다. 

<VirtualHost *:80 *:3000>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/cabox/workspace
        <Directory /home/cabox/workspace>
                AddHandler cgi-script .py
                Options ExecCGI
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

 

cgi가 동작하도록 cgi 기능을 켭니다. 

sudo a2enmod cgi

 

웹서버를 재시작합니다. 

sudo service apache2 restart

 

python script를 작성합니다. 

helloworld.py

#!/usr/bin/python3
print("content-type:text/html; charset=UTF-8\n")
print(1+1)

 

python 파일이 웹서버에 의해서 실행되도록 실행권한을 허용합니다. 

sudo chmod a+x helloworld.py

 

접속합니다. 

필자의 경우는 아래 주소였습니다. 자신의 주소에 접속하시면 됩니다. 

http://web2-python-egoing690448.codeanyapp.com/helloworld.py

 

오류가 발생하면 오류 메시지를 확인해봅니다. 

sudo tail -f /var/log/apache2/error.log

댓글

댓글 본문
  1. hanryang
    대충 그러려니...
  2. 엔진73
    며칠을 고생하다 드디어 해결이 되었습니다.
    마지막으로 어느 블로그에 갔더니 요기서 보고 했다고 설명을 해 놓았길래 동영상 보고 하나하나 따라 했더니 실행이 되었습니다.
    파이썬 위치 찾기도 힘들었는데 아주 쉽게 하고 명령어도 알게 되었네요.
    며칠을 고생한 이유가 마지막 동영상 끝 부분에 있네요. 헤더내용. 작성은 했는데 \n 이 없어서
    왜 다른 사람들 설명에는 그 부분이 빠져 있었던건지 ???
    감사합니다. 공부한다고 생활코딩책을 두권 구매 했는데 인프런 강의를 신청하는 바람에 그냥 방치 하고 있네요.
  3. scientist
    220727
  4. GongAnJuck
    친절한 답변 감사 드립니다.
    관련하여 환경 설정 성공하고 실습 성공 했습니다.
    멋진 강의 감사 드립니다. ^^
    대화보기
    • Sansol Park
      아마 이런 경우에는 강의제작 시점과 다르게 사이트가 업데이트되어서 동영상 강의 내용과 달라진 것 같습니다.

      똑같이 따라 실습하기 어려울 때는 그냥 가볍게 강의 영상을 보시고 이해하시고 넘어가는 것을 추천드립니다.
      대화보기
      • GongAnJuck
        안녕하세요. codeanywhere 접속 후 첫 화면이 강의 내용과 달라서 진도를 못나가고 있습니다.
        제 첫 화면에는 강의 화면과 달리 containers 와 connections 를 처음부터 따로 만들도록 나옵니다.
        게시판에 스크린 샷을 올려서 보여 드릴수있는 기능이 없나 보네요.
        도움 부탁 드립니다.
        감사합니다.
      • 묭구리
        저장
      • 열혈방구
        웹서버를 재시작이 안되는 케이스의 경우,
        command line을 아래와 같이 해보시면 됩니다.
        sudo /etc/init.d/apache2 restart
      • 눈먼시계공
        [Sun Jan 03 11:10:00.065033 2021] [cgid:error] [pid 114639:tid 140534923390016] (2)No such file or directory: AH01241: exec of '/var/www/html/index.py' failed
        [Sun Jan 03 11:10:00.065653 2021] [cgid:error] [pid 112002:tid 140534819583744] [client 210.204.203.35:57900] End of script output before headers: index.py

        이런 에러가 뜨시는 분들은 여기 링크 들어가셔서 perl을 python이라고 생각하시고 읽으시면 됩니다.

        https://perlmaven.com......he2

        dos2unix 이거 하나로 해결됐네요
      • banaba
        122/13 와우 이번 시간엔 외울 내용이 엄청 많았네요. 밥먹고 왔더니, codeanywhere 이용시간을 이미 다써서 실습은 내일 해볼 것!!
      • 대전l맥돌이
        [Tue Nov 24 23:20:07.786089 2020] [cgid:error] [pid 1553:tid 1996276240] (2)No such file or directory: AH01241: exec of '/home/pi/www/cgi-bin/helloworld.py' failed
        [Tue Nov 24 23:20:07.788676 2020] [cgid:error] [pid 1436:tid 1929372704] [client 192.168.0.38:64403] End of script output before headers: helloworld.py

        이런건 왜 나올까요?
      • 대전l맥돌이
        라즈베리파이 에서는 불가능한 행위 일까요???
        CGI 가 동작을 안하는 것 같기도 하고...
      • hari
        대화보기
        • cgoing
          cgoing / 2020.09.30
        • 김형준
          비전공자 입니다.
          3일째 파이썬 설치 및 연동 부분에서 혼자 씨름하고 있는데 마지막
          cabox@web2-python3:~/workspace$ ./helloworld.py
          content-type:text/html; charset=UTF-8\n
          2
          이 부분까지 이고잉 쌤과 똑같이 되었는데 왜 저는 helloworld.py가 아직도 internal server error로 열리지 않는걸까요? ㅜㅜ 제발 도와주세요 ㅜㅜㅜ 파이썬 본 수업을 제발 배우고 싶어요 ㅜㅜㅜ


          cabox@web2-python3:~/workspace$ sudo nano /etc/apache2/sites-enabled/000-default.conf
          cabox@web2-python3:~/workspace$ sudo a2enmod cgi
          Your MPM seems to be threaded. Selecting cgid instead of cgi.
          Enabling module cgid.
          To activate the new configuration, you need to run:
          systemctl restart apache2
          cabox@web2-python3:~/workspace$ sudo service apache2 restart
          cabox@web2-python3:~/workspace$ ls-al
          -bash: ls-al: command not found
          cabox@web2-python3:~/workspace$ ls -al
          total 20
          drwxrwsr-x 3 cabox www-data 4096 May 25 05:10 .
          drwxr-xr-x 10 cabox cabox 4096 May 25 05:07 ..
          -rwxr-xr-x 1 cabox www-data 29 May 25 05:10 helloworld.py
          -rw-r--r-- 1 cabox www-data 31 May 25 04:58 index.html
          drwxrwsr-x 2 cabox www-data 4096 May 25 05:00 temp
          cabox@web2-python3:~/workspace$ sudo tail helloworld.py
          #!/usr/bin/python3
          print(1+1)cabox@web2-python3:~/workspace$ sudo tail /var/log/apache2/error.log
          [Fri Oct 05 06:50:19.061393 2018] [core:notice] [pid 301:tid 139673394362240] AH00094: Command line: '/usr/sbin/apache2'
          [Fri Oct 05 06:51:12.722323 2018] [mpm_event:notice] [pid 301:tid 139673394362240] AH00491: caught SIGTERM, shutting down
          [Fri Oct 19 13:10:41.248352 2018] [mpm_event:notice] [pid 334:tid 140522780034944] AH00489: Apache/2.4.34 (Ubuntu) configured-- resuming normal operations
          [Fri Oct 19 13:10:41.250127 2018] [core:notice] [pid 334:tid 140522780034944] AH00094: Command line: '/usr/sbin/apache2'
          [Mon May 25 04:54:58.969033 2020] [mpm_event:notice] [pid 335:tid 140340885415808] AH00489: Apache/2.4.34 (Ubuntu) configured-- resuming normal operations
          [Mon May 25 04:54:58.969150 2020] [core:notice] [pid 335:tid 140340885415808] AH00094: Command line: '/usr/sbin/apache2'
          [Mon May 25 05:16:30.733657 2020] [mpm_event:notice] [pid 335:tid 140340885415808] AH00491: caught SIGTERM, shutting down
          [Mon May 25 05:16:30.815432 2020] [mpm_event:notice] [pid 1692:tid 139683418793856] AH00489: Apache/2.4.34 (Ubuntu) configured -- resuming normal operations
          [Mon May 25 05:16:30.815571 2020] [core:notice] [pid 1692:tid 139683418793856] AH00094: Command line: '/usr/sbin/apache2'
          [Mon May 25 05:16:56.834755 2020] [cgid:error] [pid 1694:tid 139683297044224] [client 38.75.137.222:45380] malformed header from script 'helloworld.py': Bad header: 2
          cabox@web2-python3:~/workspace$ sudo tail -f2 /var/log/apache2/error.log
          tail: option used in invalid context -- 2
          cabox@web2-python3:~/workspace$ ls -al
          total 20
          drwxrwsr-x 3 cabox www-data 4096 May 25 05:20 .
          drwxr-xr-x 10 cabox cabox 4096 May 25 05:07 ..
          -rwxr-xr-x 1 cabox www-data 80 May 25 05:20 helloworld.py
          -rw-r--r-- 1 cabox www-data 31 May 25 04:58 index.html
          drwxrwsr-x 2 cabox www-data 4096 May 25 05:00 temp
          cabox@web2-python3:~/workspace$ ./helloworld.py
          content-type:text/html; charset=UTF-8\n
          2
          cabox@web2-python3:~/workspace
        • moongua
          정말 재밌고 좋은 강의입니다. 감사합니다.
        • pacoding
          아파치말고 nginx 에서는 어떻게 설정해야 할지요? 아파치가 설치되어 있지 않아 고민되네요. 인터넷에도 잘 설명이 안되 있는거 같고요?
        • 이레
          안녕하세요, 혹시 그 sudo a2enmod cgi를 하는 과정에서

          Your MPM seems to be threaded. Selecting cgid instead of cgi.
          Module cgid already enabled

          이런 오류가 나는데 어떻게 해결을 할까요? 검색 결과는 cgi 대신에 cgid를 그냥 써도 된다고 하는 답변도 봤는데 그럼 문서 부분을 수정해야할 것 같은데 어떻게 수정해야하는지도 잘 모르겠네요 ㅠㅠ 여기서 막혀서 다음 것을 못 나가고 있습니다... 혹시 아시는 분 있으면 답변 부탁드려요!
        • xuanxi
          점차 복잡하고 어려워지는군요
        • 왕만두
          악 설정파일에 chi라고 적어서 오류났었네요 ㅠㅠ 오타 조심하세요 왜 자꾸 손이 chi라고 입력하지..
          codeanywhere 무료 하루에 2시간밖에 못쓰는 것도 아쉽..
        • 혹시 오류해결하셨나요
          대화보기
          • 파이똔
            apache2 start 했는데
            command not found라고 떠요.............
            윈도우 버전으로 했을 때도 비트나미에서 apache가 stopped 상태에 머물러 있고 재시작이 안돼서
            유튜브에 egoing님께서 codeanywhere로 옮겨서 시도하라는 글 보고 옮겨서 하는데
            여기서도 안되네요 ㅠㅠ 대체 뭐가 문제일까요
          • alpha
            해결하셧을지는 모르겠지만 회원가입시 사용한 아이디로 메일이가는데 거기서 verify your account.를 클릭하시면됩니다.
            대화보기
            • alpha
              codeanywhere 이 켜진상태로 두시간이 지나면 꺼집니다.
              무료이용자는 하루에 두시간밖에 킬수없다고하네요. 켜놓고 다른일을 하고오면 안될것같네요
            • aaronkim
              코드애니웨어 설치는 됐는데 로그인을 해서 HTML을 선택 하고 Creat를 누르면
              You can not use the Container feature until you verify your account.
              Please go to your dashboard.

              이렇게 뜨면서 되질 않네요 .. dashboard에 들어 가서 upgrade를 하고 해도 안되고 어떻게 해야 하나요 ㅠㅠ 알려주세요
            • Seankim
              여기까지 ㅇㅇ
            • 잘풀리는인생
              리눅스 환경은
              vmware + mint linux 19 tara
              apache2
              python3
              다 install 된 상태 입니다..
            • 잘풀리는인생
              설정은 apache2 conf 설정 다 하고
              sudo a2enmod cgi 다해주고..
              sudo chmod a+x cgi_env.py 실행 파일 다 해주고 했는데도 안됨..
              벌써 몇시간째 ㅠㅠ..
            • 잘풀리는인생
              #!/usr/bin/python3
              print("Content-Type: text/html")
              print()
              import cgi
              cgi.test()
              -------------> 이거 실행 하면 밑에 처럼 에러 나는 이유 뭔가요?
              구글링 찾아도 안나오네요...

              SyntaxError: unexpected character after line continuation character
              에러 원문...
              [Sun Nov 18 23:39:51.995309 2018] [cgi:error] [pid 4280] [client 127.0.0.1:50746] AH01215: SyntaxError: unexpected character after line continuation character: /var/www/html/cgi_env.py
            • Sang Tae Stephen Lee
              이렇게 어려운내용을 이렇게쉽게 설명해주시다니...
            • Aaron Soon Woo Kwon
              완료입니다~
            • 송문숙
              감사합니다.
              도움이 많이 됩니다.
            • Byoung Nam Soh
              nano설치 후, 강의를 쫒아하다가 sudo nano /etc/apache2/sites-enabled/000-default.conf를 하지 않고
              sudo nano에서 길을 잃어헤메 다가 다시 따라해서 성공... 감사합니다 :)
            • 호눅스
              이번 강의 정말 꿀잼이었어요!
            • alex
              terminal에서는 py가 실행가능한데 제 이메일로 지정된 URL로 py file 실행 시
              'this container is currently unaccessible.'이라는 메세지가 뜨네요
              컨테이너는 작동중 상태입니다. 로컬호스트인 127.0.0.1에서만 응답할 경우 외부 컨테이너에서는 이용가능하지
              않으며 0.0.0.0에서 응답 및 접속이 안되네요.
              로컬 호스트 변경 방법을 확인 결과 anywhere에 terminal에서
              "rails s -binding=0.0.0.0"을 실행하라고 하는데 명령어가 없다고 나와서 config로 진입해서 바꾸려고 하는데
              방법이 상세히 나와있지 않네요. 관련 사항은 아래와 같습니다.

              "Running on Localhost
              Some of our stacks will default the IP to the localhost: 127.0.0.1. You have to change the default IP so your Container could run externally. Please change IP address on your container from 127.0.0.1 to 0.0.0.0 so that you could be able to preview your Ruby box. You can do that inside Config - under commands - of your container (right click on your container and select Config).

              For example, on Ruby stack, you just have to use the following command in order to run your Rails container: "rails s --binding=0.0.0.0" This will override localhost (127.0.0.1) where your app can't work. And now, you'll be able to view your Ruby app on: preview.xxxxxx.box.codeanywhere.com:3000."
            • PassionOfStudy
              " 시작이 반이다~! "

              2018-03-27 - 1일차_두번째 수강완료!

              codeanywhere 정말 편리하네요.

              codeanywhere는 클라우드컴퓨팅환경을 제공하는 건가요?
            • 마샤
              엄청 길게 느껴졌지만 끝낸만큼 성취감이 더 크네요:)
            • 조영만
              nano에서 막혀서 vi 로 했네요. nano가 생소해서..ㅎㅎ;
            • Dongsik Shin
              귀에 쏙쏙 들어 오네요
            • Rhys Jung
              리눅스를 사용해보지 않아 내용이 어렵네요