2017-02-21 2 views
2

like cgi-script를 run하기 docker file을 configure하는 : /conf/myawesomesite.conf가 How I가 this files have perl

  • 을 index.php
  • Dockerfile
  • cgi-bin/

    ,478,321 : /conf/myawesomesite.conf에서 helloworld.pl

Dockerfile 0

:

FROM ubuntu:16.04 

## Install Base Packages 
RUN apt-get update && apt-get -y install \ 
    apache2 \ 
    make \ 
    curl \ 
    git \ 
    gcc 

RUN a2enmod rewrite 

## Install Perl 
RUN apt-get update && apt-get -y install \ 
    libapache2-mod-perl2 \ 
    perl 

RUN a2enmod perl 

## Install PHP 
RUN apt-get update && apt-get -y install \ 
    php7.0 php7.0-cli php7.0-common php7.0-fpm php7.0-json \ 
    php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-readline \ 
    libapache2-mod-php7.0 

RUN a2enmod rewrite 


EXPOSE 80 

RUN mkdir -p /var/www/html/myawesomesite.com/httpdocs 

RUN mkdir -p /var/www/myawesomesite.com/logs/ 

COPY ./conf/myawesomesite.conf /etc/apache2/sites-available/ 
RUN a2ensite myawesomesite 
RUN a2dissite 000-default.conf 

CMD /usr/sbin/apache2ctl -D FOREGROUND 

빌드 및 컨테이너를 실행은 index.php를 제대로 실행하지만,이 페이지 myawesomesite.com/cgi-bin/helloworld.pl 스크립트가 바로 인쇄 할 때 실행되지 않습니다. 결과는 아래 :

#!/usr/bin/perl 

print "Content-Type:text/html\n\n"; 
print "Hello World!"; 

나는 내 myawesomesite.conf 파일에 이러한 지침을 추가하기 때문에 결과가 Hello World!이다 기대하고있다. 하지만 왜?

Options ExecCGI AddHandler cgi-script .pl

답변

1

시도는 Dockerfile에 추가 :

RUN chmod +x cgi-bin/helloworld.pl 

CGI 스크립트 설정 실행 비트가 있어야합니다.

<Directory "/var/www/myawesomesite.com/www/cgi-bin/"> 
    Options +ExecCGI 
    AddHandler cgi-script .pl 
</Directory> 
:
0

나는 ( /var/www/myawesomesite.com/www/cgi-bin/에 복사 된 펄 스크립트를 가정) Dockerfile와의 conf에 다음 블록에 RUN a2enmod cgid을 추가했다