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. 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
          리눅스를 사용해보지 않아 내용이 어렵네요
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기