Bis PythonCGI unter UbuntuServer18.04 + Apache2 ausgeführt wird

Hintergrund

___Das ist es! Machen wir es CGI! ___ Ich beschloss, mit einem sehr erbärmlichen Prozess zu beginnen. Als ich es tatsächlich ausprobierte, blieb es an einer empfindlichen Stelle hängen, daher werde ich ___ vorstellen, dass es vorerst funktionieren sollte, wenn Sie dieser Straße folgen.

Vorbereitung

Vorbereitung für Apache2

Installation

sudo apt install apache2

Es gibt kein Problem mit dieser einen Zeile. Wenn bei der Installation von Ubuntu Server "LAMP Server" ausgewählt ist, wurde die Installation bereits abgeschlossen und kann ignoriert werden.

Aktivieren Sie das CGI-Modul

user@hostname:~# sudo a2enmod cgid
Enabling module cgid.
To activate the new configuration, you need to run:
  systemctl restart apache2
user@hostname:~# sudo systemctl restart apache2

Wenn die Aktivierung erfolgreich abgeschlossen wurde, wird / usr / lib / cgi-bin als Dokumentenstamm des de CGI erkannt. Der Speicherort unterscheidet sich zu sehr vom normalen Dokumentstamm "/ var / www / html" und ist problematisch. Ändern Sie daher den Dokumentstamm.

Dokumentstamm ändern #optional

Erstellen Sie eine neue Datei.

user@hostname:~# sudo vi /etc/apache2/conf-available/cgi-bin.conf

Inhalt

/etc/apache2/conf-available/cgi-bin.conf


<Directory "/var/www/cgi-bin">
    Options +ExecCGI
    AddHandler cgi-script .cgi .py
</Directory>

Nach der Erstellung muss Apache2 die Konfigurationsdatei erkennen.

user@hostname:~# mkdir /var/www/cgi-bin
user@hostname:~# sudo a2enconf cgi-bin
Enabling conf cgi-bin.
To activate the new configuration, you need to run:
  service apache2 reload
user@hostname:~# sudo systemctl restart apache2

Codierungsnotizen

--Shebang ist erforderlich

Wenn Sie eine Fehlermeldung erhalten

403 Verboten

Die Berechtigungen der Datei sind möglicherweise falsch. Öffnen Sie den Speicherort der Datei im Terminal und legen Sie die Berechtigungen fest.

user@hostname:~# sudo chmod 755 xxx.cgi

500 Interner Serverfehler (Skriptfehler)

Wahrscheinlich der verwirrendste Fehlercode. Hier sind zwei Dinge, die am häufigsten im Fehlerprotokoll angezeigt werden.

1. Das Python-Modul ist nicht installiert

Wenn "ModuleNotFoundError: Kein Modul mit dem Namen" hoge "angezeigt wird, drücken Sie einfach" pip install hoge ". Wenn Sie es nicht mit dem Befehl pip installieren können, können Sie es in Github suchen.

2. Bei der Eingabe von Japanisch tritt ein Fehler auf

In dem Beispiel, auf das ich tatsächlich gestoßen bin, würden nur Zeichen mit halber Breite angezeigt, wenn sie verwendet würden. Wenn jedoch Zeichen mit voller Breite enthalten wären, würde ein Fehler auftreten. Es ist schwierig, im Skript damit umzugehen, da es zum Zeitpunkt des Lesens der Datei auf irgendeine Weise verstümmelt war. Ändern Sie daher die Einstellungen von Apache2.

/etc/apache2/conf-available/charset.conf


#Einzeiliges Postskriptum
AddDefaultCharset UTF-8

Im Falle des Autors wurde dies behoben.

502 Bad Gateway (keine Antwort)

-Ist der Port des Routers offen?

Lassen Sie uns diese Möglichkeiten noch einmal untersuchen.

Recommended Posts

Bis PythonCGI unter UbuntuServer18.04 + Apache2 ausgeführt wird
Bis OSD335X U-Boot auf einer benutzerdefinierten Karte ausführt (Hinweis)
Bis Docker-Compose auf CentOS7
Die Apache-Installation schlägt unter CentOS 8.2 fehl