Namestitev FcgiWrap in omogočanje dinamičnih jezikov Perl, Ruby in Bash na Gentoo LEMP
Ta vadnica je strogo povezana s prejšnjo o namestitvi LEMP na Gentoo in obravnava druge razširjene težave strežnika, kot je omogočanje dinamičnih skriptnih jezikov, kot sta Perl ali Bash ali Ruby Prehod Fcgiwrapin uredite konfiguracijske datoteke Nginx Virtual Hosts za uporabo z dinamično vsebino .pl, .rb in .cgi skripte.
Namestite FcgiWrap s programi Perl, Ruby in Bash
Zahteve
LEMP sklad nameščen na Gentoo - https://www.tecmint.com/install-lemp-in-gentoo-linux/
1. korak: Omogočite FCGIWRAP na Gentoo LEMP
Fcgiwrap je del Nginx FastCGI vmesnik skupnega prehoda ki obdeluje druge dinamične skriptne jezike, na primer skripte Perl ali Bash ali Ruby, deluje tako, da obdeluje zahteve, prejete od Nginx, prek TCP ali Unix Sockets, na neodvisen način in vrne proizvedeni rezultat nazaj v Nginx, ki bo v prihodnosti posredoval odgovore od začetka do konca stranke.
1. Začnimo z namestitvijo FCcgiwrap postopek v sistemu Gentoo Linux z naslednjim ukazom.
# emerge-vprašajte www-misc/fcgiwrap
Namestite paket FCcgiwrap
2. Paket Fcgiwrap privzeto ne vsebuje nobenega v skripti v Gentoo za upravljanje procesa. Ko so paketi sestavljeni in nameščeni, ustvarite naslednje v skripte, ki vam pomagajo pri upravljanju procesa Fcgiwrap z uporabo treh pristopov: bodisi zagon procesa z uporabo Unix domenske vtičnice ali z uporabo lokalnega TCP vtičnice ali z uporabo obeh hkrati.
Uporaba skripta vtičnice TCP
Ustvarite datoteko init na /etc/init.d/ pot z naslednjo vsebino datoteke.
# nano /etc/init.d/fcgiwrap
Dodajte naslednjo vsebino datoteke.
#!/sbin/runscript ip = "0.0.0.0" port = "12345" start () { ebegin "Zagon procesa fcgiwrap ..."/usr/sbin/fcgiwrap -s tcp: $ ip: $ port & tcp_sock = `netstat -tulpn | grep fcgiwrap` echo "Podrobnosti o vtičnici: $ tcp_sock" eend $? "Pri zagonu procesa fcgiwrap je prišlo do napak" } stop () { ebegin "Ustavitev procesa fcgiwrap ..." pid = `ps a | grep fcgiwrap | grep tcp | cut -d "" -f1` kill -s 1 $ pid tcp_sock = `netstat -tulpn | grep fcgiwrap`, če je test $ tcp_sock = 2> /dev /null; nato odmev "Proces Fcgiwrap je uspešno ustavljen" tcp_sock = `netstat -atulpn | grep $ port`, če je test $ tcp_sock = 2> /dev /null; nato echo "No open fcgiwrap connection found ..." else echo "Počakajte, da zaprete odprte povezave fcgiwrap... preverite z 'status' "echo -e" Podrobnosti vtičnice: \ n $ tcp_sock "fi else echo" Proces Fcgiwarp še vedno teče! "echo" Podrobnosti vtičnice: $ tcp_sock "fi. eend $? "Pri zaustavitvi procesa fcgiwrap je prišlo do napak ..." } stanje() { ebegin "Status fcgiwrap process ..." tcp_sock = `netstat -atulpn | grep $ port`, če je test $ tcp_sock = 2> /dev /null; potem odmeva "Proces Fcgiwrap se ne izvaja" drugače odmeva "Proces Fcgiwarp teče!" echo -e "Podrobnosti o vtičnici: \ n $ tcp_sock" fi. eend $? "Pri zaustavitvi procesa fcgiwrap je prišlo do napak ..." }
Uporaba skripta vtičnice TCP
Kot lahko vidite, skriptna datoteka na začetku vsebuje dve spremenljivki ip in pristanišče. Spremenite te spremenljivke glede na svoje potrebe in se prepričajte, da se ne prekrivajo z drugimi storitvami v vašem sistemu, zlasti s spremenljivko vrat - tukaj je privzeto 12345 - ustrezno spremeniti.
Uporaba 0.0.0.0 na spremenljivki IP omogoča, da se postopek poveže in posluša na katerem koli IP -ju (dostopen zunaj, če nimate požarnega zidu), vendar ga zaradi varnostnih razlogov spremenite tako, da posluša samo lokalno, na 127.0.0.1, razen če imate druge razloge, kot je oddaljena nastavitev prehoda Fcgiwrap na drugem vozlišču za izvajanje zmogljivosti ali uravnoteženje obremenitve.
3. Ko je datoteka ustvarjena, dodajte izvedbena dovoljenja in upravljajte demonski proces s stikali za zagon, ustavitev ali stanje. Stikalo stanja vam prikaže ustrezne informacije o vtičnici, kot so IP-PORT seznanite, če posluša in če je inicializirana katera koli aktivna povezava. Tudi če ima proces aktivne povezave TIME_WAIT stanje, da ga ne morete znova zagnati, dokler se vse povezave TCP ne zaprejo.
Kot je bilo predstavljeno prej, se lahko Fcgiwrap izvaja hkrati z obema vtičnicama, zato bo ime drugega skripta nekoliko spremenjeno v fcgiwrap-unix-socket, da zagotovite, da se lahko oba hkrati zaženeta in zaženeta.
# nano /etc/init.d/fcgiwrap-unix-socket
Za vtičnico UNIX uporabite naslednjo vsebino datoteke.
#!/sbin/runscript. sock_detail = `ps a | grep fcgiwrap-unix | head -1` start () { ebegin "Zagon procesa fcgiwrap-unix-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-unix.sock` echo" Podrobnosti vtičnice: $ nogavica " eend $? "Pri zagonu procesa fcgiwrap je prišlo do napak" } stop () { ebegin "Ustavitev procesa fcgiwrap-unix-socket ..." pid = `ps a | grep fcgiwrap | grep unix | cut -d "" -f1` rm -f /run/fcgiwrap-unix.sock kill -s 1 $ pid echo "Proces Fcgiwrap je uspešno ustavljen" #killall/usr/sbin/fcgiwrap sleep 1 echo "Podrobnosti o vtičnici: $ sock" eend $? "Pri zaustavitvi procesa fcgiwrap je prišlo do napak ..." } stanje() { ebegin "Status fcgiwrap-unix-socket process ..." če test -S /run/fcgiwrap-unix.sock; nato echo "Proces se zažene z vtičnico: $ sock_detail" else echo "Proces Fcgiwrap se ne izvaja!" fi. eend $? "Pri zaustavitvi procesa fcgiwrap je prišlo do napak ..." }
Uporaba skripta Unix Socket
4. Še enkrat zagotovite, da je ta datoteka izvedljiva in uporabite ista stikala za storitve: začetek, ustaviti ali stanje. Privzeto pot za to vtičnico sem nastavil na /run/fcgiwrap-unix.sock sistemska pot. Zaženite postopek in ga preverite z uporabo stanje stikalo ali seznam /run imenika in poiščite vtičnico ali uporabite ps -a | grep fcgiwrap ukaz.
# chmod +x /etc/init.d/fcgiwrap-unix-socket. # začetek storitve fcgiwrap-unix-socket. # /etc/init.d/fcgiwrap-unix-socket status. # ps -a | grep fcgiwrap
Zaženite in preverite Fcgiwrap
Kot smo že omenili, lahko Fcgiwrap deluje hkrati z vtičnicami TCP in UNIX, če pa ne potrebujete povezav z zunanjimi prehodi, se držite Unix domenska vtičnica samo zato, ker uporablja medprocesno komunikacijo, ki je hitrejša od komunikacije prek povezav TCP loopback in uporablja manj stroškov TCP.
Unix domenska vtičnica
Korak: Omogočite skripte CGI v Nginxu
5. Če želite Nginx razčleniti in zagnati skripte Perl ali Bash prek vmesnika Fast Common Gateway, morate navidezne gostitelje konfigurirati z definicijami Fcgiwrap na korenski poti ali stavkih lokacije.
Spodaj je predstavljen primer (localhost), ki aktivira skripte Perl in CGI za vse datoteke, postavljene na korensko pot (/var/www/localhost/htdocs/) z .pl in .cgi razširitev z uporabo Fcgiwrap TCP Sockets za privzeto pot korenskega dokumenta, drugo mesto z uporabo Unix domenske vtičnice, z index.pl datoteko in uporablja tretjo lokacijo TCP vtičnice z index.cgi mapa.
Naslednjo vsebino ali le njene dele postavite v želeno konfiguracijsko datoteko Virtual Host, ki jo imate želite aktivirati dinamične skripte Perl ali Bash z vtičnicami UNIX ali TCP na različnih lokacijah do spreminjanje fastcgi_pass trditev argumenta.
# nano /etc/nginx/sites-available/localhost.conf
Uredi localhost.conf videti kot v spodnji predlogi.
strežnik {poslušaj 80; server_name localhost; access_log/var/log/nginx/localhost_access_log main; error_log/var/log/nginx/localhost_error_log info; root/var/www/localhost/htdocs/; lokacija / {samodejni indeks vklopljen; index index.html index.htm index.php; } ## PHP –FPM prehod ### lokacija ~ \ .php $ {try_files $ uri = 404; vključujejo /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:9001; } ## Prehod Fcgiwrap za vse datoteke pod korenom s podnožji TCP ### lokacija ~ \. (pl | cgi | rb) $ {fastcgi_index index.cgi index.pl; vključujejo /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:12345; } ## Prehod Fcgiwrap za vse datoteke v drugi korenski mapi z index.pl z uporabo vtičnic UNIX ### lokacija /sekunda {index index.pl; root/var/www/localhost/htdocs/; lokacija ~ \. (pl | cgi | rb) $ {include /etc/nginx/fastcgi.conf; fastcgi_pass unix: /run/fcgiwrap-unix.sock; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; }} ## Prehod Fcgiwrap na vseh datotekah v korenski tretji mapi z index.cgi z vtičnicami TCP ### lokacija /tretji {index index.cgi; lokacija ~ \. (pl | cgi | rb) $ {include /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:12345; } }
6. Ko končate urejanje Nginxa localhost.confali konfiguracijsko datoteko navideznega gostitelja se pomaknite na privzeto pot dokumenta spletnega mesta in jih ustvarite dve mapi, ki odražata vašo lokacijsko izjavo, in ustvarite indeksne datoteke za vsako lokacijo z njeno specifiko podaljšek.
# cd/var/www/localhost/htdocs. # mkdir druga tretjina
Ustvari index.pl datoteko na drugi lokaciji z naslednjo vsebino.
# nano /var/www/localhost/htdocs/second/index.pl
Dodajte to vsebino, da dobite spremenljivke okolja.
Rezultat bi moral biti prikazan kot na spodnjih posnetkih zaslona.
Preverite imenik CGIIndeksna stran Perl CGIBash indeksna stran CGI
8. Če je vse na svojem mestu in pravilno konfigurirano, omogočite samodejno zagon obeh demonov Fcgiwrap, po ponovnem zagonu z izdajo naslednjih ukazov (če ste Nginx konfigurirali za uporabo obeh CGI vtičnice).
9. Če morate zagnati dinamične skripte Ruby na Nginx FCGI, morate namestiti Ruby tolmač v Gentoo z naslednjim ukazom.
# emerge -vprašajte rubin
Namestite Ruby Interpreter
10. Ko je paket sestavljen in nameščen, pojdite na Nginx spletna mesta-na voljo in uredite localhost.conf datoteko z dodajanjem naslednjih stavkov pred zadnjim ukrivljenim oklepajem “ } ”, ki aktivira podporo za izvajanje skriptov Ruby na četrtem mestu pod privzeto korensko potjo dokumenta, ki jo posreduje Nginx localhost.
# nano /etc/nginx/sites-available/localhost.conf
Uporabite naslednje Nginx direktive.
## Fcgiwrap Gateway za vse datoteke v korenski četrti mapi z index.rb pod vtičnicami TCP ### lokacija /četrta {index index.rb; lokacija ~ \ .rb $ {include /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:12345; }} ## Zadnji zavit oklepaj, ki zapre definicije strežnika Nginx ## }
Omogočite podporo Ruby na Fcgiwrapu
11. Zdaj za preskus konfiguracije ustvarite četrti imenik pod /var/www/localhost/htdocs pot, ustvarite izvedljiv skript Ruby index s .rb razširitev in dodajte naslednjo vsebino.
Odprite brskalnik in se pomaknite do URL -ja http://localhost/fourth/, ki bi vam morala predstaviti naslednjo vsebino.
Ruby CGI Index Page
To je to zaenkrat, Nginx ste konfigurirali za posluževanje dinamičnih skriptov Perl, Ruby in Bash na prehodu FastCGI, vendar se zavedajte, da se izvaja tovrstni interpretirani skripti na Nginx CGI Gateway so lahko nevarni in resno ogrožajo varnost vašega strežnika, ker se izvajajo z uporabo aktivnih lupin v vašem sistemu, lahko pa razširite statično oviro, ki jo nalaga statični HTML, in vašemu spletnemu mestu doda dinamično funkcionalnost.