Vom Anfangszustand von CentOS8 bis zum Ausführen von PHP Python Perl Ruby mit Nginx

Einführung

Ich habe das CGI-Skript auf Mietservern berührt, ohne es gut zu kennen, aber ich habe versucht, es selbst auszuführen. Es ist eine Arbeit aus dem Neuinstallationsstatus von CentOS8. Der Code wird wiederverwendet, damit ich ihn kopieren kann. Da dies der Zweck der Arbeitsgeschichte ist, gibt es nur wenige Erklärungen. Es tut mir Leid.

Wenn eine Paketkonfigurationsdatei installiert ist, verwende ich sie so oft wie möglich. In einer Umgebung, die bereits ausgeführt wird, wurde möglicherweise die Standardeinstellungsdatei geändert, sodass dieses Verfahren nicht immer funktioniert.

Zielgerät und Umgebung

Überprüfungsumgebung (2020/8/15)

Arbeitsinhalt

Vor der Arbeit

Zeitzonenfix, Paketaktualisierung, Selinux deaktiviert


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

Paketinstallation

Installieren Sie jedes Skript und das Paket, um es als CGI auszuführen.

dnf install -y nginx php php-fpm python38 ruby fcgi spawn-fcgi fcgiwrap

Stellen Sie sicher, dass Sie fcgi aufrufen, wenn das Python-Perl-Ruby-Skript aufgerufen wird.

Da es sich um ein Dokument handelt, kopieren Sie es so wie es ist


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

Bereiten Sie eine spawn-fcgi-Konfigurationsdatei vor, um den fcgi-Wrapper als Dienst auszuführen.

Da es sich um ein Dokument handelt, kopieren Sie es so wie es ist


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

Registrieren Sie sich und starten Sie die Dienste spawn-fcgi und php-fpm.

systemctl enable nginx php-fpm spawn-fcgi
systemctl start nginx php-fpm spawn-fcgi

Machen Sie ein Loch in die Firewall.

firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --reload

Außerdem ist php-fpm mit der Standardeinstellungsdatei in Ordnung, wenn das Paket installiert wird.

Inhaltsdatei

Erstellen Sie einen Index für jedes Skript.

Da es sich um ein Dokument handelt, kopieren Sie es so wie es ist


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

Für PHP

Skriptdatei

Da es sich um ein Dokument handelt, kopieren Sie es so wie es ist


cat <<'EOF' > /usr/share/nginx/html/php.php
<?php
print "<html><body>\n";
print "Hello PHP Script!<br>\n";
print "</body></html>\n";
?>
EOF

Funktionsprüfung

# curl http://localhost/php.php
<html><body>
Hello PHP Script!<br>
</body></html>

Für Perl

Skriptdatei

Da es sich um ein Dokument handelt, kopieren Sie es so wie es ist


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

Funktionsprüfung

# curl http://localhost/perl.pl
<html><body>
Hello Perl Script!<br>
</body></html>

Für Python

Skriptdatei

Da es sich um ein Dokument handelt, kopieren Sie es so wie es ist


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

Funktionsprüfung

# curl http://localhost/python.py
<html><body>
Hello Python Script!<br>
</body></html>

Für Ruby

Skriptdatei

Da es sich um ein Dokument handelt, kopieren Sie es so wie es ist


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

Funktionsprüfung

# curl http://localhost/ruby.rb
<html><body>
Hello Ruby Script!<br>
</body></html>

Andere Konfigurationsdateien

php-fpm wird mit den Einstellungen wie in der Paketinstallation betrieben.

:/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

Vom Anfangszustand von CentOS8 bis zum Ausführen von PHP Python Perl Ruby mit Nginx
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Die Geschichte der Migration vom Heimserver (MariaDB + Java) auf AWS (DynamoDB + Python + PHP) mit reduzierten monatlichen Kosten
So aktualisieren Sie die Software beim Erstellen von Linux (CentOS) mit Vagrant ~ Am Beispiel eines Upgrades von Python 2.7 auf Python 3.6 ~
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Lerne Nim mit Python (ab Anfang des Jahres).
Vom Kauf eines Computers bis zur Ausführung eines Programms auf Python
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
So kehren Sie aus dem Zustand zum Befehl zurück, in dem Sie mit Python of Git Bash nicht in den interaktiven Modus wechseln können
Flirte von PHP nach Python
Über Perl, Python, PHP, Ruby
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
So kratzen Sie mit Python den Aktienkurs einer einzelnen Aktie von der Nikkei Shimbun-Website
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
Dynamischer Proxy mit Python, Ruby, PHP
Ich möchte mit Python eine beliebige URL aus der Zeichenfolge der HTML-Quelle extrahieren
Existenz aus Sicht von Python
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Der neueste NGINX ist ein Anwendungsserver! ?? Ich habe den Benchmark von NGINX Unit mit PHP, Python, Go! !!
Ein Memo eines Programms, das ein zweistelliges Datum mit Javascript, Ruby, Python oder einem Shell-Skript abruft.
[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 2)
Versuchen Sie, die Position des Senders aus dem Funkwellenausbreitungsmodell mit Python [Wi-Fi, Beacon] zu berechnen.
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Zusammenfassung des Schreibens von if-Anweisungen (Scala, Java, Rust, C-Sprache, C ++, Go-Sprache, PHP, Perl, Python, Ruby)
Zusammenfassung zum Schreiben von Inkrementdekrementen (Scala, Java, Rust, C-Sprache, C ++, Go-Sprache, PHP, Perl, Python, Ruby, JavaScript)
[Abgeschlossene Version] Versuchen Sie, die Anzahl der Einwohner der Stadt anhand der Adressliste mit Python herauszufinden
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
So schreiben Sie den richtigen Shebang in Perl-, Python- und Ruby-Skripten
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
Verwirklichen Sie den PHP / Python-Generator mit Golang / Ruby
Notizen vom Anfang von Python 1 lernen
Überprüfen Sie die Existenz der Datei mit Python
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Grundlagen zum Ausführen von NoxPlayer in Python
Versuchen Sie, Python von Ruby aus mit Sparsamkeit aufzurufen
Notizen vom Anfang von Python 2 lernen
Der Weg zum Kompilieren zu Python 3 mit Thrift
So installieren Sie Python3 mit Docker Centos
Versuchen Sie, die Position eines Objekts auf dem Schreibtisch (reales Koordinatensystem) anhand des Kamerabilds mit Python + OpenCV zu messen
Ich habe die Geschwindigkeit regulärer Ausdrücke in Ruby, Python und Perl (Version 2013) verglichen.
Simulieren wir den Übergang der Infektionsrate in Bezug auf die Bevölkerungsdichte mit Python
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Python-Version (PHP zu Python), die die nachfolgende Zeichenfolge aus der angegebenen Zeichenfolge (Erweiterung) löscht
Beachten Sie bei der Verwendung von PyQtGraph mit Python Pyside die Reihenfolge des Imports
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
SSH-Anmeldung am Zielserver von Windows mit einem Klick auf eine Verknüpfung