如何配置docker文件以像perl一样运行cgi-script [英] How to configure the docker file to run cgi-script like perl
问题描述
我有以下文件:
- index.php
- Dockerfile
- /conf/myawesomesite.conf
- cgi-bin/helloworld.pl
:
<VirtualHost *:80>
ServerAdmin webmaster@myawesomesite.com
ServerName myawesomesite.com
ServerAlias www.myawesomesite.com
DocumentRoot /var/www/html/myawesomesite.com/httpdocs
ErrorLog /var/www/myawesomesite.com/logs/error.log
CustomLog /var/www/myawesomesite.com/logs/access.log combined
Options ExecCGI
AddHandler cgi-script .pl
</VirtualHost>
在Dockerfile中:
in Dockerfile:
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
时,脚本仅打印未执行.结果如下:
build and run the container, index.php is executing correctly but when this page myawesomesite.com/cgi-bin/helloworld.pl
the script is just printed not executed. Result below:
#!/usr/bin/perl
print "Content-Type:text/html\n\n";
print "Hello World!";
我期望结果是 Hello World!
,因为我在myawesomesite.conf文件中添加了这些指令.但是为什么呢?
I'm expecting the result is Hello World!
since i added these directives in my myawesomesite.conf file. But why?
选项ExecCGIAddHandler cgi-script .pl
推荐答案
我必须将 RUN a2enmod cgid
添加到Dockerfile,并将以下代码块添加到conf(假设将perl脚本复制到<代码>/var/www/myawesomesite.com/www/cgi-bin/):
I had to add RUN a2enmod cgid
to the Dockerfile and the following block to the conf (assuming the perl script was copied to /var/www/myawesomesite.com/www/cgi-bin/
):
<Directory "/var/www/myawesomesite.com/www/cgi-bin/">
Options +ExecCGI
AddHandler cgi-script .pl
</Directory>
这篇关于如何配置docker文件以像perl一样运行cgi-script的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!