Ubuntu 13.10をインストールし、Apacheをインストールしようとしています。しかし、cgi-binでPerlファイルを実行しようとすると、ブラウザにはプレーンテキストしか表示されませんでした。
Apacheのdefault.confは次のとおりです。
AddHandler cgi-script .cgi .pl
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch
#Order allow,deny
Require all granted
Allow from all
</Directory>
これは私のPerl cgiファイルです:
#!/usr/bin/Perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title> Perl CGI</title>\n";
print "<body>";
print "hello Perl-cgi!!!!!!!";
print "</body>";
print "</html>\n";
Mime.confでハンドラーをオンにしました。ファイルは/ usr/lib/cgi-binにあり、file:///ではなくhttpとして実行します。 mod_Perlもインストールしました。 Apacheは初めてです。私は数時間検索しましたが、無限のApache設定を試し、Apacheのドキュメントを読んでも解決できません。 「+ ExecCGI」コードに問題があるからでしょうか? Ubuntu 12.04を13.10にアップデートした後、他の人も同様の問題に遭遇するのを見ました。たぶんUbuntuが問題ですか?助けてください。 Apacheの設定とUbuntuの許可は、ほとんど私を怒らせています。
このコマンドで試してください:
Sudo a2enmod cgi
次に、Apacheを再起動します。
Ubuntu 14.04でバグジラを設定しようとしたときにこの問題が発生しました。@ Andrewの回答は素晴らしく、@ Kevinのリンクもそうでした。cgiを有効にする以外に、Apache2用のPerlのモジュールがインストールされていることを確認してください。これは次の方法で実行できます。
Sudo apt-get install libapache2-mod-Perl2
これにより、モジュールが自動的に有効になるだけでなく、Apacheサーバーが再起動します。そうでない場合は手動で行います。
両方を賛成するのに十分な担当者がいないので、感謝します。
@topsから answer を展開します。
Apacheチュートリアル:CGIを使用した動的コンテンツ 、 buntu HTTDP または PHPでApache2ウェブサーバーをインストールする方法)などのチュートリアルに従っている場合は、Sudo a2enmod cgi
を試してください。 、CGI、およびUbuntuサーバーでのPerlのサポート であり、それらに何が欠けているのかはまだわかりません。
次に、Apacheを再起動します。
これは次のように行うことができます:
Sudo /etc/init.d/Apache2 restart
Sudo Apache2ctl restart
Sudo service Apache2 restart
<-最初に試してください
これは私にとってUbuntu 13.10で動作しました。
RedHadベースのディストリビューションからのユーザーへの新しいコマンド:
a2enmod
a2dismod
a2enconf
a2disconf
a2ensite
a2dissite
メインの構成ファイルはデフォルトで/etc/Apache2/Apache2.conf
であり、モジュールとWebサイトの個々の構成コンポーネントは別々のファイルにあることに注意してください。
編集:このページ にアクセスする人々がなぜ問題を抱えているのかについての詳細が展開されていますUbuntuでApache CGIを有効にします。
Ubuntu 13.10にApacheをインストールする手順:
Sudo apt-get install Apache2
Sudo service Apache2 start
Ubuntu 13.10でApacheをテストする手順:
Ubuntu 13.10のApacheでCGIプログラムを使用する手順:
Ubuntu 13.10上のApacheでCGIプログラムをテストする手順:
/usr/lib/cgi-bin/
内のファイルを編集します(例:/usr/lib/cgi-bin/test
)Sudo chmod +x /usr/lib/cgi-bin/test
注:「your-Host-here.com」は「localhost」である可能性がありますが、SOは使用できませんURLで使用させてください:-/
Apache cgiモードが有効になっていることを確認してください
Sudo a2enmod cgi //will enable the cgi mode
Sudo a2dismod cgi //Will disable the cgi mode
すべてのファイルをwebrootの「cgi-bin」フォルダに保存します
Sudo mkdir /home/www/cgi-bin
.cgiファイルへのファイル権限が適切であることを確認してください
Sudo chmod 755 yourFile.cgi
端末から実行してみてください
Perl /Path_To_The_File/fileName.cgi
FileName.cgiにファイルの先頭に以下のコードが含まれていることを確認してください
#!/usr/bin/Perl -w
print "Content-type: text/html\n\n";
上記のすべてのステップがうまく機能している場合
Perlプロジェクト用にApacheで仮想ホストを作成する
cp /etc/Apache2/sites-available/000-default.conf ./your_project.conf
Sudo nano /etc/Apache2/sites-available/your_project.conf
Your_project.confファイル内で、次の行を置き換えます
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/cgi-bin //Define where your project is
ServerName your_project.com //URL through which you want to access
ServerAlias your_project.com
ErrorLog ${Apache_LOG_DIR}/error.log //Error for the project will store in this file
CustomLog ${Apache_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/" //particular directory is set aside for CGI programs
<Directory /var/www/html/cgi-bin/>
##TO consider the files as cgi which has .cgi and .pl extension
Options +ExecCGI
AddHandler cgi-script .cgi .pl
##To consider all files as cgi file (if want to use remove # from last two line add in above 2 line)
#Options ExecCGI
#SetHandler cgi-script
</Directory>
</VirtualHost>
これらのコマンドを実行する
Sudo a2ensite your_project.conf //Will enable your configuration file
Sudo service Apache2 restart //Restarting Apache2
ホストを追加
Sudo nano /etc/hosts
//add this line
127.0.0.1 your_project.com
ここで、cgiファイルを実行します。
your_project.com/cgi-bin/fileName.cgi