Овај водич је стриктно повезан са претходним о ЛЕМП инсталацији на Гентоо -у и бави се другим проблемима проширеним на серверу, као што је омогућавање динамичких скриптних језика као што су Перл или Басх или Руби кроз Фцгиврап Гатеваии уредите конфигурацијске датотеке Нгинк Виртуал Хостс за послуживање динамичког садржаја помоћу .пл, .рб и .цги скрипте.
Фцгиврап је део Нгинк ФастЦГИ Цоммон Гатеваи Интерфаце који обрађују друге динамичке скриптне језике, попут Перл или Басх или Руби скрипти, ради тако што обрађује захтеве примљене од Нгинк -а, преко ТЦП -а или Уник Соцкетс, на независан начин и враћа произведене резултате натраг у Нгинк, који ће, на крају, проследити одговоре на крај клијентима.
1. Почнимо са инсталирањем ФЦцгиврап процес на Гентоо Линук -у помоћу следеће наредбе.
# емерге --аск ввв-мисц/фцгиврап
2. Подразумевано Фцгиврап пакет не пружа ниједан у томе скрипте на Гентоо -у за управљање процесом. Након што су пакети састављени и инсталирани, направите следеће у томе скрипте које вам помажу да управљате процесом Фцгиврап користећи три приступа: или покретање процеса помоћу Уник домени утичнице или помоћу локалног ТЦП утичнице или користећи обоје истовремено.
Креирајте инит датотеку на /etc/init.d/ путању са следећим садржајем датотеке.
# нано /етц/инит.д/фцгиврап
Додајте следећи садржај датотеке.
#!/сбин/рунсцрипт ип = "0.0.0.0" порт = "12345" старт () { ебегин "Покретање процеса фцгиврап ..."/уср/сбин/фцгиврап -с тцп: $ ип: $ порт & тцп_соцк = `нетстат -тулпн | греп фцгиврап` ецхо "Детаљи утичнице: $ тцп_соцк" еенд $? "Дошло је до грешака при покретању процеса фцгиврап" } зауставити() { ебегин "Заустављање процеса фцгиврап ..." пид = `пс а | греп фцгиврап | греп тцп | цут -д "" -ф1` килл -с 1 $ пид тцп_соцк = `нетстат -тулпн | греп фцгиврап` иф тест $ тцп_соцк = 2> /дев /нулл; онда ецхо "Фцгиврап процес успешно заустављен" тцп_соцк = `нетстат -атулпн | греп $ порт` иф тест $ тцп_соцк = 2> /дев /нулл; онда ецхо "Није пронађена отворена фцгиврап веза ..." елсе ецхо "Сачекајте да затворите фцгиврап отворене везе... проверите са 'статус' "ецхо -е" Детаљи утичнице: \ н $ тцп_соцк "фи елсе ецхо" Процес Фцгиварп је још увек у току! "ецхо" Детаљи утичнице: $ тцп_соцк "фи. еенд $? "Дошло је до грешака при заустављању процеса фцгиврап ..." } статус () { ебегин "Статус фцгиврап процесс ..." тцп_соцк = `нетстат -атулпн | греп $ порт` иф тест $ тцп_соцк = 2> /дев /нулл; онда ецхо "Фцгиврап процес не ради" елсе ецхо "Фцгиварп процесс ис руннинг!" ецхо -е "Детаљи о утичници: \ н $ тцп_соцк" фи. еенд $? "Дошло је до грешака при заустављању процеса фцгиврап ..." }
Као што видите, датотека скрипте садржи две променљиве на почетку ип и Лука. Промените ове променљиве према сопственим потребама и уверите се да се не преклапају са другим услугама на вашем систему, посебно променљивом порта - овде је подразумевано 12345 - промените у складу с тим.
Користећи 0.0.0.0 на ИП променљивој омогућава процес повезивања и слушања на било којој ИП адреси (споља доступна ако немате заштитни зид), али из безбедносних разлога треба да је промените тако да слуша само локално, на 127.0.0.1, осим ако немате других разлога, као што је даљинско постављање Фцгиврап гатеваи -а на другом чвору за перформансе или уравнотежење оптерећења.
3. Након што се датотека креира, додајте дозволе за извршавање и управљајте демонским процесом помоћу прекидача за покретање, заустављање или статуса. Статусни прекидач ће вам показати релевантне информације о утичници, као што су ИП-ПОРТ упарите оно што слуша и ако је покренута било каква активна веза. Такође, ако процес има активне везе у ВРЕМЕ ЧЕКАЊА Наведите да га не можете поново покренути док се све ТЦП везе не затворе.
# цхмод +к /етц/инит.д/фцгиврап. # сервис покрените фцгиврап. # /етц/инит.д/фцгиврап статус
Као што је раније представљено, Фцгиврап може радити истовремено користећи оба прикључка, па ће мало променити име друге скрипте у фцгиврап-уник-соцкет, како би се осигурало да се обоје може покренути и покренути истовремено.
# нано /етц/инит.д/фцгиврап-уник-соцкет
Користите следећи садржај датотеке за УНИКС утичницу.
#!/сбин/рунсцрипт. соцк_детаил = `пс а | греп фцгиврап-уник | хеад -1` старт () { ебегин "Покретање процеса фцгиврап-уник-соцкет ..."/уср/сбин/фцгиврап -с уник: /рун/фцгиврап-уник.соцк & слееп 2 /бин/цховн нгинк: нгинк /рун/фцгиврап-уник.соцк слееп 1 соцк = `лс -ал/рун/фцгиврап-уник.соцк` ецхо" Детаљи утичнице: $ чарапа " еенд $? "Дошло је до грешака при покретању процеса фцгиврап" } зауставити() { ебегин "Заустављање процеса фцгиврап-уник-соцкет ..." пид = `пс а | греп фцгиврап | греп уник | цут -д "" -ф1` рм -ф /рун/фцгиврап-уник.соцк килл -с 1 $ пид ецхо "Процес Фцгиврап је успешно заустављен" #киллалл/уср/сбин/фцгиврап слееп 1 ецхо "Детаљи утичнице: $ соцк" еенд $? "Дошло је до грешака при заустављању процеса фцгиврап ..." } статус () { ебегин "Статус фцгиврап-уник-соцкет процесс ..." иф тест -С /рун/фцгиврап-уник.соцк; онда ецхо "Процес је покренут са утичницом: $ соцк_детаил" елсе ецхо "Фцгиврап процес не ради!" фи. еенд $? "Дошло је до грешака при заустављању процеса фцгиврап ..." }
4. Поново уверите се да је ова датотека извршна и користите исте сервисне прекидаче: почетак, зауставити или статус. Укључио сам подразумевану путању за ову утичницу /run/fcgiwrap-unix.sock системска путања. Покрените процес и проверите га помоћу статус прекидач или листа /run директоријума и лоцирајте утичницу или користите пс -а | греп фцгиврап команда.
# цхмод +к /етц/инит.д/фцгиврап-уник-соцкет. # сервис старт фцгиврап-уник-соцкет. # /етц/инит.д/фцгиврап-уник-соцкет статус. # пс -а | греп фцгиврап
Као што је раније поменуто, Фцгиврап може радити истовремено са ТЦП и УНИКС утичницама, али ако вам не требају везе са спољним мрежним пролазом, држите се Уник домен утичница само зато што користи међупроцесну комуникацију, која је бржа од комуникације преко ТЦП лоопбацк веза, и користи мање ТЦП режије.
5. Да би Нгинк могао да рашчлањује и покреће Перл или Басх скрипте преко Фаст Цоммон Гатеваи Интерфаце -а, виртуелни домаћини морају бити конфигурисани са Фцгиврап дефиницијама на роот стази или изразима локације.
У наставку је приказан пример (лоцалхост), који активира Перл и ЦГИ скрипте на свим датотекама смештеним на роот стази (/var/www/localhost/htdocs/) са .пл и .цги проширење користећи Фцгиврап ТЦП утичнице за подразумевану путању коријенског документа, другу локацију користећи Уник домени утичнице, са индек.пл датотеку и користи се трећа локација ТЦП утичнице са индек.цги филе.
Поставите следећи садржај или само неке његове делове у жељену конфигурацијску датотеку Виртуал Хост желите да активирате динамичке Перл или Басх скрипте са УНИКС или ТЦП утичницама на различитим локацијама, до модификујући фастцги_пасс аргумент аргумент.
# нано /етц/нгинк/ситес-аваилабле/лоцалхост.цонф
Уредити лоцалхост.цонф да изгледа као у предлошку испод.
сервер {слушај 80; сервер_наме лоцалхост; аццесс_лог/вар/лог/нгинк/лоцалхост_аццесс_лог маин; еррор_лог/вар/лог/нгинк/лоцалхост_еррор_лог инфо; роот/вар/ввв/лоцалхост/хтдоцс/; локација / {аутоиндекс укључен; индек индек.хтмл индек.хтм индек.пхп; } ## ПХП –ФПМ Гатеваи ### локација ~ \ .пхп $ {три_филес $ ури = 404; инцлуде /етц/нгинк/фастцги.цонф; фастцги_пасс 127.0.0.1:9001; } ## Фцгиврап Гатеваи на свим датотекама под роот -ом са ТЦП утичницама ### локација ~ \. (пл | цги | рб) $ {фастцги_индек индек.цги индек.пл; инцлуде /етц/нгинк/фастцги.цонф; фастцги_пасс 127.0.0.1:12345; } ## Фцгиврап Гатеваи на свим датотекама у роот директоријуму са индек.пл коришћењем УНИКС сокета ### локација /секунда {индек индек.пл; роот/вар/ввв/лоцалхост/хтдоцс/; локација ~ \. (пл | цги | рб) $ {инцлуде /етц/нгинк/фастцги.цонф; фастцги_пасс уник: /рун/фцгиврап-уник.соцк; фастцги_парам СЦРИПТ_ФИЛЕНАМЕ $ доцумент_роот $ фастцги_сцрипт_наме; }} ## Фцгиврап Гатеваи на свим датотекама у трећој основној фасцикли са индек.цги помоћу ТЦП утичница ### локација /треће {индек индек.цги; локација ~ \. (пл | цги | рб) $ {инцлуде /етц/нгинк/фастцги.цонф; фастцги_пасс 127.0.0.1:12345; } }
6. Након што завршите уређивање Нгинк -а лоцалхост.цонф, или вашу одређену конфигурацијску датотеку Виртуал Хост, пређите на подразумевану основну путању документа веб локације и креирајте их две фасцикле које одражавају вашу изјаву о локацији и креирајте индексне датотеке за сваку локацију са њеном специфичношћу продужетак.
# цд/вар/ввв/лоцалхост/хтдоцс. # мкдир друга трећина
Креирај индек.пл датотеку на другој локацији са следећим садржајем.
# нано /вар/ввв/лоцалхост/хтдоцс/сецонд/индек.пл
Додајте овај садржај да бисте добили променљиве окружења.
#!/уср/бин/перл. принт "Цонтент-типе: тект/хтмл \ н \ н"; принт <Перл Индек ХТМЛ. принт "Цонтент-типе: тект/хтмл \ н \ н"; фореацх ми $ кеис (сортирај кључеве %ЕНВ) {принт "$ кеис = $ ЕНВ {$ кеис}Перл ЦГИ индекс на другој локацији са енв променљивим
\ н "; } екит;
Затим креирајте индек.цги датотеку на трећој локацији са следећим садржајем.
# нано /вар/ввв/лоцалхост/хтдоцс/тхирд/индек.цги
Додајте овај садржај да бисте добили променљиве окружења.
#!/бин/басх. ецхо Врста садржаја: текст/хтмл. одјек "" цат << ЕОФ.Басх скрипта ЕОФЕОФ. енв. цат << ЕОФ.БАСХ ЦГИ индекс на трећој локацији са енв променљивим
7. Када завршите уређивање, учините обе датотеке извршним, поново покрените Нгинк сервер и уверите се да су оба Фцгиврап утичнице покренута.
# цхмод +к /вар/ввв/лоцалхост/хтдоцс/сецонд/индек.пл. # цхмод +к /вар/ввв/лоцалхост/хтдоцс/тхирд/индек.цги. # сервис нгинк рестарт. # сервис фцгиврап старт. # сервис фцгиврап-уник-соцкет старт
Затим преусмерите локални прегледач на следећу УРЛ адресу.
http://localhost http://localhost/second/ http://localhost/third/
Резултат би се требао појавити као на снимцима екрана испод.
8. Ако је све на свом месту и исправно конфигурисано, омогућите оба демона Фцгиврап да се аутоматски покрећу, након поновног покретања издавањем следећих команди (у случају да сте конфигурисали Нгинк да користи оба ЦГИ -а утичнице).
# рц-упдате додај фцгиврап подразумевано. # рц-упдате додај фцгиврап-уник-соцкет подразумевано
9. Ако требате покренути динамичке Руби скрипте на Нгинк ФЦГИ, морате их инсталирати Руби тумач на Гентоо -у са следећом командом.
# емерге --питајте рубин
10. Након што је пакет састављен и инсталиран, пређите на Нгинк сајтови-доступни и уредите лоцалхост.цонф датотеку додавањем следећих изјава пре последње увијене заграде “ } ”, који активира подршку за покретање Руби скрипти на четвртој локацији према подразумеваној коренској путањи документа коју служи Нгинк лоцалхост.
# нано /етц/нгинк/ситес-аваилабле/лоцалхост.цонф
Користите следеће Нгинк директиве.
## Фцгиврап Гатеваи на свим датотекама у коренској четвртој фасцикли са индек.рб под ТЦП утичницама ### локација /четврта {индек индек.рб; локација ~ \ .рб $ {инцлуде /етц/нгинк/фастцги.цонф; фастцги_пасс 127.0.0.1:12345; }} ## Последња заграда која затвара дефиниције Нгинк сервера ## }
11. Сада, за тестирање конфигурације, направите четврти директоријум под /var/www/localhost/htdocs патх, креирајте извршну скрипту Руби индекса са .рб проширење и додајте следећи садржај.
# мкдир/вар/ввв/лоцалхост/хтдоцс/четврти. # нано /вар/ввв/лоцалхост/хтдоцс/фоуртх/индек.рб
Пример Руби индек.рб.
#!/уср/бин/рубин. ставља "ХТТП/1.0 200 ОК" ставља "Цонтент-типе: тект/хтмл \ н \ н" ставља "Руби сцрипт " ставља "" ставља "" систем ('енв')Руби ЦГИ индекс на четвртој локацији са енв променљивим
12. Након што додате дозволе за извршавање у датотеку, поново покрените Нгинк демон да бисте применили конфигурације.
# цхмод +к /вар/ввв/лоцалхост/хтдоцс/фоуртх/индек.рб. # сервис нгинк рестартОтворите прегледач и идите на УРЛ http://localhost/fourth/, који би требао да вам представи следећи садржај.
То је то за сада, конфигурисали сте Нгинк да послужује динамичке Перл, Руби и Басх скрипте на ФастЦГИ Гатеваи -у, али имајте на уму да покретање овакве интерпретиране скрипте на Нгинк ЦГИ Гатеваи -у могу бити опасне и наметнути озбиљне безбедносне ризике вашем серверу јер раде користећи активне љуске под вашим системом, али може проширити статичку баријеру коју намеће статички ХТМЛ, додајући динамичку функционалност вашој веб локацији.