J'avais l'habitude de toucher le script CGI sur des serveurs de location sans le savoir bien, mais j'ai essayé de l'exécuter moi-même. C'est un travail de l'état d'installation propre de CentOS8. Puisque le code est réutilisé, j'essaye de le copier. Puisque c'est le but de l'historique de travail, il y a peu d'explications. Je suis désolé.
S'il y a un fichier de configuration installé dans le package, je l'utilise autant que possible. Dans un environnement déjà en cours d'exécution, le fichier de configuration par défaut peut avoir été modifié, cette procédure ne fonctionne donc pas toujours.
Correction du fuseau horaire, mise à jour du package, selinux désactivé
timedatectl set-timezone Asia/Tokyo
dnf install -y epel-release
dnf update -y
sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
shutdown -r now
Installez chaque script et le package à exécuter en tant que CGI.
dnf install -y nginx php php-fpm python38 ruby fcgi spawn-fcgi fcgiwrap
Assurez-vous d'appeler fcgi lorsque le script python perl ruby est appelé.
Puisqu'il s'agit d'un document ici, copiez-le tel quel
cat <<'EOF' > /etc/nginx/default.d/cgi.conf
location ~ \.(py|pl|rb)$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/spawn-fcgi.socket;
}
EOF
Préparez un fichier de configuration spawn-fcgi pour exécuter l'encapsuleur fcgi en tant que service.
Puisqu'il s'agit d'un document ici, copiez-le tel quel
cat <<'EOF' > /etc/sysconfig/spawn-fcgi
SOCKET=/var/run/spawn-fcgi.socket
OPTIONS="-u nginx -g nginx -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /sbin/fcgiwrap"
EOF
Inscrivez-vous et démarrez les services spawn-fcgi et php-fpm.
systemctl enable nginx php-fpm spawn-fcgi
systemctl start nginx php-fpm spawn-fcgi
Faites un trou dans le pare-feu.
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --reload
De plus, php-fpm est OK avec le fichier de paramètres par défaut lorsque le package est installé.
Créez un index pour chaque script.
Puisqu'il s'agit d'un document ici, copiez-le tel quel
cat <<'EOF' > /usr/share/nginx/html/index.html
<html><body>
<h1>Running CGI scripts on NGINX</h1>
<a href=/php.php>php script</a><br>
<br>
<a href=/python.py>python script</a><br>
<br>
<a href=/perl.pl>perl script</a><br>
<br>
<a href=/ruby.rb>ruby script</a><br>
</body></html>
EOF
Fichier de script
Puisqu'il s'agit d'un document ici, copiez-le tel quel
cat <<'EOF' > /usr/share/nginx/html/php.php
<?php
print "<html><body>\n";
print "Hello PHP Script!<br>\n";
print "</body></html>\n";
?>
EOF
Contrôle de fonctionnement
# curl http://localhost/php.php
<html><body>
Hello PHP Script!<br>
</body></html>
Fichier de script
Puisqu'il s'agit d'un document ici, copiez-le tel quel
cat <<'EOF' > /usr/share/nginx/html/perl.pl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body>\n";
print "Hello Perl Script!<br>\n";
print "</body></html>\n";
exit;
EOF
chmod 755 /usr/share/nginx/html/perl.pl
Contrôle de fonctionnement
# curl http://localhost/perl.pl
<html><body>
Hello Perl Script!<br>
</body></html>
Fichier de script
Puisqu'il s'agit d'un document ici, copiez-le tel quel
cat <<'EOF' > /usr/share/nginx/html/python.py
#!/usr/bin/python3
print("HTTP/1.0 200 OK")
print("Content-type: text/html\n")
print("<html><body>")
print("Hello Python Script!<br>")
print("</body></html>")
EOF
chmod 755 /usr/share/nginx/html/python.py
Contrôle de fonctionnement
# curl http://localhost/python.py
<html><body>
Hello Python Script!<br>
</body></html>
Fichier de script
Puisqu'il s'agit d'un document ici, copiez-le tel quel
cat <<'EOF' > /usr/share/nginx/html/ruby.rb
#!/usr/bin/ruby
puts "Content-type: text/html\n\n"
puts "<html><body>"
puts "Hello Ruby Script!<br>"
puts "</body></html>"
EOF
chmod 755 /usr/share/nginx/html/ruby.rb
Contrôle de fonctionnement
# curl http://localhost/ruby.rb
<html><body>
Hello Ruby Script!<br>
</body></html>
php-fpm est utilisé avec les paramètres tels qu'ils sont dans l'installation du package.
:/etc/nginx/conf.d/php-fpm.conf
upstream php-fpm {
server unix:/run/php-fpm/www.sock;
}
:/etc/nginx/default.d/php.conf
index index.php index.html index.htm;
location ~ \.(php|phar)(/.*)?$ {
fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php-fpm;
}
Recommended Posts