Problem z Perlem i Apache2.
#1

[Mody proszę przenieś mój wątek, jeśli jestem w niewłaściwej sekcji]   Cześć forumiści. Początkujący tutaj.   Mam problem z wdrożeniem witryny opartej na perlu na pulpicie Ubuntu 11.10 ze stosem LAMP i zainstalowanym mod_perl (nowa instalacja, nic więcej na nim).   Przeglądając niezliczone strony internetowe i książki, wiem, że muszę utworzyć folder cgi-bin i włożyć pliki stron internetowych, ale ciągle napotykam błąd 404, gdy próbuję nawigować do niego w mojej wewnętrznej sieci LAN. Próbowałem wielu rzeczy; dodając wiersze do httpd.conf, przesuwając korzeń cgi-bin, ale nic nie działa.   Sprawdziłem z właścicielami kodu źródłowego, że witryna Perla powinna być „plug-and-play”, co oznacza, że wszystko, co musisz zrobić, aby uruchomić podstawową instancję, to włożyć ją do cgi-bin, ale to nie wydaje się niech tak będzie dla mnie. Dziwnie działa PHP, ale Perl odmawia.   Chciałbym głównie wiedzieć: Jaki jest najprostszy sposób implementacji Perla na Apache? Nieco bardziej szczegółowe kroki byłyby mile widziane, ponieważ widziałem zbyt wiele mylących samouczków.   Po raz pierwszy próbuję radzić sobie z dynamicznymi stronami internetowymi, zwykle mam statyczną stronę internetową na Apache (lol)   Czy ktoś może doradzić? Dzięki.
Reply
#2

Zelretch napisał: [Mody proszę przenieś mój wątek, jeśli jestem w niewłaściwej sekcji] Cześć forumiści. Początkujący tutaj. Mam problem z wdrożeniem witryny opartej na perlu na pulpicie Ubuntu 11.10 ze stosem LAMP i zainstalowanym mod_perl (nowa instalacja, nic więcej na nim). Przeglądając niezliczone strony internetowe i książki, wiem, że muszę utworzyć folder cgi-bin i włożyć pliki stron internetowych, ale ciągle napotykam błąd 404, gdy próbuję nawigować do niego w mojej wewnętrznej sieci LAN. Próbowałem wielu rzeczy; dodając wiersze do httpd.conf, przesuwając korzeń cgi-bin, ale nic nie działa. Sprawdziłem z właścicielami kodu źródłowego, że witryna Perla nie powinna być „plug-and-play”, co oznacza, że wszystko, co musisz zrobić, aby uruchomić podstawową instancję, to włożyć ją do cgi-bin, ale to nie wydaje się niech tak będzie dla mnie. Dziwnie działa PHP, ale Perl odmawia. Chciałbym głównie wiedzieć: Jaki jest najprostszy sposób implementacji Perla na Apache? Nieco bardziej szczegółowe kroki byłyby mile widziane, ponieważ widziałem zbyt wiele mylących samouczków. Po raz pierwszy próbuję radzić sobie z dynamicznymi stronami internetowymi, zwykle mam statyczną stronę internetową na Apache (lol) Czy ktoś może doradzić? Dzięki. mod_perl nie wymaga, aby moduły perla znajdowały się w określonym katalogu. PHP nie powinno tego również wymagać. Użycie mod_perl to nie to samo, co wywołanie zewnętrznego interpretera cgi perl w celu uruchomienia kodu. Czy możesz napisać przykładowy kod, jak wygląda twój skrypt perla? Jeśli używasz mod_perl, powinien on wyglądać podobnie do tego, choć niekoniecznie, w zależności od tego, jak bardzo odbiegasz od domyślnych. Kod PHP: pakiet MyPackage :: MyModule; sub handler {my ($ r) = @ _; # Twoje kody obsługi} W pliku http.conf lub w innych dołączonych plikach konfiguracyjnych powinieneś mieć podobną konfigurację poniżej. Również poniżej nie ma absolutnego sposobu konfiguracji, istnieją też inne podejścia. Kod PHP: <Location / testmod> PerlResponseHandler MyPackage :: MyModule -> handler; </ Lokalizacja> Jeśli używasz CGI, kod perla powinien być czymś takim Kod PHP: #! / usr / bin / perl use strict; używać ostrzeżeń; # Twoje kody Perla tutaj.
Reply
#3

davidktw napisał: mod_perl nie wymaga, aby moduły perla znajdowały się w określonym katalogu. PHP nie powinno tego również wymagać. Użycie mod_perl to nie to samo, co wywołanie zewnętrznego interpretera cgi perl w celu uruchomienia kodu. Rozumiem dzięki. Gdzie mam wtedy umieścić moduły perla? / var / www zrobi? Zacytować: Czy możesz napisać przykładowy kod, jak wygląda twój skrypt perla? Jeśli używasz mod_perl, powinien on wyglądać podobnie do tego, choć niekoniecznie, w zależności od tego, jak bardzo odbiegasz od domyślnych. Naukę perla zacząłem dopiero kilka tygodni temu, więc nie zmodyfikowałem głównego pliku. W szczególności próbuję zaimplementować podstawową grafikę (pełny plik Perla tutaj): Kod PHP: #! / usr / bin / perl use CGI :: Carp qw (fatalsToBrowser); stosować ścisłe; użyj CGI; użyj DBI; Zacytować: W pliku http.conf lub w innych dołączonych plikach konfiguracyjnych powinieneś mieć podobną konfigurację poniżej. Również poniżej nie ma absolutnego sposobu konfiguracji, istnieją też inne podejścia. Kod PHP: <Location / testmod> PerlResponseHandler MyPackage :: MyModule -> handler; </ Lokalizacja> Jeśli używasz CGI, kod perla powinien być czymś takim Nie mam powyższych wierszy w apache2.conf lub httpd.conf (httpd.conf był pusty, obecnie jest zaśmiecony losowymi fragmentami kodu, które wyrwałem z sieci, próbując rozwiązać problem). Teraz, kiedy wspomniałeś, że nie potrzebuję folderu cgi-bin dla mod_perl, wróciłem do pytania, że nie wiem, co robić
Reply
#4

do instalacji mod_perl dla platformy ubuntu, łatwiej będzie uruchomić pakiety z Internetu Indeks / dyst
Reply
#5

kcongxi napisał: do instalacji mod_perl dla platformy ubuntu, łatwiej będzie uruchomić pakiety z Internetu Indeks / dyst Ciekawe, czy wiesz o co pyta TS?
Reply
#6

Zelretch napisał: Rozumiem dzięki. Gdzie mam wtedy umieścić moduły perla? / var / www zrobi? Naukę perla zacząłem dopiero kilka tygodni temu, więc nie zmodyfikowałem głównego pliku. W szczególności próbuję zaimplementować podstawową grafikę (pełny plik Perla tutaj): Kod PHP: #! / usr / bin / perl use CGI :: Carp qw (fatalsToBrowser); stosować ścisłe; użyj CGI; użyj DBI; Nie mam powyższych wierszy w apache2.conf lub httpd.conf (httpd.conf był pusty, obecnie jest zaśmiecony losowymi fragmentami kodu, które wyrwałem z sieci, próbując rozwiązać problem). Teraz, kiedy wspomniałeś, że nie potrzebuję folderu cgi-bin dla mod_perl, wróciłem do pytania, że nie wiem, co robić Nie polecam, abyś zaczął modperl, dopóki nie opanujesz perla jako pierwszego. Istnieją pewne ograniczenia dotyczące zakresu, z którymi należy się uporać przy kodowaniu w modperl. Również bloki kodu BEGIN, END i tak dalej nie działają dokładnie w porównaniu z kodowaniem w normalnym trybie perla. Więc właściwie używasz CGI, a nie modperl. Wydaje mi się, że zainstalowałeś serwer apache przy użyciu „apt-get install apache2”, prawda? W Ubuntu domyślne ustawienie dla cgi-bin znajduje się w / usr / lib / cgi-bin / Na początek przechowuj skrypty cgi w / usr / lib / cgi-bin / Daję ci prosty przykład znaleziony tutaj Kod: #! / usr / bin / perl stosować ścisłe; używać ostrzeżeń; print "Content-Type: text / plain \ n \ n"; wydrukuj „Hello World \ n”; użyj „chmod”, upewnij się, że skrypt perla jest wykonywalny jako taki. (Zakładając, że skrypt to „test.pl”) Kod: chmod 0755 /usr/lib/cgi-bin/test.pl Uzyskaj dostęp do tego skryptu za pomocą Kod: http: //YOURHOSTIP/cgi-bin/test.pl Jeśli zobaczysz wydrukowane „Hello World”, powinno być w porządku.
Reply
#7

Tylko po to, aby dostarczyć ci więcej informacji. Zawsze sprawdzaj dzienniki dostępu i dzienniki błędów, aby uzyskać więcej informacji o tym, co poszło źle Kod: tail -f / var / log / apache2 / * To, czego używasz teraz, to po prostu normalny CGI, nie jest to modperl, o którym właśnie wspomniałem. Zasadniczo wszystko, co robi serwer WWW Apache, to rozwidlenie innego procesu i wykonanie pliku binarnego podanego w powłoce. W przypadku skryptów powłoka wykona odpowiedni interpreter lub plik binarny, który odczyta plik skryptu. Daję ci kilka przykładów do zademonstrowania dostęp za pomocą http: //YOUR_HOST_IP/cgi-bin/test.sh Kod: #! / usr / bin / env sh echo „Content-Type: text / plain \ n” echo „Hello World” dostęp za pomocą http: //YOUR_HOST_IP/cgi-bin/test.awk Kod: #! / usr / bin / awk -f ZACZYNAĆ { drukuj „Content-Type: text / plain \ n”; wydrukuj „Hello World”; } Możesz nawet wrzucić skompilowany kod C, gdzie kod jest jako taki dostęp za pomocą http: // YOUR_HOST_IP / cgi-bin / test Kod: #include <stdio.h> int main (int argc, char ** argv) { printf ("Content-Type: text / plain \ n \ n"); printf („Hello World \ n”); zwraca 0; } Skompiluj powyższe, używając „gcc -o test test.c”
Reply
#8

Właściwie przeszedłem Apache2 przez LAMPę zadań, ale spróbuję. To spowodowało wewnętrzny błąd serwera nawet po usunięciu mod_perl, myślę, że przeinstaluję system i spróbuję.
Reply
#9

Zelretch napisał: Właściwie przeszedłem Apache2 przez LAMPę zadań, ale spróbuję. To spowodowało wewnętrzny błąd serwera nawet po usunięciu mod_perl, myślę, że przeinstaluję system i spróbuję. Nie musisz usuwać modperla, nawet go nie używasz. Wewnętrzny błąd serwera wynika z tego, że skrypt nie jest wykonywalny lub nie ma odpowiednich uprawnień. Twój apache powinien być domyślnie uruchomiony przy użyciu następującego użytkownika i grupy w Ubuntu Kod: uid = 33 (www-data) gid = 33 (www-data) grupy = 33 (www-data) Upewnij się, że skrypt jest wykonywalny Kod: ls /usr/lib/cgi-bin/test.pl -rwxr-xr-x 1 root root 100 kwi 23 21:23 test.pl Zauważ, że mój skrypt jest własnością roota. Ale sprawiłem, że INNI mogą to przeczytać i wykonać. Jeśli twój skrypt jest własnością www-data: www-data, wtedy twój skrypt musi mieć uprawnienia „0700”. Mam nadzieję, że rozumiesz, co próbuję ci powiedzieć.
Reply
#10

Hej, wielkie dzięki. Udało mi się uruchomić podstawową strukturę. Teraz moje ostatnie pytanie brzmi: jakie uprawnienia powinienem ustawić dla zawartości wewnątrz cgi-bin? Ponieważ niektóre funkcje są wyłączone z powodu błędu: Nie można zapisać do katalogu, który, jak zakładam, jest cgi-bin.
Reply


Forum Jump:

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5


Users browsing this thread: 2 Guest(s)