使用Rocky Linux安装apache并运行cgi程序

我决定尝试一下Rockey Linux,并且再次使用cgi,这是我很久以来的一次尝试。

开发环境 fā

macOS Monterey 12.2.1
VirtualBox 6.1
Vagrant 2.2.19
Rocky Linux 8.5
Apache 2.4.37

摇滚Linux 启动

Vagrantfile (杂项文件)

Vagrant.configure("2") do |config|
  config.vm.box = "generic/rocky8"
  config.vm.network "public_network", ip: "192.168.0.17"
end

启动虚拟机
使用Vagrant SSH连接虚拟机

安装Apache

sudo yum install httpd
sudo systemctl enable httpd
sudo systemctl start httpd

停用firewalld,以便在浏览器上浏览。

systemctl status firewalld
sudo systemctl stop firewalld
systemctl status firewalld
sudo systemctl disable firewalld

sudo reboot

提供日语支持

sudo localectl set-locale LANG=ja_JP.UTF-8

加载mod_cgi

sudo vi /etc/httpd/conf/httpd.conf
# LoadModule cgi_module modules/mod_cgi.so 追加

sudo systemctl restart httpd

测试CGI的目的

cat > /var/www/html/form.html <<EOF
<html>
<head>
<title>フォームサンプル</title>
</head>
<body>
<form method="post" action="../cgi-bin/form.cgi">
  <p>
    メッセージ<br>
    <input type="text" name="message" size="20" value="">
  </p>
  <p><input type="submit" value="送信する"></p>
</form>
</body>
</html>
EOF
cat > /var/www/cgi-bin/form.cgi <<EOF
#!/bin/perl

#送信されたデータを受け取る
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
  read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'});
} else {
  $alldata = $ENV{'QUERY_STRING'};
}
foreach $data (split(/&/, $alldata)) {
  ($key, $value) = split(/=/, $data);

  $value =~ s/\+/ /g;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg;
  $value =~ s/\t//g;

  $in{"$key"} = $value;
}

print "Content-Type: text/html;\n\n";
print "<html>\n";
print "<head><title>フォームサンプル</title></head>\n";
print "<body>\n";

#受け取ったデータを表示する
print "<p>入力されたメッセージは$in{'message'}です。</p>\n";

print "</body>\n";
print "</html>\n";

exit;
EOF
chmod 755 /var/www/cgi-bin/form.cgi
スクリーンショット 2022-05-09 22.53.18.png
スクリーンショット 2022-05-09 22.53.54.png

顺利运作了

bannerAds