07-01-2024, 07:37
CGI auf Webserver ausführbar machen
Heute, am 22.07.2021, habe ich es endlich geschafft, im Browser ein cgi-Script aufzurufen.
Geholfen hat mir diese Webseite:
https://www.server-world.info/en/note?os...=httpd&f=2
Ich bin mir nicht sicher, ob ich alles richtig verstanden habe. Eigentlich kenne ich das so, dass es auf dem Webserver (/var/www/html) einen Ordner /cgi-bin gibt.
Die Webseite arbeitet aber mit dem Ordner /cgi-enabled.
Alle meine Versuche hier auf dem Desktop-Rechner als auch auf dem Notebook haben ergeben, dass ich diesen Ordner /cgi-enabled nutzen muss. Der Ordner /cgi-bin funktioniert nicht.
Auch kann ich nicht meinen normalen User zur Anlage von Ordner und z.B. index.cgi nutzen. Die Ordner als auch die Dateien werden mit dem root erstellt und dann über chmod 705 entsprechen berechtigt.
Nur das funktioniert.
Wenn ich den Ordner /cgi-bin so in die Abläufe einbaue, wird später im Browser gezeigt, dass die URL nicht vorhanden ist.
Mit dem Ordner /cgi-enabled wird die Testseite angezeigt:
[attachment=47]
Ich werde noch weitersuchen und mal prüfen, ob ich das anders hätte hinbekommen können.
---
Das ist die Historie der BASH, aus der ich die wichtigen Befehlszeilen herausfiltern werde, um eine Dokumentation zu schreiben:
Das eine ist nämlich die Verfügbarkeit von CGI auf dem System, das andere ist die Möglichkeit, um CGI auch auf dem Webserver ausführen zu können. Das sind zwei verschiedene Dinge.
In der Datei cgi-enabled.conf habe ich neben cgi und pl nun auch py eingetragen, um auch Pythonscripte im Browser möglich zu machen. Das funktioniert auch:
[attachment=48]
Damit CGI überhaupt machbar ist, ist dieser Ablauf wohl wichtig:
[attachment=49]
Warum und wieso das alles root-Rechten geschehen muss, habe ich noch nicht verstanden.
Die Sache mit dem Webserver kann dann aus dem folgenden Screener abgelesen werden:
[attachment=50]
So hat es auf dem Desktop-Rechner und auf dem Linux-Notebook funktioniert. Zumindest in Sachen CGI und Perl.
Heute, am 22.07.2021, habe ich es endlich geschafft, im Browser ein cgi-Script aufzurufen.
Geholfen hat mir diese Webseite:
https://www.server-world.info/en/note?os...=httpd&f=2
Ich bin mir nicht sicher, ob ich alles richtig verstanden habe. Eigentlich kenne ich das so, dass es auf dem Webserver (/var/www/html) einen Ordner /cgi-bin gibt.
Die Webseite arbeitet aber mit dem Ordner /cgi-enabled.
Alle meine Versuche hier auf dem Desktop-Rechner als auch auf dem Notebook haben ergeben, dass ich diesen Ordner /cgi-enabled nutzen muss. Der Ordner /cgi-bin funktioniert nicht.
Auch kann ich nicht meinen normalen User zur Anlage von Ordner und z.B. index.cgi nutzen. Die Ordner als auch die Dateien werden mit dem root erstellt und dann über chmod 705 entsprechen berechtigt.
Nur das funktioniert.
Wenn ich den Ordner /cgi-bin so in die Abläufe einbaue, wird später im Browser gezeigt, dass die URL nicht vorhanden ist.
Mit dem Ordner /cgi-enabled wird die Testseite angezeigt:
[attachment=47]
Ich werde noch weitersuchen und mal prüfen, ob ich das anders hätte hinbekommen können.
---
Das ist die Historie der BASH, aus der ich die wichtigen Befehlszeilen herausfiltern werde, um eine Dokumentation zu schreiben:
Show Content
Spoiler
> 480 cat > /usr/lib/cgi-bin/test_script <<'EOF'
481 #!/usr/bin/perl
482 print "Content-type: text/html\n\n";
483 print "Hello CGI\n";
484 EOF
485 ls -l
486 chmod 705 /usr/lib/cgi-bin/test_script
487 curl http://localhost/cgi-bin/test_script
488 a2enmod cgid
489 sudo a2enmod cgid
490 systemctl restart apache2
491 curl http://localhost/cgi-bin/test_script
492 nano vi /etc/apache2/conf-available/cgi-enabled.conf
493 nano /etc/apache2/conf-available/cgi-enabled.conf
494 sudo a2enconf cgi-bin
495 sudo a2enconf cgi-enabled
496 systemctl restart apache2
497 exit
498 cd ..
499 mkdir /media/django/webserver/cgi-enabled
500 a2enconf cgi-enabled
501 sudo a2enconf cgi-enabled
502 sudo a2disconf cgi-enabled
503 systemctl restart apache2
504 sudo a2enconf cgi-enabled
505 systemctl restart apache2
506 nano /media/django/webserver/cgi-enabled/index.cgi
507 chmod 705 /media/django/webserver/cgi-enabled/index.cgi
508 ls -l
509 cd cgi-enabled/
510 ls -l
511 sudo a2disconf cgi-enabled
512 systemctl restart apache2
513 cd ..
514 mkdir cgi-bin
515 sudo a2enconf cgi-bin
516 systemctl restart apache2
517 cd cgi-bin/
518 nano index.cgi
519 ls -l
520 chmod 705 index.cgi
521 ls -l
522 sudo a2enconf cgi-bin
523 systemctl restart apache2
524 sudo a2disconf cgi-bin
525 systemctl restart apache2
526 sudo a2enconf cgi-bin
527 systemctl restart apache2
528 sudo a2disconf cgi-bin
529 systemctl restart apache2
530 cd ..
531 ls -l
532 mkdir cgi-enabled
533 ls -l
534 sudo a2enconf cgi-enabled
535 systemctl restart apache2
536 cd cgi-enabled/
537 nano index.cgi
538 chmod 705 index.cgi
539 ls -l
540 cp index.cgi index.pl
541 nano index.pl
542 cp index.pl index.py
543 nano index.py
544 ls -l
545 sudo a2disconf cgi-enabled
546 systemctl restart apache2
547 sudo a2enconf cgi-enabled
548 systemctl restart apache2
> 480 cat > /usr/lib/cgi-bin/test_script <<'EOF'
481 #!/usr/bin/perl
482 print "Content-type: text/html\n\n";
483 print "Hello CGI\n";
484 EOF
485 ls -l
486 chmod 705 /usr/lib/cgi-bin/test_script
487 curl http://localhost/cgi-bin/test_script
488 a2enmod cgid
489 sudo a2enmod cgid
490 systemctl restart apache2
491 curl http://localhost/cgi-bin/test_script
492 nano vi /etc/apache2/conf-available/cgi-enabled.conf
493 nano /etc/apache2/conf-available/cgi-enabled.conf
494 sudo a2enconf cgi-bin
495 sudo a2enconf cgi-enabled
496 systemctl restart apache2
497 exit
498 cd ..
499 mkdir /media/django/webserver/cgi-enabled
500 a2enconf cgi-enabled
501 sudo a2enconf cgi-enabled
502 sudo a2disconf cgi-enabled
503 systemctl restart apache2
504 sudo a2enconf cgi-enabled
505 systemctl restart apache2
506 nano /media/django/webserver/cgi-enabled/index.cgi
507 chmod 705 /media/django/webserver/cgi-enabled/index.cgi
508 ls -l
509 cd cgi-enabled/
510 ls -l
511 sudo a2disconf cgi-enabled
512 systemctl restart apache2
513 cd ..
514 mkdir cgi-bin
515 sudo a2enconf cgi-bin
516 systemctl restart apache2
517 cd cgi-bin/
518 nano index.cgi
519 ls -l
520 chmod 705 index.cgi
521 ls -l
522 sudo a2enconf cgi-bin
523 systemctl restart apache2
524 sudo a2disconf cgi-bin
525 systemctl restart apache2
526 sudo a2enconf cgi-bin
527 systemctl restart apache2
528 sudo a2disconf cgi-bin
529 systemctl restart apache2
530 cd ..
531 ls -l
532 mkdir cgi-enabled
533 ls -l
534 sudo a2enconf cgi-enabled
535 systemctl restart apache2
536 cd cgi-enabled/
537 nano index.cgi
538 chmod 705 index.cgi
539 ls -l
540 cp index.cgi index.pl
541 nano index.pl
542 cp index.pl index.py
543 nano index.py
544 ls -l
545 sudo a2disconf cgi-enabled
546 systemctl restart apache2
547 sudo a2enconf cgi-enabled
548 systemctl restart apache2
Das eine ist nämlich die Verfügbarkeit von CGI auf dem System, das andere ist die Möglichkeit, um CGI auch auf dem Webserver ausführen zu können. Das sind zwei verschiedene Dinge.
In der Datei cgi-enabled.conf habe ich neben cgi und pl nun auch py eingetragen, um auch Pythonscripte im Browser möglich zu machen. Das funktioniert auch:
[attachment=48]
Damit CGI überhaupt machbar ist, ist dieser Ablauf wohl wichtig:
[attachment=49]
Warum und wieso das alles root-Rechten geschehen muss, habe ich noch nicht verstanden.
Die Sache mit dem Webserver kann dann aus dem folgenden Screener abgelesen werden:
[attachment=50]
So hat es auf dem Desktop-Rechner und auf dem Linux-Notebook funktioniert. Zumindest in Sachen CGI und Perl.