De l'état initial de CentOS8 à l'exécution de php python perl ruby avec nginx

introduction

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.

Appareil cible et environnement

Environnement de vérification (2020/8/15)

Le contenu du travail

Pré-travail

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

Installation du package

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é.

Fichier de contenu

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

Pour PHP

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>

Pour Perl

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>

Pour Python

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>

Pour Ruby

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>

Autres fichiers de configuration

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

De l'état initial de CentOS8 à l'exécution de php python perl ruby avec nginx
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
L'histoire de la migration du serveur domestique (MariaDB + Java) vers AWS (DynamoDB + Python + PHP) avec un coût mensuel réduit
Comment mettre à niveau correctement le logiciel lors de la construction de Linux (CentOS) avec Vagrant ~ En utilisant l'exemple de mise à niveau de Python 2.7 vers Python 3.6 ~
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Apprenez Nim avec Python (dès le début de l'année).
De l'achat d'un ordinateur à l'exécution d'un programme sur python
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
Comment revenir à la commande depuis l'état où vous ne pouvez pas entrer en mode interactif avec python de git bash
Flirter de PHP à Python
À propos de Perl, Python, PHP, Ruby
Passer de python2.7 à python3.6 (centos7)
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Récupérez la source de la page à charger indéfiniment avec python.
Comment gratter le cours d'une action individuelle du site Web Nikkei Shimbun avec Python
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
Proxy dynamique avec python, ruby, PHP
Je souhaite extraire une URL arbitraire de la chaîne de caractères de la source html avec python
Existence du point de vue de Python
Je veux sortir le début du mois prochain avec Python
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
Le dernier NGINX est un serveur d'applications! ?? J'ai mesuré le benchmark de NGINX Unit avec PHP, Python, Go! !!
Un mémo d'un programme qui récupère une date à deux chiffres avec javascript, Ruby, Python ou un script shell.
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)
Essayez de calculer la position de l'émetteur à partir du modèle de propagation des ondes radio avec python [Wi-Fi, Beacon]
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
Résumé de la façon d'écrire des instructions if (Scala, Java, Rust, langage C, C ++, langage Go, PHP, Perl, Python, Ruby)
Récapitulatif de la façon d'écrire un décrément d'incrémentation (Scala, Java, Rust, langage C, C ++, langage Go, PHP, Perl, Python, Ruby, JavaScript)
[Version terminée] Essayez de connaître le nombre d'habitants de la ville à partir de la liste d'adresses avec Python
Comment couper la partie inférieure droite de l'image avec Python OpenCV
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
Réaliser un générateur PHP / Python avec Golang / Ruby
Notes d'apprentissage depuis le début de Python 1
Vérifier l'existence du fichier avec python
Connexion de python à MySQL sur CentOS 6.4
Principes de base pour exécuter NoxPlayer en Python
Essayez d'appeler Python depuis Ruby avec une économie
Notes d'apprentissage depuis le début de Python 2
La route de la compilation vers Python 3 avec Thrift
Comment installer python3 avec docker centos
Essayez de mesurer la position d'un objet sur le bureau (système de coordonnées réel) à partir de l'image de la caméra avec Python + OpenCV
J'ai comparé la vitesse des expressions régulières en Ruby, Python et Perl (version 2013)
Simulons la transition du taux d'infection par rapport à la densité de population avec python
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Version Python (PHP vers Python) qui supprime la chaîne de caractères suivante de la chaîne de caractères spécifiée (extension)
Lorsque vous utilisez PyQtGraph avec Python Pyside, faites attention à l'ordre d'importation
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci