使用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


顺利运作了