___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.
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.
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.
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
--Shebang ist erforderlich
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
Wahrscheinlich der verwirrendste Fehlercode. Hier sind zwei Dinge, die am häufigsten im Fehlerprotokoll angezeigt werden.
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.
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.
-Ist der Port des Routers offen?
sudo ufw allow 80
Lassen Sie uns diese Möglichkeiten noch einmal untersuchen.