Постављање продуктивног веб сервера на НГИНКС + ПХП-ФПМ

ПХП-ФПМ (брзи менаџер процеса) - Ово је засебна имплементација ФастЦГИ обрађивача за извршавање ПХП скрипти. На основу пакета веб сервера НГИНКС (који обрађује статику) и ПХП-ФПМ, можете да направите бржи и бржи веб сервер за своје веб пројекте у поређењу са класичним НГИНКС пакетом, Апацхеом и мод_пхп модулом (ЛАМП стацк).

Лемп - Скуп софтвера отвореног кода који се обично инсталира заједно да би се покренуо на серверу за хостовање веб локација и веб апликација. Ова скраћеница односи се на скуп Линук оперативног система са веб сервером Нгинк (он замењује Апацхе у чешћем гомилу Лампа), са базом података МиСКЛ (МариаДБ) и ц пхп за обраду динамичких података.

У овом ћемо чланку размотрити инсталирање и оптимизацију ЛЕМП стака да угости учитани веб пројекат на серверу са ЦентОС 7 на основу НГИНКС + ПХП-ФПМ + МариаДБ / МиСКЛ + пакета и инсталирајмо Лет'с Енцрипт цертификат за ССЛ локацију .

Садржај:

  • Веза са спремиштем, ажурирање сервера
  • Инсталирање и конфигурисање Нгинк веб сервера
  • Инсталирајте пхп-фпм и додатне пхп модуле
  • Инсталирајте Лет'с Енцрипт и повежите сертификат
  • Инсталирајте МиСКЛ / МариаДБ на веб сервер
  • Конфигурирање Нгинк и ПХП-ФПМ-а за пројекте високог оптерећења

Веза са спремиштем, ажурирање сервера

Пошто се инсталација врши на новоинсталираном серверу са ЦентОС-ом, морате повезати популарно ЕПЕЛ спремиште и ажурирати све пакете на серверу.

# иум инсталирајте епел-релеасе -и
# иум упдате -и

Спремиште је инсталирано, али пакети за ажурирање нису пронађени јер је инсталирана свежа слика ЦентОС-а.

Инсталирање и конфигурисање Нгинк веб сервера

Да бисте инсталирали најновију верзију Нгинк, повежите спремиште програмера покретањем наредбе:

# рпм -Увх хттп://нгинк.орг/пацкагес/центос/7/ноарцх/РПМС/нгинк-релеасе-центос-7-0.ел7.нгк.ноарцх.рпм

Или креирањем конфигурацијске датотеке спремишта /етц/иум.репос.д/нгинк.репо са следећим садржајем:

[нгинк] наме = нгинк репо басеурл = хттп: //нгинк.орг/пацкагес/центос/7/$басеарцх/ гпгцхецк = 0 омогућено = 1 

Ако користите ЦентОС 8, промените верзију у УРЛ-у.

Инсталирајте Нгинк пакет веб сервера користећи иум (или днф) менаџер пакета:

# иум инсталирајте нгинк -и

Сада можете трчати нгинк и додајте га покретању помоћу системцтл:

# системцтл старт нгинк
# системцтл омогући нгинк

Направљено је повезаност од /етц/системд/систем/мулти-усер.таргет.вантс/нгинк.сервице до /уср/либ/системд/систем/нгинк.сервице.

Да бисте проверили да ли веб сервер ради, отворите ИП адресу сервера у претраживачу.

Ако се ваша тестна страница не отвори, проверите подешавања за дозвољене услуге, портове, зоне у фиреваллд-у на вашем серверу.

Подесите конфигурациону датотеку за засебни домен буилд-центос.инфо. Направите засебан директориј за веб локацију и саму конфигурациону датотеку:

# мкдир -п /вар/ввв/буилд-центос.инфо && мкдир -п /вар/ввв/буилд-центос.инфо/лог

Отворите конфигурациону датотеку:

# нано /етц/нгинк/цонф.д/буилд-центос.инфо.цонф

И додајте следећи садржај:

сервер листе 80; сервер_наме буилд-центос.инфо; роот /вар/ввв/буилд-центос.инфо; индек индек.пхп индек.хтмл индек.хтм; аццесс_лог /вар/ввв/буилд-центос.инфо/лог/аццесс.лог главни; еррор_лог /вар/ввв/буилд-центос.инфо/лог/еррор.лог; локација / повратак 301 хттпс: //буилд-центос.инфо$рекуест_ури;  локација ~ * ^. +. (јс | цсс | пнг | јпг | јпег | гиф | ицо | вофф) $ ретурн 301 хттпс: //буилд-центос.инфо$рекуест_ури;  локација ~ \ .пхп $ ретурн 301 хттпс: //буилд-центос.инфо$рекуест_ури;  локација = /фавицон.ицо лог_нот_фоунд офф; аццесс_лог искључен;  лоцатион = /роботс.ткт преписати ^ /роботс.ткт пауза; дозволи свима; лог_нот_фоунд офф; аццесс_лог искључен;  локација ~ /\.хт одбити све;  сервер листе 80; име сервера ввв.буилд-центос.инфо; преписати ^ хттпс: //буилд-центос.инфо$рекуест_ури? стални;  сервер листе 443 ссл хттп2; сервер_наме буилд-центос.инфо; роот /вар/ввв/буилд-центос.инфо; индек индек.пхп индек.хтмл индек.хтм; аццесс_лог /вар/ввв/буилд-центос.инфо/лог/ссл-аццесс.лог маин; еррор_лог /вар/ввв/буилд-центос.инфо/лог/ссл-еррор.лог; кеепаливе_тимеоут 60; ссл_цертифицате /етц/летсенцрипт/ливе/буилд-центос.инфо/фуллцхаин.пем; ссл_цертифицате_кеи /етц/летсенцрипт/ливе/буилд-центос.инфо/привкеи.пем; ссл_протоцолс ТЛСв1 ТЛСв1.1 ТЛСв1.2; ссл_ципхерс 'ЕЦДХЕ-РСА-АЕС128-ГЦМ-СХА256: ЕЦДХЕ-ЕЦДСА-АЕС128-ГЦМ-СХА256: ЕЦДХЕ-РСА-АЕС256-ГЦМ-СХА384: ЕЦДХЕ-ЕЦДСА-АЕС256-ГЦМ-838-ГЦМ-838-ГЦМ-838-ГЦМ-838-ГЦМ-838- СХА256: ДХЕ-ДСС-АЕС128-ГЦМ-СХА256: кЕДХ + АЕСГЦМ: ЕЦДХЕ-РСА-АЕС128-СХА256: ЕЦДХЕ-ЕЦДСА-АЕС128-СХА256: ЕЦДХЕ-РСА-АЕС128-СХА: ЕЦДХЕ-ЕЦДА-ЕЦДА РСА-АЕС256-СХА384: ЕЦДХЕ-ЕЦДСА-АЕС256-СХА384: ЕЦДХЕ-РСА-АЕС256-СХА: ЕЦДХЕ-ЕЦДСА-АЕС256-СХА: ДХЕ-РСА-АЕС128-СХА256: ДХЕ-РСА-АЕС128-СХА- АЕС128-СХА256: ДХЕ-РСА-АЕС256-СХА256: ДХЕ-ДСС-АЕС256-СХА: ДХЕ-РСА-АЕС256-СХА: АЕС128-ГЦМ-СХА256: АЕС256-ГЦМ-СХА384: АЕС128-СХА256: АЕС256-АЕС256 СХА: АЕС256-СХА: АЕС: ЦАМЕЛЛИА: ДЕС-ЦБЦ3-СХА:! АНУЛЛ:! ЕНУЛЛ:! ЕКСПОРТ:! ДЕС:! РЦ4:! МД5:! ПСК:! АЕЦДХ:! ЕДХ-ДСС-ДЕС-ЦБЦ3-СХА :! ЕДХ-РСА-ДЕС-ЦБЦ3-СХА: КРБ5-ДЕС-ЦБЦ3-СХА '; адд_хеадер Стрицт-Транспорт-Сецурити 'мак-аге = 604800'; лоцатион / три_филес $ ури $ ури / /индек.пхп?$аргс;  локација ~ * ^. +. (јс | цсс | пнг | јпг | јпег | гиф | ицо | вофф) $ аццесс_лог искључен; истјече мак;  локација ~ \ .пхп $ три_филес $ ури = 404; фастцги_пасс уник: /вар/рун/пхп-фпм/пхп-фпм.соцк; фастцги_индек индек.пхп; фастцги_парам ДОЦУМЕНТ_РООТ /вар/ввв/буилд-центос.инфо; фастцги_парам СЦРИПТ_ФИЛЕНАМЕ /вар/ввв/буилд-центос.инфо/$фастцги_сцрипт_наме; фастцги_парам ПАТХ_ТРАНСЛАТЕД /вар/ввв/буилд-центос.инфо/$фастцги_сцрипт_наме; укључују фастцги_парамс; фастцги_парам КУЕРИ_СТРИНГ $ куери_стринг; фастцги_парам РЕКУЕСТ_МЕТХОД $ рекуест_метход; фастцги_парам ЦОНТЕНТ_ТИПЕ $ цонтент_типе; фастцги_парам ЦОНТЕНТ_ЛЕНГТХ $ цонтент_ленгтх; фастцги_парам ХТТПС укључен; фастцги_интерцепт_еррорс укључен; фастцги_игноре_цлиент_аборт искључен; фастцги_цоннецт_тимеоут 60; фастцги_сенд_тимеоут 180; фастцги_реад_тимеоут 180; фастцги_буффер_сизе 128к; фастцги_буфферс 4 256к; фастцги_буси_буфферс_сизе 256к; фастцги_темп_филе_врите_сизе 256к;  локација = /фавицон.ицо лог_нот_фоунд офф; аццесс_лог искључен;  лоцатион = /роботс.ткт дозволи свима; лог_нот_фоунд офф; аццесс_лог искључен;  локација ~ /\.хт одбити све;  сервер листе 443 ссл хттп2; име сервера ввв.буилд-центос.инфо; преписати ^ хттпс: //буилд-центос.инфо$рекуест_ури? стални;  

Конфигурациона датотека садржи подешавања за приступ путем заштићеног хттпс протокола, јер многи популарни ЦМС тренутно раде подразумевано путем њега. У будућности ћемо инсталирати и конфигурирати бесплатни Лет'с Енцрипт ССЛ цертификат (слично инсталирању Лет'с Енцрипт сертификата на ИИС локацији у Виндовс Серверу).

Инсталирајте пхп-фпм и додатне пхп модуле

Нгинк нема уграђени ПХП хандлер, па га морамо инсталирати пхп-фпм и број пхп модула који ће се користити за обраду ПХП скрипти.

Пхп-фпм Ово је веома лаган и брз ПХП процес менаџер. Не користи ХТТП протокол (попут апацхе), и ради са посебним ФастЦГИ протоколом. Због своје лакоће и једноставности, ФПМ вам омогућава да брже обрађујете ПХП захтеве. У овом случају, у поређењу са сличном конфигурацијом са апацхе, користиће се много мање меморије.

Нгинк, заузврат, даје значајан добитак у враћању статике. У нашој конфигурацији, нгник ће деловати као проки сервер (кеширање и фронт-енд сервер), а пхп-фпм ће радити као помоћни сервер.

Да бисте инсталирали најновије верзије пхп-а, користите РЕМИ складиште:

# рпм -ивх хттп://рпмс.фамиллецоллет.цом/ентерприсе/реми-релеасе-7.рпм

Након инсталације, уредите датотеку /етц/иум.репос.д/реми-пхп74.репо:

Покрените инсталацију пхп-фпм и популарни пхп модули:

# иум инсталирај пхп-фпм пхп-цли пхп-мискл пхп-гд пхп-лдап пхп-одбц пхп-пдо пхп-опцацхе пхп-пеар пхп-кмл пхп-кмлрпц пхп-мбстринг пхп-снмп пхп-сапун пхп-зип

Покрените услугу пхп-фпм и додајте га покретању:

# системцтл старт пхп-фпм
# системцтл омогући пхп-фпм

Направљено је повезаност од /етц/системд/систем/мулти-усер.таргет.вантс/пхп-фпм.сервице до /уср/либ/системд/систем/пхп-фпм.сервице.

Да бисте проверили да ли се услуга покренула, можете покренути наредбу:

# лсоф -и: 9000

КОМАНД ПИД КОРИСНИК ФД ВРСТЕ УРЕЂАЈА ТИПКА / ОФФ ОФФ НОДЕ пхп-фпм 1551 роот 7у ИПв4 2078435 0т0 ТЦП лоцалхост: цслистенер (ЛИСТЕН) пхп-фпм 1552 апацхе 9у ИПв4 2078435 0т0 ТЦП лоцалхост: цслистеп (ЛИСТ) 2078435 0т0 ТЦП лоцалхост: цслистенер (ЛИСТЕН) пхп-фпм 1554 апацхе 9у ИПв4 2078435 0т0 ТЦП лоцалхост: цслистенер (ЛИСТЕН) пхп-фпм 1555 апацхе 9у ИПв4 2078435 0т0 ТЦП лоцалхост: цслистеп (ЛИСТЕН) ТЦП лоцалхост: цслистенер (ЛИСТЕН)

Услуга пхп-фпм треба проћи кроз Уник утичницу. У конфигурацијској датотеци /етц/пхп-фпм.д/ввв.цонф избришите линију листе = 127.0.0.1:9000 и додајте:

Листен = /вар/рун/пхп-фпм/пхп-фпм.соцк листе.моде = 0660 листе.овнер = нгинк листе.гроуп = нгинк

Да бисте покренули пхп-фпм не од корисника апацхе (подразумевано), наведите следеће параметре у конфигурацијској датотеци:

корисник = нгинк група = нгинк

Након промене конфигурације пхп-фпм, морате поново покренути услугу:

# системцтл поново покрените пхп-фпм

Инсталирајте Лет'с Енцрипт и повежите сертификат

Да бисте издали бесплатан сертификат Лет'с Енцрипт, морате инсталирати потребан цертбот.

# иум инсталирајте цертбот

Затим урадите:

# цертбот цертонли

Након извршења команде, требате да попуните све податке, специфицирајући поштански сандучић, домену и тако даље:

# цертбот цертонли

Спремање дневника исправке у /вар/лог/летсенцрипт/летсенцрипт.лог Како желите да се аутентификујете са АЦМЕ ЦА? -------------------------------------------------- ----------------------------- 1: Спин уп привремени веб сервер (самостални) 2: Поставите датотеке у веброот директориј (веброот) - -------------------------------------------------- ---------------------------- Изаберите одговарајући број [1-2], а затим [унесите] (притисните 'ц' да бисте отказали): 1 Изабрани додаци: Аутхентицатор самостални, Инсталлер Ноне Унесите адресу е-поште (користи се за хитну обнову и обавештења о безбедности) (унесите 'ц' да бисте отказали): тест@гмаил.цом Покретање нове ХТТПС везе (1): ацме-в01.апи.летсенцрипт .орг ------------------------------------------------ ------------------------------- Молимо прочитајте Услове коришћења услуге на хттпс://летсенцрипт.орг/доцументс/ЛЕ- СА-в1.1.1-август-1-2016.пдф. Морате се сложити да бисте се регистровали на АЦМЕ серверу на хттпс://ацме-в01.апи.летсенцрипт.орг/дирецтори ----------------------- -------------------------------------------------- ------ (А) грее / (Ц) анцел: А --------------------------------- ---------------------------------------------- Да ли бисте били вољни да поделите своју адресу е-поште са Елецтрониц Фронтиер Фоундатион, оснивачим пројектом Лет'с Енцрипт пројекта и непрофитном организацијом која развија Цертбот? Желели бисмо да вам пошаљемо е-пошту о ЕФФ-у и нашем раду на шифровању веба, заштити његових корисника и одбрани дигиталних права. -------------------------------------------------- ----------------------------- (И) ес / (Н) о: Н Молимо унесите своје име домена ( зарез и / или размак одвојени) (Унесите 'ц' да бисте отказали): буилд-центос.инфо Добијање новог сертификата Извођење следећих изазова: тлс-сни-01 изазов за буилд-центос.инфо Чекање на верификацију ... Чишћење изазова ВАЖНО НАПОМЕНЕ: - Честитам! Ваш сертификат и ланац су сачувани на: /етц/летсенцрипт/ливе/буилд-центос.инфо/фуллцхаин.пем Ваша кључна датотека је сачувана на: /етц/летсенцрипт/ливе/буилд-центос.инфо/привкеи.пем церт истиче до 2018-01-24. Да бисте убудуће добили нову или измењену верзију овог сертификата, једноставно поново покрените цертбот. Да неинтерактивно обнављате * све * своје цертификате, покрените „цертбот ренев“ - Акредитиве вашег налога су сачуване у вашем Цертбот конфигурационом директоријуму на / етц / летсенцрипт. Сада би требали направити сигурну сигурносну копију ове мапе. Овај директоријум за конфигурацију такође ће садржати сертификате и приватне кључеве које је добио Цертбот па је идеална израда редовитих резервних копија ове мапе. 

Да би сертификат био исправно издат, ваш домен мора да постоји и да је усмерен на одговарајући веб сервер.

Након издавања сертификата, поново покрените нгинк веб сервер и проверите резултат.

# системцтл поново покрените нгинк

Веза у прегледачу је сигурна.!

Да бисте аутоматски обновили сертификате, промените конфигурациону датотеку /етц/летсенцрипт/реневал/буилд-центос.инфо.цонф како слиједи:

# ренев_бефоре_екпири = 30 дана
верзија = 0.18.1
арцхиве_дир = / етц / летсенцрипт / арцхиве / буилд-центос.инфо
церт = /етц/летсенцрипт/ливе/буилд-центос.инфо/церт.пем
привкеи = /етц/летсенцрипт/ливе/буилд-центос.инфо/привкеи.пем
ланац = /етц/летсенцрипт/ливе/буилд-центос.инфо/цхаин.пем
фуллцхаин = /етц/летсенцрипт/ливе/буилд-центос.инфо/фуллцхаин.пем

# Опције које се користе у поступку обнове
[обнављање парама]
аутхентатор = веброот
инсталлер = Ноне
аццоунт = е9ц86е6аа57б45ф9614бц7ц0015927а5
пост_хоок = нгинк -с поново учитава
[[веброот_мап]]
ввв.буилд-центос.инфо = /вар/ввв/буилд-центос.инфо
буилд-центос.инфо = /вар/ввв/буилд-центос.инфо

Након промене датотеке додајте задатак круни:

30 2 * * * роот / уср / бин / цертбот обнови --пост-кука "нгинк -с релоад"

Да бих потврдио да нгинк ради са пхп-ом, креирао сам индек.пхп датотеку и додао је:

Инсталирајте МиСКЛ / МариаДБ на веб сервер

Овај корак ћемо у потпуности прескочити, јер веб локација већ садржи чланак о инсталирању и подешавању МариаДБ. Искористите је.

Конфигурирање Нгинк и ПХП-ФПМ-а за пројекте високог оптерећења

Да би ваш веб сервер радио са високим перформансама и био у могућности да обради велики број захтева клијената, један хардвер није довољан. Важно је правилно конфигурирати рад снопа нгинк и пхп-фпм.

Подешавање Нгинк-а

Отвори датотеку /етц/нгинк/нгинк.цонф и промените конфигурацију Нгинк-а на следећи начин:

  • радни процеси 2; - подесите број радних процеса једнак броју језгара на серверу.
  • Воркинг_цоннецтионс 1024; - одређује број веза у једном радном току. Подесите вредности од 1024 до 4096.
  • користите еполл; - оптимални начин повезивања за Линук.
  • мулти_аццепт укључен; - нгинк ће прихватити максимални број веза.

ХТТП блок:

  • тцп_ноделаи укључен; - шаље заглавља и почетак датотеке у једној групи.
  • тцп_нопусх укључен;

За пројекте који садрже велики број статичких датотека, обавезно омогућите компримирање гзип-а:

гзип он;

Додајте велики број типова датотека тако да прођу све провере гооглеспеед-а:
гзип_типес апликација / атом + кмл апликација / јавасцрипт текст / јавасцрипт апликација / јсон апликација / лд + јсон апликација / манифест + јсон апликација / рсс + кмл апликација / внд.гео + јсон фонт / ттф апликација / к-фонт-ттф апликација / внд .мс-фонтобјецт апликација / фонт-вофф апликација / фонт-вофф2 апликација / к-веб-апп-манифест + јсон апликација / кхтмл + кмл апликација / кмл фонт / опентипе имаге / бмп имаге / свг + кмл имаге / к-тект тект / цацхе-манифест тект / цсс тект / плаин тект / вцард тект / внд.рим.лоцатион.клоц тект / внд.вап.вмл тект / втт тект / к-компонентни текст / к-цросс-домаин-полици;

Подешавање компресије ће убрзати ваш пројекат.

  • кеепаливе_тимеоут 30; - веб сервер ће сачекати 30 секунди пре затварања кеепаливе везе
  • кеепаливе_рекуестс 100; - максимални број захтева за одржавање једног клијента
  • ресет_тимедоут_цоннецтион укључено; - омогућите ову опцију ако не желите да се ресетира веза са клијента која је престала да одговара.
  • цлиент_боди_тимеоут 10; - веб сервер ће чекати 10 секунди за потврду захтева клијента, након тог времена веза ће бити ресетована.
  • сенд_тимеоут 2; - ако клијент престане да чита одговор са веб сервера, нгинк ће ресетовати везу са њим.

Ако ваша веб локација не омогућава преузимање великих датотека, ограничите ово на нгинк:

  • цлиент_мак_боди_сизе 2м; - сервер неће прихватити захтеве веће од 2 МБ.

Ако се садржај на вашем пројекту не мења често, можете користити кеширање "истјече мак;„Или додајте одговарајућу опцију у конфигурациону датотеку свог домаћина за жељени тип датотеке, на пример:

локација ~ * ^. +. (јс | цсс | пнг | јпг | јпег | гиф | ицо | вофф) $
истиче 7д;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~

Кеш меморија за одређене типове датотека биће сачуван 7 дана. Помоћу ове функције можете управљати кеш меморијом. Након свих модификација, не заборавите да поново покренете нгинк:

# системцтл поново покрените нгинк

Подешавање пхп-фпм-а

Када инсталирате пхп-фпм, одмах сте је пребацили у уник соцкет. То даје значајно повећање продуктивности. Према проценама, продуктивност расте 2-3 пута. Остатак пхп-фпм параметара потребно је конфигурирати за сваки пројекат засебно, размотрите пример подешавања за сервер са 1024 МБ меморије.

За пхп-фпм можемо издвојити око 512 мб, а остатак ћемо оставити под базом података и нгинк.

За конфигурациону датотеку /етц/пхп-фпм/ввв.цонф, додај:

  • пм.мак_цхилдрен = 18 - максимални број дечијих процеса
  • пм.старт_серверс = 6 - број подређених процеса креираних при покретању
  • пм.мин_спаре_серверс = 4 - минимални број неактивних серверских процеса
  • пм.мак_спаре_серверс = 16 - максимални број неактивних серверских процеса
  • пм.мак_рекуестс = 400 - број захтева надређеног процеса након чега ће се поступак поново покренути.

Сви параметри морају бити промењени током анализе оптерећења на вашем пројекту, ове вредности су теоретске.

На тренутном серверу сам одмах инсталирао најновију верзију ЦМС Битрик-а како бих тестирао перформансе. По мом мишљењу, ово је ЦМС са највише ресурса и резултати нису лоши, имајући у виду да је ово виртуелна машина на КВМ-у са једним језгром (вЦПУ) и 1024 РАМ-а:

Нисам насликао оптимизацију МариаДБ поставки, пошто постоји одговарајући чланак на веб локацији. Формирао сам параметре за мој.цнф према чланку и база података је показала одличне резултате.

Када покренете сајт, приметићете голим очима да ће нгинк + пхп-фпм обрадити ваше захтеве и вратити странице много брже од апацхе2 + мод_пхп. Ако током подешавања сервера имате прилику да спроведете стрес тестове, то ће несумњиво бити плус, али ако то није могуће, можете да промените подешавања за своје ресурсе на основу нашег приручника.