Instalowanie FCGIWRAP i włączenie języków dynamicznych Perla, Ruby i Bash na gentoo Lemp

Instalowanie FCGIWRAP i włączenie języków dynamicznych Perla, Ruby i Bash na gentoo Lemp

Ten samouczek jest ściśle związany z poprzednim instalacją LEMP na Gentoo i traktuje inne rozszerzone problemy serwera, takie jak włączenie dynamicznych języków skryptowych, takich jak Perl, Bash lub Ruby FCGIWRAP GATEAY, i edytuj pliki konfiguracyjne hostów wirtualnych Nginx, aby obsługiwać dynamiczną zawartość za pomocą .pl, .RB I .CGI Skrypty.

Zainstaluj FCGIWRAP z Perl, Ruby i Bash

Wymagania

  1. Stack Lemp zainstalowany na gentoo - https: // www.Tecmint.com/install-lemp-in-gentoo-linux/

Krok 1: Włącz fcgiwrap na gentoo lemp

Fcgiwrap jest częścią Nginx FastCGI Common Gateway Interface Które przetwarzają inne dynamiczne języki skryptów, takie jak Perl, Bash lub Ruby Scripts, działają według żądań przetwarzania otrzymanych od Nginx, za pośrednictwem gniazda TCP lub UNIX, w sposób niezależny i zwraca wynikowy wynik z powrotem do Nginx, który pod kątem przekazywał odpowiedzi Powrót do klientów.

1. Zacznijmy od zainstalowania Fccgiwrap Proces na Gentoo Linux za pomocą następującego polecenia.

# Emerge-Zakochaj WWW-MISC/FCGIWRAP
Zainstaluj pakiet FCCGIWRAP

2. Domyślnie pakiet FCGIWRAP nie zapewnia żadnych w tym Skrypty na Gentoo w celu zarządzania procesem. Po skompilowaniu i zainstalowaniu pakietów Utwórz następujące w tym Skrypty, które pomagają zarządzać procesem FCGIWRAP za pomocą trzech podejść: albo uruchomienie procesu za pomocą za pomocą Gniazda domeny unix lub za pomocą lokalnego Gniazda TCP lub używając obu jednocześnie.

Korzystanie z skryptu gniazda TCP

Utwórz plik init na /etc/init.D/ Ścieżka z następującą zawartością pliku.

# nano /etc /init.D/fcgiwrap

Dodaj następującą zawartość pliku.

#!/sbin/runscript ip = "0.0.0.0 "port =" 12345 "start () ebegin" Uruchamianie procesu fcgiwrap… "/usr/sbin/fcgiwrap -s tcp: $ ip: $ port & tcp_sock =" netstat -tulpn | GREP FCGIWRAP „Echo” Szczegóły gniazda: $ tcp_sock ”Eend $? „Błędy napotkano podczas uruchamiania procesu FCGIWRAP” stop () ebegin "zatrzymanie procesu fcgiwrap…" pid = "ps a | grep fcgiwrap | grep tcp | cut -d" "-f1" zabójcy 1 $ PID tcp_sock = " netstat -tulpn | grep fcgiwrap "Jeśli test $ tcp_sock = 2> /dev /null; Następnie echo „Proces FCGIWRAP pomyślnie zatrzymał” tcp_sock = "netstat -atulpn | grep $ port" Jeśli test $ tcp_sock = 2> /dev /null; Następnie echo „No Otwórz połączenie FCGIWRAP Znaleziono…” Else Echo ”Poczekaj, aż zamknie FCGIWRAP Open Connections… Sprawdź za pomocą„ Status ”„ Echo -e ”Szczegóły gniazda: \ N $ TCP_SOCK„ FI Else Echo ”Proces FCGIWARP wciąż działa!Szczegóły gniazda „echo”: $ tcp_sock ”fi eend $? „Błędy napotkano podczas zatrzymywania procesu FCGIWRAP…” status () ebegin ”Proces fcgiwrap…" tcp_sock = "netstat -atulpn | grep $ port" if test $ tcp_sock = 2> /dev /null; Następnie echo „proces FCGIWRAP nie działa„ Else Echo ”Proces FCGIWARP!Szczegóły gniazda „echo -e”: \ n $ tcp_sock ”fi eend $? „Napotkano błędy podczas zatrzymywania procesu FCGIWRAP…”
Korzystanie z skryptu gniazda TCP

Jak widać, plik skryptu ma odpowiednio dwie zmienne na początku ip I Port. Zmień te zmienne na własne potrzeby i upewnij się, że nie pokrywają się z innymi usługami w systemie, zwłaszcza zmiennej portu - domyślnie tutaj jest 12345 - odpowiednio zmień.

Za pomocą 0.0.0.0 W zmiennej IP umożliwia procesowi wiązanie i słuchanie dowolnego adresu IP (dostępny na zewnątrz, jeśli nie masz zapory), ale ze względów bezpieczeństwa należy ją zmienić, aby słuchać tylko lokalnie, na 127.0.0.1, Chyba że masz inne powody, takie jak zdalnie konfiguracja bramy FCGIWRAP na innym węźle do wydajności lub równoważenia obciążenia.

3. Po utworzeniu pliku dołącz uprawnienia do wykonania i zarządzaj procesem demona za pomocą przełączników Start, Stop lub Status. Przełącznik stanu pokaże odpowiednie informacje o gnieździe, takie jak Porta IP Połącz słucha, a jeśli jakiekolwiek aktywne połączenie za inicjowane. Ponadto, jeśli proces ma aktywne połączenia w CZAS OCZEKIWANIA stwierdzić, że nie możesz go ponownie uruchomić, dopóki wszystkie połączenia TCP nie zostaną zamknięte.

# chmod +x /etc /init.d/fcgiwrap # serwis start fcgiwrap #/etc/init.D/FCGIWRAP Status
Uruchom usługę FCGIWRAP
Używając skryptu gniazda UNIX

Jak przedstawiono wcześniej FCGIWRAP może działać jednocześnie za pomocą obu gniazd, więc nieznacznie zmieni nazwę drugiego skryptu na FCGIWRAP-Unix-Socket, Aby upewnić się, że oba można uruchomić i uruchomić w tym samym czasie.

# nano /etc /init.D/Fcgiwrap-Unix-Socket

Użyj następującej zawartości pliku dla gniazda Unix.

#!/sbin/runscript sock_detail = "ps a | grep fcgiwrap-nux | head -1" start () ebegin "Uruchamianie procesu FCGIWRAP-Socket…"/usr/sbin/fcgiwrap -s unix:/run/fcgiwrap-unix.Sock & Sleep 2 /bin /chown nginx: nginx /run /fcgiwrap-unix.Sock Sleep 1 Sock = "ls -al /run /fcgiwrap -dzielność.Sock „Echo” Szczegóły gniazda: $ Sock ”Eend $? „Błędy napotkano podczas uruchamiania procesu FCGIWRAP” stop () ebegin "zatrzymanie procesu FCGIWRAP -SOLIX -SOLE…" pid = "ps a | grep fcgiwrap | grep unix | cut -d" "-f1" rm -f /run /Fcgiwrap-Unix.Sock Kill -s 1 $ pid echo "Proces fcgiwrap pomyślnie zatrzymany" #killall/usr/sbin/fcgiwrap sleep 1 echo "Szczegóły gniazda: $ Sock" Eend $? „Błędy napotkano podczas zatrzymywania procesu FCGIWRAP…” Status () Ebegin ”Status FCGIWRAP-SOLIX-Socket Proces.skarpetka; Następnie Echo „Proces jest uruchamiany z gniazdem: $ sock_detail„ else echo ”proces FCGIWRAP nie działa!„Fi Eend $? „Napotkano błędy podczas zatrzymywania procesu FCGIWRAP…”
Używając skryptu gniazda UNIX

4. Ponownie zapewnij, że ten plik jest wykonywalny i użyj tych samych przełączników usług: początek, zatrzymywać się Lub status. Ustawiłem domyślną ścieżkę dla tego gniazda /run/fcgiwrap-unix.skarpetka ścieżka systemowa. Rozpocznij proces i zweryfikuj go za pomocą status przełącznik lub lista /uruchomić zawartość katalogu i zlokalizuj gniazdo lub używaj Ps -a | GREP FCGIWRAP Komenda.

# chmod +x /etc /init.D/FCGIWRAP-Unix-Socket # Service Start Fcgiwrap-Unix-Socket #/etc/init.D/Fcgiwrap-Unix-Socket Status # ps -a | GREP FCGIWRAP
Rozpocznij i zweryfikuj FCGIWRAP

Jak wspomniano wcześniej FCGIWRAP, może działać zarówno z gniazdem TCP, jak i Unix jednocześnie, ale jeśli nie potrzebujesz zewnętrznych połączeń bramkowych Gniazdo domeny Unix Tylko dlatego, że wykorzystuje komunikację międzyprocesową, która jest szybsza niż komunikacja w połączeniach z pętlą TCP, i używa mniejszych kosztów TCP.

Gniazdo domeny Unix

Krok 2: Włącz skrypty CGI na Nginx

5. Aby Nginx analizował i uruchamiać skrypty Perl lub Bash przez szybki interfejs Gateway, wirtualne hosty muszą być skonfigurowane z definicją FCGIWRAP na podstawowych instrukcjach ścieżki lub lokalizacji.

Przykład jest przedstawiony poniżej (LocalHost), który aktywuje skrypty Perla i CGI na wszystkich plikach umieszczonych na ścieżce głównej (/var/www/localhost/htdocs/) z .pl I .CGI rozszerzenie za pomocą gniazda TCP FCGIWRAP dla domyślnej ścieżki dokumentów root, druga lokalizacja za pomocą Gniazda domeny unix, z indeks.pl Plik i trzecia lokalizacja używa Gniazda TCP z indeks.CGI plik.

Umieść następującą zawartość lub tylko niektóre części, w żądanym wirtualnym pliku konfiguracyjnym hosta fastcgi_pass Oświadczenie argumentu.

# nano/etc/nginx/witryny-dostępny/localhost.conf

Edytować Lokalny Gospodarz.conf wyglądać w poniższym szablonie.

serwer Słuchaj 80; Server_name LocalHost; access_log/var/log/nginx/localhost_access_log main; błąd_log/var/log/nginx/localhost_error_log info; root/var/www/localhost/htdocs/; lokalizacja / autoIndex on; indeks indeksu.Indeks HTML.Indeks HTM.php;  ## Php -fpm Gateway ### Lokalizacja ~ \.php $ try_files $ uri = 404; obejmują/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 9001;  ## FCGIWRAP Gateway na wszystkich plikach pod rootem za pomocą gniazda TCP ### Lokalizacja ~ \.(PL | CGI | RB) $ ​​fastcgi_index indeks.Indeks CGI.pl; obejmują/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 12345;  ## FCGIWRAP Gateway na wszystkich plikach w drugim folderze głównym z indeksem.PL przy użyciu gniazda unix ### lokalizacja /sekunda indeks indeksowy.pl; root/var/www/localhost/htdocs/; Lokalizacja ~ \.(PL | CGI | RB) $ ​​include/etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/fcgiwrap-unix.skarpetka; fastcgi_param script_filename $ dokument_root $ fastcgi_script_name;  ## FCGIWRAP Gateway na wszystkich plikach w trzecim folderze głównym z indeksem.CGI za pomocą gniazd TCP ### Lokalizacja /trzeci indeks indeksowy.CGI; Lokalizacja ~ \.(PL | CGI | RB) $ ​​include/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 12345; 

6. Po zakończeniu edycji Nginx Lokalny Gospodarz.conf, lub swój konkretny plik konfiguracyjny wirtualnego hosta, przenieś Domyślną ścieżkę główną dokumentu, utwórz te dwa foldery, aby odzwierciedlić instrukcję lokalizacji i utwórz pliki indeksu dla każdej lokalizacji z jego konkretnym rozszerzeniem.

# cd/var/www/localhost/htdocs # mkdir drugi trzeci

Tworzyć indeks.pl Plik w drugiej lokalizacji z następującą zawartością.

# nano/var/www/localhost/htdocs/second/indeks.pl

Dodaj tę zawartość, aby uzyskać zmienne środowiskowe.

#!/usr/bin/perl print "content-typ: text/html \ n \ n"; wydrukować <Indeks Perl CGI w drugiej lokalizacji ze zmiennymi ENV  Html print "content-type: text/html \ n \ n"; Foreach my $ klawisze (sort klawisze %env) print "$ keys = $ env $ keys
\ n "; exit;

Następnie stwórz indeks.CGI Plik w trzeciej lokalizacji z następującą zawartością.

# nano/var/www/localhost/htdocs/trzeci/indeks.CGI

Dodaj tę zawartość, aby uzyskać zmienne środowiskowe.

#!/bin/bash echo Treści-Type: Text/HTML ECHO „CAT << EOF  Bash script 
 

Indeks CGI Bash w trzeciej lokalizacji ze zmiennymi ENV

EOF Env Cat << EOF EOF

7. Po zakończeniu edycji uczyń oba pliki wykonywalne, uruchom ponownie serwer Nginx i upewnij się, że oba gniazda FCGIWRAP są uruchomione.

# chmod +x/var/www/localhost/htdocs/second/index.PL # chmod +x/var/www/localhost/htdocs/trzeci/indeks.CGI # Service nginx restart # usługa fcgiwrap start # serwis FCGIWRAP-SUTIX-Socket Start

Następnie przekieruj lokalną przeglądarkę po następstwie URL.

http: // localhost http: // localhost/second/http: // localhost/trzeci/

Wynik powinien pojawić się jak na poniższych zrzutach ekranu.

Sprawdź katalog CGI Strona indeksu Perl CGI Strona indeksu Bash CGI

8. Jeśli wszystko jest na miejscu i poprawnie skonfigurowane, włącz oba demony FCGIWRAP do automatycznego uruchomienia, po ponownym uruchomieniu, wydając następujące polecenia (w przypadku skonfigurowania Nginx do używania obu skarpet CGI).

# rc-update Dodaj fcgiwrap domyślnie # rc-update Dodaj fcgiwrap-unix-socket default

Krok 3: Aktywuj obsługę Ruby na FCGIWRAP

9. Jeśli chcesz uruchomić dynamiczne skrypty Ruby na Nginx FCGI, musisz zainstalować Rubin Interpreter on Gentoo z następującym poleceniem.

# Emerge -Zakłysk Ruby
Zainstaluj Ruby Interpreter

10. Po skompilowaniu i zainstalowaniu pakietu przejdź do Nginx Witryny-dostępne i edytuj Lokalny Gospodarz.conf Plik, dołączając następujące stwierdzenia przed ostatnim nawiasem kręconym „”, który aktywuje obsługę uruchamiania skryptów Ruby w czwartej lokalizacji w domyślnej ścieżce głównej dokumentu obsługiwanego przez Nginx LocalHost.

# nano/etc/nginx/witryny-dostępny/localhost.conf

Użyj następujących dyrektyw Nginx.

## FCGIWRAP Gateway na wszystkich plikach pod czwartym folderem głównym z indeksem.RB w ramach gniazda TCP ### Lokalizacja /czwarty indeks indeksowy.RB; Lokalizacja ~ \.RB $ wlicz/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 12345;  ## Last Curly Bracket, który zamyka definicje serwera Nginx ##
Włącz obsługę Ruby na FCGIWRAP

11. Teraz, aby przetestować konfigurację Utwórz czwarty katalog poniżej /var/www/localhost/htdocs ścieżka, utwórz wykonywalny skrypt rubinowy z .RB rozszerzenie i dodaj następującą zawartość.

# mkdir/var/www/localhost/htdocs/czwarty # nano/var/www/localhost/htdocs/czwarty/indeks.RB

Indeks Ruby.RB Przykład.

#!/usr/bin/ruby umieszcza „http/1.0 200 OK „PUPS” Content-Type: Text/html \ n \ n „Puts„ Ruby Script ”Puts”
„Puts”

Indeks Ruby CGI w czwartej lokalizacji ze zmiennymi ENV

„System („ env ”)

12. Po dodaniu uprawnień do wykonania w pliku uruchom demona Nginx, aby zastosować konfiguracje.

# chmod +x/var/www/localhost/htdocs/czwarty/indeks.RB # Service nginx restart

Otwórz przeglądarkę i przejdź do adresu URL http: // localhost/czwarty/, które powinny przedstawić następujące treści.

Strona indeksu Ruby CGI

To wszystko na razie skonfigurowałeś Nginx do obsługi dynamicznych skryptów Perl, Ruby i Bash na bramie FastCGI, ale pamiętaj, że uruchomienie tego rodzaju interpretowanych skryptów na bramie nginx CGI może być niebezpieczne i nakładać poważne ryzyko bezpieczeństwa na serwerze, ponieważ one są one Uruchom przy użyciu aktywnych powłok pod twoim systemem, ale może rozszerzyć statyczną barierę nałożoną przez statyczne HTML, dodając dynamiczną funkcjonalność do Twojej witryny.