Prieglobos nustatymas VDS naudojant Ubuntu. Teisingas VDS serverio nustatymas Vds serverio įdiegimas

Šiame straipsnyje apžvelgsime pagrindinius VPS\VDS serverio nustatymo principus. Jei turite klausimą, į kurį straipsnis neatsako, užduokite juos formoje po straipsniu, mes pasistengsime atsakyti el.

  • Virtualaus serverio nustatymas

Kaip iš naujo paleisti VPS\VDS serverį?

Yra du būdai iš naujo paleisti virtualų serverį:

  1. Per valdymo pultą (jei toks yra). Nes Valdymo pultai yra skirtingi, negalime išsamiai pasakyti, kaip tai padaryti.
  2. Prisijunkite prie serverio naudodami PuTTY programą naudodami saugų SSH protokolą ir komandų eilutėje įveskite komandą:

Svarbu suprasti, kad serveris gali persikrauti nuo 1 iki 10 minučių. Kartais serveris užšąla paleidžiant iš naujo, taigi, jei po 10 minučių jūsų svetainės vis tiek neveikia, taip pat nėra prieigos per SSH, susisiekite su prieglobos technine pagalba.

Kokia programinė įranga neveikia virtualiame serveryje?

Naudojamos virtualizacijos technologijos reiškia tam tikrus programinės įrangos diegimo apribojimus. Nes dažnai programos reikalauja dirbti tiesiogiai su aparatine įranga, ir akivaizdu, kad prieglobos serveris negali leisti įdiegti programinės įrangos, kuri turės įtakos viso serverio veikimui. Nors jums leidžiama keisti tik specialiai jums sukurtos virtualios mašinos nustatymus. Dėl to greičiausiai negalėsite įdiegti:

  • Antivirusinė programa, kuri veiks „proaktyvios apsaugos“ režimu. Rekomenduojama naudoti tik tuos, kurie veikia nuskaitymo režimu.
  • Nebandykite sukurti virtualios tinklo plokštės, vargu ar ji veiks.
  • 1c apsaugos tvarkyklės.
  • Taip pat nebus galima įdiegti tvarkyklių, kurioms reikia tikrų (fizinių) įrenginių.
  • Nerekomenduojama naudoti programų, padedančių atkurti disko atmintį ar atlikti su ja panašius veiksmus.

Kaip pakeisti laiko juostą Linux serveryje?

Laikas serveryje keičiamas naudojant šias komandas (įveskite konsolėje):

pervardyti /etc/localtime /etc/localtime.old
ln -s /usr/share/zoneinfo/Europe/Kiev /etc/localtime
hwclock --systohc --utc
ntpdatepool.ntp.org

Svarbu! Naudojant OpenVZ virtualizaciją šis sprendimas (kaip ir bet kuris kitas) neveiks, nes OpenVZ visos virtualios mašinos veikia su fizinio mazgo laiko juosta.

Taigi, užsisakykime ir susikurkime savo VPS. Eikite į https://www.hetzner.de/, pasirinkite viršutiniame meniu VServeris(virtualus serveris). Rinkimės tokį, kurio kaina yra vidutinė, tačiau atrodo, kad jis turi geras savybes: vServer CX30

Atkreipkime dėmesį į kainą: vokiečių kalba siūloma už 14,16 € / Monat (14,16 € per mėnesį), o perėjus į rusišką ar JAV: 11,90 € per mėnesį / 11,90 € / mėn.

Kas per? Taip, ar vokiečiai savo parduoda brangiau? Matyt, jie turi daugiau pinigų. Nagi, konvertuokime eurus į rublius, dabar Yandex rodo 63,57 rublis / 1EUR - Rusijos Federacijos centrinio banko kursas 2016-12-28. Suapvalinti iki 65, suma mažesnė nei 1000 rublių: 11,90 € * 65 rubliai. = 773,50 rub./mėn.

Manau, kad tai nėra blogai, ypač pažvelgus į siūlomą šio stebuklo konfigūraciją:
Privalumai: 2 vCores, RAM 4 GB RAM, SSD 100 GB, Ryšys: 1 Gbit/s NIC, srautas: 8 TB, momentinės nuotraukos: 3. Kas išvertus į rusų kalbą reiškia 2 branduolius (virtualus), 4 GB RAM, 100 GB diską (SSD), ryšio greitį 1 Gigabit/sek, srauto limitą – 8 terabaitus. Iš karto pažymėsiu, kad komentare rašoma, kad viršijus srauto limitą mėnesiui, ryšio greitis sumažės iki 10 megabitų per sekundę, tačiau serveris vis tiek bus pasiekiamas. Taip, pakete taip pat yra iki 3 momentinių vaizdų palaikymas, todėl, jei norite, galite atšaukti.

Užsisakykite serverį

Na, draugai, neblogai už tokius pinigus ar ką? Gerai, eime! Pirmyn, be jokios abejonės, šis serveris bus mūsų. Paspausk mygtuką " Užsisakyti dabar” (“Įsakymas“ – taip, svetainė Hetzner.de Jis palaiko rusų kalbą, taip pat daugelį kalbų apskritai, bet nesu tikras dėl paties techninio palaikymo, manau, kad jei taip, mes apsieisime su anglų kalba). O pats serverio administratoriaus skydelis (https://robot.your-server.de/server) yra anglų kalba, tiesą pasakius, esu patenkintas tokiu, koks jis yra.

Operacinės sistemos be iš anksto įdiegto valdymo pulto

  • CentOS 6.8 minimalus
  • CentOS 7.2 minimalus
  • Debian 8.6 LAMP
  • Debian 8.6 minimalus
  • minimalus openSUSE 42.1
  • Ubuntu 16.04.1 LTS minimalus
  • Ubuntu 16.10 minimalus
  • Windows Server 2012 R2 Datacenter Edition (kaina (mėnesiui): 130,25 € / sąranka (vieną kartą): 0,00 €)
  • Windows Server 2012 R2 Standard Edition (kaina (mėnesiui): 21,01 € / sąranka (vieną kartą): 0,00 €)

Operacinės sistemos su iš anksto įdiegtu valdymo pultu

  • CentOS 7.2 + cPanel
  • CentOS 7.2 + Plesk
  • Debian 8.6 + Plesk
  • Ubuntu 16.04.1 LTS + Plesk
  • Windows Server 2012 R2 Datacenter Edition + Plesk (kaina (mėnesiui): 130,25 € / sąranka (vieną kartą): 0,00 €)
  • Windows Server 2012 R2 Standard Edition + Plesk (kaina (mėnesiui): 21,01 € / sąranka (vieną kartą): 0,00 €)

Tai yra du sąrašai – be valdymo pulto ir su juo (cPanel/Plesk).

Vaikinai, mes pasirenkame - Ubuntu 16.10 minimalus be jokių plokščių. Tai yra minimali sistema, kaip suprantu, joje papildomai bus įdiegtos pagrindinės sistemos komunalinės paslaugos (coreutils) ir SSH. Kaip tik tai, ko mums reikia. Visa kita - NGINX/PHP/MYSQL/POSTFIX/DOVECOT/PUREFTPD/SpamAssassin/FAIL2BAN ir tt ir taip toliau. (rusiškai ir tt) sumontuosime patys, savo rankomis, juolab kad tai nėra taip sunku ir neilgai, ypač dėka APT‘u.

Mūsų serveris veiks 3-4 svetainėse per NGINX/PHP-FPM, sukasi radijas ir, galbūt, eksperimentinė svetainė node.js. Taip pat tieksime FFMPEG Ir ImageMagic sklandžiai vaizdo / garso / grafikos apdorojimui.

Tada, jei neturite paskyros Hetzner.de, jūsų bus paprašyta sukurti ją, nieko ypatingo, gana mažą formą, o tada paprašys įvesti savo banko kortelės duomenis. Kadangi pasitikiu šia svetaine (kas nežino Hetzner.de?) Be baimės įvedu visus reikiamus duomenis ir... Serverį gaunu į savo rankas.

Darbo aplinka Windows 10

Žodžiu, po 5-10 minučių gavau laišką paštu, kad serveris paruoštas dirbti, ir čia jie nurodė mūsų serverio root slaptažodį ir IP adresą. Taigi, atidarykite savo mėgstamą SSH klientą, pavyzdžiui, Putty ir eime!

Taip, beje, mano Windows 10 Aš naudoju krūvą WinSCP + glaistas. Tai yra, aš einu į serverio failų sistemą root per WinSCP per SFTP protokolą, čia galiu kopijuoti / ištrinti / redaguoti „Windows“ redaktoriuje (dabar mano mėgstamiausias AkelPad) bet kurį failą ir spustelėdami mygtuką Ctrl + P(Atvira sesija į PuTTY) Aš akimirksniu, neįvesdamas slaptažodžio, patekau į konsolę PuTTY(žinoma, visa tai reikia sukonfigūruoti WinSCP iš anksto, o tai daroma tiesiog keliais pelės paspaudimais).

DNS nustatymai

Asmeniškai aš naudoju nemokamą „Hurricane Electric Free DNS Management“ - ​​https://dns.he.net/
Ir Hetzner.de siūlo panašų dalyką:

Vardų serverio robotas administruoja DNS įrašus daugiau informacijos... Kaina (vieną kartą): 15,97 € Dedicated Root Server ir vServer klientams nemokamai

Tai yra 15,97 euro * 65 rubliai = 1038,05 rubliai. Tai vienkartinis mokėjimas. Kuo tai geriau nei nemokama? Nemokamai negalima pasikliauti 100 proc., nors ir dirbame su Hurricane Electric kelerius metus ir niekada neturėjo jokių problemų (skirtingai nuo https://entrydns.net/, kuris dažnai sugesdavo, o tada pradėjo prašyti pinigų, nors ir nedaug).

Bet čia mes neturime apie ką galvoti - matote užrašą - Nemokamas skirtas šakninio serverio ir vServer klientams? Taip, mūsų virtualiam serveriui tai turėtų būti nemokama. Bet eidami į https://robot.your-server.de/ niekur nematome nuorodos į kažką panašaus NS/DNS. Pasirodo, tereikia jį papildomai užsisakyti – sekite nuorodas: Užsakymas – domeno administravimas – vardų serverio robotas – užsakyti produktą ir matome:

Prekių krepšelis Vieneto kaina Bendra kaina Mėnesio sąranka Mėnesio sąranka 1 x Vardų serverio robotas € 0,00 € 0,00 € 0,00 € 0,00 Iš viso: € 0,00 € 0,00

Taip, visur yra nuliai, šiuo atveju tai gerai, mums tai tikrai nemokama.

Bet, kartoju, naudoju Hurricane Electric, todėl čia neužsisakiau.

Kaip nustatyti pradinius ir būtiniausius svetainių NS įrašus, aprašyta šiame tinklaraštyje (naudojant pavyzdį „Hurricane Electric“ nemokamas DNS valdymas) –. Manau, kad Hetzneryje viskas nustatyta panašiai. Viską sukonfigūruojame naujam serverio IP.

Pirmieji žingsniai

Taigi, pažiūrėkime, ką iš tikrųjų jau turime, turėdami omenyje, kad tai vis dar yra virtuali mašina, o ne pilnavertis serveris. Tačiau dar neturime dešimčių tūkstančių – milijonų klientų, kurie palaikytų visavertį serverį ar tokių serverių grupę.
Aš vykdysiu visas komandas iš šaknies, nes neturiu jokios paranojos dėl to sudo tu gali taip pat gerai sujaukti, kaip ir ne sudo. Nagi, čia skonio, o ne principo reikalas.
Mus pasitinka tokiais kvietimais:
root@Ubuntu-1610-yakkety-64-minimal ~ #

FQDN

Sukurkime visiškai kvalifikuotą domeno pavadinimą:
# hostname beotiger
# echo beotiger > /etc/hostname
# vim /etc/hosts
Mūsų serverio IP adresas site2.ru

Dabar prisijunkime ir gaukime pakvietimą root@beotiger ~ #

Taigi, versija:

# uname -a
Linux beotiger 4.8.0-32-generic #34-Ubuntu SMP Antradienis Gruodžio 13 d. 14:30:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

# katė /etc/issue
Ubuntu 16.10\n\l

Kiek laisvos atminties:

# nemokamas -h
iš viso galima naudoti nemokamą bendrinamą buferį / talpyklą
Atmintis: 3,9G 218M 2,8G 17M 841M 3,4G
Sukeisti: 0B 0B 0B

Disko talpa:

# df -h
Failų sistemos dydis Naudotas Laisvas Naudojimas % Pritvirtinta
udev 2.0G 0 2.0G 0% /dev
tmpfs 396M 8.7M 387M 3% /vykdyti
/dev/sda1 94G 2.1G 87G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /vykdyti/užrakinti
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 396M 0 396M 0% /run/user/0

Taigi, matome, kad mūsų vis dar tuščia sistema sunaudoja 218 MB RAM ir 2,1 GB disko. Pažiūrėkime, kas nutiks įdiegus visas mums reikalingas paslaugas! Kad būtų patogiau peržiūrėti, galima nustatyti sistemos ir procesų būseną htop:

# apt įdiegti htop

Kalba ir laiko juosta

Asmeniškai man labiau patinka anglų kalba dokumentacijoje dėl ilgalaikės paranojos dėl prasto vertimo. Štai kodėl aš nekeisiu vietos. Bet vis tiek pakeisiu laiką į Maskvą, kitaip susipainiosiu žurnaluose (gyvenu pagal Maskvos laiką):

# apt įdiegti tzdata # dpkg-perkonfigūruoti tzdata

Renkantis diržą Europa/Maskva, ir paleiskite iš naujo, prisiminkime laikus Win98(kad visos mūsų jau veikiančios paslaugos pradėtų naudoti naują laiko juostą žurnaluose ir pan.):

# paleisti iš naujo

Laiko sinchronizavimas

Dėmesio! NTP nereikia, jei yra timeyncd ir mes nesiruošiame veikti kaip ntpd serveris. Plastikinis maišelis: systemd: /lib/systemd/systemd-timesyncd
# timedatectl būsena
Vietos laikas: penktadienis 2016-12-30 12:13:22 MSK
Pasaulinis laikas: penktadienis, 2016-12-30, 09:13:22 UTC
RTC laikas: penktadienis 2016-12-30 09:13:22
Laiko juosta: Europa/Maskva (MSK, +0300)
Tinklo įjungimo laikas: taip
NTP sinchronizuotas: taip
RTC vietiniame TZ: ne

Linija NTP sinchronizuotas: taip rodo, kad laikas sėkmingai sinchronizuojamas.

LEMP kamino diegimas: NGINX + PHP 7.0 + MySQL

LAMP: Linux Apache MySQL PHP – minimali paruošta žiniatinklio kūrimo aplinka. Turime Linux, Apache pakeisime į Nginx. Tie. LAMP -> LEMP (Linux Nginx MySQL PHP). Taigi, įdiegkime ir sukonfigūruosime vėliau:

NGINX

NGINX yra paprasčiausias ir galingiausias dalykas, būtent tai man labiausiai patinka:

# apt įdiegti nginx

Tai štai, turime veikiantį serverį. Jau galite eiti į http://ip-of-our-server ir pamatyti standartinį numatytąjį nginx puslapį. Numatytasis svetainės aplankas yra /var/www/html. Diegdami PHP/MySQL jo neliesime, nagrinėsime išsamią konfigūraciją ir NGINX+PHP7 derinį (priminsime, pridėsime kelias svetaines)

Dabartinė nginx versija:

# nginx -v
nginx versija: nginx/1.10.1 (Ubuntu)

Peržiūrėkite dabartinius nginx modulius (kažkur mačiau įsilaužimą į stackoverflow):

# 2>&1 nginx -V | tr -- - "\n" | grep_module
http_ssl_module
http_stub_status_module
http_relip_module
http_auth_request_module
http_papildymo_modulis
http_dav_module
http_geoip_module
http_gunzip_module
http_gzip_static_module
http_image_filter_module
http_v2_modulis
http_sub_module
http_xslt_module
stream_ssl_module
mail_ssl_module

Standartiškai nginx-pakuotėje yra tik būtiniausi moduliai. Jei jums reikia papildomų modulių, pavyzdžiui, MP4, perkompiliuoti visai nebūtina nginx iš rūšių.
Pridėkite modulius prie nginx Tai galite padaryti (dar nebandžiau):

# apt įdiegti nginx-extras

Galima konfigūracija naudojant mp4 modulį:

Vieta /video/ (
mp4;
mp4_buferio_dydis 1m;
mp4_max_buffer_size 5m;
mp4_limit_rate įjungta;
mp4_ribinis tarifas_po 30s;
}

Pažiūrėkime, kas yra nginx-extras:

# tinkamas rodyti „nginx-extras“.
Pakuotė: nginx-extras
Versija: 1.10.1-0ubuntu1.2
Pirmenybė: neprivaloma
Skyrius: visata/httpd
Šaltinis: nginx
Kilmė: Ubuntu
Prižiūrėtojas: Ubuntu kūrėjai
Originalus prižiūrėtojas: Kartik Mistry
Klaidos: https://bugs.launchpad.net/ubuntu/+filebug
Įdiegtas dydis: 1 886 kB
Teikia: httpd, httpd-cgi, nginx
Priklauso: nginx-common (= 1.10.1-0ubuntu1.2), perl (>= 5.22.2-3), perlapi-5.22.2, libc6 (>= 2.14), libexpat1 (>= 2.0.1), libgd3 (>= 2.1.0~alpha~), libgeoip1, libluajit-5.1-2, libpam0g (>= 0.99.7.1), libpcre3, libperl5.22 (>= 5.22.2), libssl1.0.0 (>= 1.0.2. ~beta3), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25), zlib1g (>= 1:1.1.4)
Siūloma: nginx-doc (= 1.10.1-0ubuntu1.2)
Konfliktai: nginx-core, nginx-full, nginx-light
Pertraukos: nginx (Daug kas, ar mums to reikia dabar?! Kaip prijungti/išjungti reikiamus modulius paleidžiant serverį/paslaugą?

PHP 7.0

Žinoma, supakuosime septynis. Daugelio nuomone, jis yra daug greitesnis nei penki. Nežinau, netikrinau, bet noriai tuo tikiu! Atminkite, kad PHP7.0 paketas, kuris apibūdinamas taip:

Php7.0/yakkety,yakkety,yakkety,yakkety 7.0.8-3ubuntu3 all
serverio pusės, į HTML įterpta scenarijų kalba (metapaketas)

Jis mums pasiūlys įdiegti apache, nežinau kodėl, kas vyksta šių Yubuntu paketų rinkėjų galvose? Pasižiūrėk pats:

# apt install php7.0 apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 php-7pcommon-0 phpp-7p. Paprastas PHP7.0-JSON PHP7.0-OPCACHE PHP7.0 Readline PSMISC SSL-CERT APACHE2 APACHE2-BIN APACHE2-DATA APACHE2-UTILS LIBAPACHE2-MOD-PHP7.0 LIBAPR1 LIBAPRUTL1 LIBAPRUTL1-DBD-SQLITE3 LIBAPRUTL1-LDAPRUTLU.1111 -0 php-common php7.0 php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline psmisc ssl-cert 0 atnaujinta, 19 naujai įdiegta, 0 pašalinti ir 0 ne atnaujintas. Reikia gauti 5 066 kB archyvų. Po šios operacijos bus naudojama 20,6 MB papildomos vietos diske. Ar norite tęsti? n

Neeeeeeeeee, cia mes spaudžiame n, ne, nicht, nope, jokiu būdu. Ką jūs darote, Ubuntu paketų kūrėjai?

Paketas php7.0-fpm:

Php7.0-fpm/yakkety,yakkety 7.0.8-3ubuntu3 amd64
serverio pusės, HTML įterpta scenarijų kalba (FPM-CGI dvejetainė)

# apt install php7.0-fpm Paketų sąrašų skaitymas... Atlikta Kurti priklausomybių medį Skaitoma būsenos informacija... Atlikta Bus įdiegti šie papildomi paketai: php-common php7.0-cli php7.0-common php7.0- json php7.0-opcache php7.0-readline psmisc Siūlomi paketai: php-pear Bus įdiegti šie NAUJI paketai: php-common php7.0-cli php7.0-common php7.0-fpm php7.0-json php7 .0-opcache php7.0-readline psmisc 0 atnaujinta, 8 naujai įdiegta, 0 pašalinti ir 0 neatnaujinta. Reikia gauti 3570 kB archyvų. Po šios operacijos bus naudojama 14,3 MB papildomos vietos diske. Ar norite tęsti? Y Konfigūracijos failo /etc/php/7.0/cli/php.ini su nauja versija kūrimas Nustatyti php7.0-fpm (7.0.8-3ubuntu3) ... Konfigūracijos failo /etc/php/7.0/fpm/php kūrimas. ini su nauja versija Sukurta nuoroda /etc/systemd/system/multi-user.target.wants/php7.0-fpm.service → /lib/systemd/system/php7.0-fpm.service.

IŠ: https://php-fpm.org/
PHP-FPM („FastCGI Process Manager“) Alternatyva PHP FastCGI su daugybe naujų naudingų funkcijų, tinkančių bet kokio dydžio svetainėms, ypač užimtoms svetainėms. Apima: Adaptyvaus proceso paleidimas! Statistika! Šios funkcijos apima: Adaptyvaus proceso atsiradimą (NAUJIENA!) Pagrindinė statistika (ala Apache mod_status) (NAUJIENA!)

Taigi, matome, kad pagrindiniai PHP7.0 paketai buvo įdiegti - bendras, cli(iškviesti PHP iš komandinės eilutės), fpm- tik tai, ko mums reikia norint susisiekti su NGINX, mūsų žiniatinklio serveriu, json- naudingas dalykas, mes naudojame jį beveik visuose savo projektuose, ypač pagrįstuose AJAX, opcache- talpyklos kaupimas, skaitymo linija- galimybė vesti seansą su PHP kaip interaktyvų apvalkalą, daugiau informacijos rasite čia: http://php.net/manual/en/features.commandline.interactive.php

Įdiegkime keletą svarbiausių ir reikalingiausių PHP paketų, dažnai naudojamų ne tik mūsų projektuose:

# apt install php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-sqlite3 ... Bus įdiegti šie papildomi paketai: libcurl3 libmcrypt4 Siūlomi paketai: libmcrypt -dev mcrypt Bus įdiegti šie NAUJI paketai: libcurl3 libmcrypt4 php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-sqlite3

garbanoti- Ryšys su tinklu iš PHP per patogią CURL API, gd- piešti grafinius elementus ir tekstą, mbstring- kelių baitų eilučių palaikymas, mcrypt- šifravimas, kam to dabar nereikia)) mysql Ir sqlite3- tai duomenų bazės, kurias naudoju savo projektuose; jums gali prireikti kitų duomenų bazių, pavyzdžiui, pgsql arba sybase. Bendras galimų paketų sąrašas PHP 7 galite pažiūrėti taip:

# apt search php7 Rūšiavimas... Atlikta viso teksto paieška... Atlikta libapache2-mod-php7.0/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 serverio pusėje, HTML įterpta scenarijų kalba (Apache 2 modulis) libphp7.0-embed/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 HTML įterpta scenarijų kalba (įterptoji SAPI biblioteka) php-all-dev/yakkety,yakkety,yakkety,yakkety yakkety 1:44 visas paketas, priklausomai nuo visų palaikomų PHP kūrimo paketų php-symfony-polyfill-php70/yakkety,yakkety,yakkety,yakkety 1.2.0-1 visi Symfony polyfill kai kurių PHP 7.0 ir naujesnių funkcijų perkėlimas į žemesnes PHP versijas php7.0/ yakkety-updates,yakkety-updates,yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 visos serverio pusės, HTML įterpta scenarijų kalba (metapaketas) php7.0-bcmath/yakkety-updates,ya 7.0.13-0ubuntu0.16.10.1 amd64 Bcmath modulis, skirtas PHP php7.0-bz2/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 bzip2 modulis, skirtas PHP-php-up/7tesyakkety ,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 serverio pusėje, HTML įterpta scenarijų kalba (CGI dvejetainė) php7.0-cli/yakkety-updates,yakkety-updates,dabar 7.0.13-16.10.0.10ubuntu. 1 amd64 komandų eilutės vertėjas, skirtas PHP scenarijų kalbai php7.0-common/yakkety-updates,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 amd64 dokumentacija, pavyzdžiai ir bendras modulis, skirtas PHP php7.0-curl/ yakkety-updates,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 amd64 CURL modulis, skirtas PHP php7.0-dba/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10 PHP modulis D.16.10. php7.0-dev/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 failai PHP7.0 modulio kūrimui php7.0-enchant/yakkety-updates,yakkety-updates 7.0.13-06untu1 .1 amd64 Enchant modulis, skirtas PHP php7.0-fpm/yakkety-updates,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 amd64 serverio pusėje, HTML įterpta scenarijų kalba (FPM-CGI dvejetainė.0) php7 -gd/yakkety-updates,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 amd64 GD modulis, skirtas PHP php7.0-gmp/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16amd1 7.0.13-0ubuntu0.16amd1. modulis, skirtas PHP php7.0-imap/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 IMAP modulis, skirtas PHP php7.0-interbase/yakkety-updates,yakkety-updates 7.0.13-06ubun10.1 .1 amd64 Interbase modulis, skirtas PHP php7.0-intl/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 Internacionalizacijos modulis, skirtas PHP php7.0-json/yakkety-updates,yakkety-updates.0, yakkety-updates.0 .13-0ubuntu0.16. 10.1 amd64 JSON modulis, skirtas PHP php7.0-ldap/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 LDAP modulis, skirtas PHP php7.0-mbstring/yakkety-updates,yakkety-updates.0kkenty-ow 13-0ubuntu0.16.10.1 amd64 MBSTRING modulis, skirtas PHP php7.0-mcrypt/yakkety-updates,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 amd64 libmcrypt modulis, skirtas PHP php7.0/-kkemytysqlda.0 ,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 amd64 MySQL modulis, skirtas PHP php7.0-odbc/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 PHPOD php modulis -opcache/yakkety-updates,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 amd64 Zend OpCache modulis, skirtas PHP php7.0-pgsql/yakkety-updates,yakkety-updates 7.0.13-06un d4tu03.1.1. PostgreSQL modulis, skirtas PHP php7.0-phpdbg/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 serverio pusėje, HTML įterpta scenarijų kalba (PHPDBG dvejetainė) php7.0-pspell/ya,kkety-pspell/ya yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 pspell modulis, skirtas PHP php7.0-readline/yakkety-updates,yakkety-updates,dabar 7.0.13-0ubuntu0.16.10.1 modulis, skirtas PHP- php7 amd64 recode/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 perkodavimo modulis, skirtas PHP php7.0-snmp/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10 PHPMP modulis 16.10. php7.0-soap/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 SOAP modulis, skirtas PHP php7.0-sqlite3/yakkety-updates,yakkety-updates,yakkety-updates,dabar 7.0.10.-10ubuntu0.13. 1 amd64 SQLite3 modulis, skirtas PHP php7.0-sybase/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 Sybase modulis, skirtas PHP php7.0-tidy/yakkety-updates,yakkety-updates.1dates3-7-up 0ubuntu0.16.10.1 amd64 tvarkingas modulis, skirtas PHP php7.0-xml/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 DOM, SimpleXML, WDDX, XML ir XSp7 modulis xmlrpc/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 XMLRPC-EPI modulis, skirtas PHP php7.0-xsl/yakkety-updates,yakkety-updates,yakkety-updates,yakkety-updates,yakkety-updates, yakkety-updates, yakkety-updates, yakkety-updates, yakkety-updates3-yakkety-up. 0ubuntu0.16.10.1 visas XSL modulis, skirtas PHP (fiktyviai) php7.0-zip/yakkety-updates,yakkety-updates 7.0.13-0ubuntu0.16.10.1 amd64 ZIP modulis, skirtas PHP php7cc/yakkety,yakkety-1. amd64 komandinės eilutės įrankis, skirtas aptikti PHP 7 nesuderinamą kodą

MySQL

Kai kurie žmonės įdiegia MariaDB, galbūt tikėdamiesi „Oracle“ triuko, bet aš kažkaip prisirišau prie „MySQL“:

# apt įdiegti mysql-server

Pastato priklausomybės medis

Bus įdiegti šie papildomi paketai:




mysql-server-5.7 mysql-server-core-5.7
Siūlomi paketai:
libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca
Bus įdiegti šie NAUJI paketai:
libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.0-5
libfcgi-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl
libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl
libtimedate-perl liburi-perl mysql-client-5.7 mysql-client-core-5.7 mysql-common
mysql-server mysql-server-5.7 mysql-server-core-5.7
0 atnaujinta, 21 naujai įdiegta, 0 pašalinti ir 0 neatnaujinta.
Reikia gauti 20,3 MB archyvo.
Po šios operacijos bus naudojama 172 MB papildomos vietos diske.

Mysql kol kas netaisysime, jei krūviai dideli, tai tegul skauda galvą.

Nginx susiejimas su PHP, svetainių kūrimas

Taigi, mes įdiegėme visą LEMP steką, dabar sukursime svetaines, sukursime 3 svetaines, o likusias pridėsime panašiai.

Mūsų svetainių pavadinimai ir adresai:
1. site.ru
2.site.org
3.site.com

Kiekvienai svetainei /var/www kataloge sukurkite aplankus tokiu pačiu pavadinimu kaip ir svetainė: site.ru site.org site.com. Kiekviename iš šių aplankų sukursime tris poaplankius:

  • tmp – seansams ir failų atsisiuntimui
  • log - nginx rąstams
  • žiniatinklis – skirtas www duomenims (pats svetainės turinys)

cd / var/ www mkdir -p site.ru/ (tmp,web,log) mkdir -p site.org/ (tmp,web,log) mkdir -p site.com/ (tmp,web,log)

Taip pat kiekvienai svetainei sukursime savo vartotoją su vardais web1, web2, web3 ir tt (pridėjus 4-ą svetainę, sukursime web4 vartotoją, žr. žemiau). Kiekvienam vartotojui naudosime www-duomenų grupę.

Taigi, pridedame vartotojų ir atitinkamai nustatome prieigos teises. aplankus. Leiskite jums priminti, kad visos komandos vykdomos root:

useradd -m -d / var/ www/site.ru -s $(which bash ) -G www-data web1 useradd -m -d / var/ www/site.org -s $(which bash ) -G www- data web2 useradd -m -d / var/ www/ site.com -s $(which bash ) -G www-data web3 cd / var/ www chown web1:www-data -R site.ru chown web2:www-data -R site.org chown web3:www-data -R site.com passwd web1 passwd web2 passwd web3

Prisiminkime vartotojų web1, web2 ir web3 slaptažodžius; jie vėliau mums pravers norint pasiekti svetaines per FTP (žr. toliau tekste).

PHP konfigūracija

Sukurkime PHP-FPM konfigūracijos failus kiekvienam vartotojui/svetainei. Kiekviena svetainė bus aptarnaujama pagal savo PHP-FPM procesus, kad būtų paskirstyta apkrova visose svetainėse. Conf failų pavadinimai yra web.conf, jie yra /etc/php/7.0/fpm/pool.d aplanke, PHP-FPM viską sujungia iš ten paleidus. Taigi, svetainės site.ru (vartotojo web1) konfigūracijos pavyzdys:

cd / etc/ php/ 7.0 / fpm/ pool.d vim web1.conf

Web1.conf turinys:

klausytis = /run/php/php7.0-fpm1.sock
klausytis.savininkas = web1
listen.group = www-duomenys
Klausytis.mode = 0660

vartotojas = web1
grupė = www-duomenys

pm = dinaminis
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0

php_admin_value = /var/www/site.ru/web:/var/www/site.ru/tmp
php_admin_value = /var/www/site.ru/tmp
php_admin_value = /var/www/site.ru/tmp
php_admin_value = "/usr/sbin/sendmail -t -i"!}

security.limit_extensions = .php .html

Patikrinkite parinktis:

klausytis = /run/php/php7.0-fpm1.sock- nurodome, kuriame lizde klausys PHP-FPM procesas, mums tai bus naudinga nustatant NGINX (žr. žemiau).

klausytis.savininkas = web1
listen.group = www-duomenys- prieigos prie lizdo savininkas / grupė

vartotojas = web1
grupė = www-duomenys- veikiančio proceso savininkas / grupė jungiantis prie lizdo

php_admin_value- nurodykite, prie kurių aplankų proceso savininkas turės prieigą
php_admin_value- nurodykite, kuriame aplanke bus saugomi seansai
php_admin_value- nurodykite, į kurį aplanką failai bus atsisiųsti (įkelti)
php_admin_value- siųsti pašto komandą, kurią naudoja PHP funkcija Paštas. Pašto nustatymą spręsime šiek tiek vėliau.

Kitoms dviem svetainėms – nukopijuokite failą web1.conf ir pakeiskite vartotoją (web1 -> web2 -> web3), socket - /run/php/php7.0-fpm1.sock -> /run/php/php7.0-fpm2.sock -> /run/php/php7 0-fpm3.sock ir aplankas site.ru -> site.org -> site.com

cd / etc/ php/ 7.0 / fpm/ pool.d cp web1.conf web2.conf vim web2.conf cp web2.conf web3.conf vim web3.conf

NGINX nustatymas

Svetainės nustatymai saugomi aplanke /etc/nginx/sites-available- prieinamos svetainės. Kad svetainė būtų aktyvi ir matoma nginx, iš čia į aplanką sukuriama minkšta nuoroda (symlink) /etc/nginx/sites-enabled- aktyvios svetainės.

Taigi, eikime į aplanką /etc/nginx/sites-available ir sukurkite pirmosios svetainės nustatymų failą. Failo pavadinimas, žinoma, gali būti bet koks, mes sukursime failų pavadinimus svetainių pavadinimų forma, pridėdami priesagą .vhost, kad parodytume, jog tai yra virtualaus pagrindinio kompiuterio nustatymai. Simbolines nuorodas pavadinsime naudojamo vartotojo vardu, kad pamatytume, kokiam vartotojui naudojame šią svetainę. Ši informacija gali praversti, pavyzdžiui, po pusmečio, jei ilgai čia nežiūrėjome ir iš galvos išėjome iš galvos, kokius vartotojus kokioms svetainėms nustatome – tokiu atveju to neprireiks Norėdami įsigilinti į Nginx ir PHP nustatymų failus. Taigi pradėkime:

cd / etc/ nginx/ sites-available/ vim site.ru.vhost ln -s site.ru.vhost / etc/ nginx/ sites-enabled/ web1

Visas failo turinys site.ru.vhost:

Serveris (klausykite *:80; serverio_pavadinimas site.ru www.site.ru; root /var/www/site.ru/web; index index.html index.php; error_log /var/www/site.ru/log/error .log; access_log /var/www/site.ru/log/access.log sujungtas; vieta ~ /\. (uždrausti viską; prieigos_atsijungti; log_not_found off; ) location = /favicon.ico (log_not_found off; access_log off; ) vieta = /robots.txt (leisti viską; log_not_found off; access_log off; ) vieta ~* \.(js|css|png|jpg|jpeg|gif|svg)$ ( galiojimo laikas baigiasi daugiausia; # log_not_found off; ) vieta ~ \ .(php|html)$ ( try_files /d58f8ccd9bffa83ebec930554209111f.htm @php; ) vieta @php ( try_files $uri =404; įtraukti /etc/nginx/fastcgi_params; fastcgi_pass unix/phckfm.s ; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; ) )

Greitai pereikime prie nustatymų. Taigi,

Šaknis /var/www/site.ru/web;

Kaip minėjome pradžioje, svetainių šaknis bus žiniatinklio aplanke.

Vieta ~ /\. (
neigti viską;
access_log off;
log_not_found off;
}

Šis blokas nurodo uždrausti prieigą prie visų failų ir aplankų, prasidedančių tašku (`.`). Jei jums to nereikia, šį bloką galima pašalinti.

Vieta @php (
try_files $uri =404;
įtraukti /etc/nginx/fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm1.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}

Šis blokas sujungia NGINX su PHP-FPM per lizdą /run/php/php7.0-fpm1.sock - tai yra lizdas, kurį mes nustatėme web1.conf kaip klausymosi parametrą.

Likusias svetaines sukuriame pagal vaizdą ir panašumą site.ru.vhost- nukopijuokite, pakeiskite serverio pavadinimą ir šakninį kelią į svetainę faile (parametrai serverio pavadinimas Ir šaknis), nepamirškite ištaisyti error_log ir access_log kelių, o svarbiausia, nepamirškite fastcgi_pass parametre nurodyti kitokio lizdo – jis bus unix:/run/php/php7.0-fpm2.sock dėl site.org ir unix:/run/php/php7.0-fpm3.sock svetainei site.com. Sukūrę failus aplanke svetainės – prieinamos Ant jų sukuriame simbolių nuorodas į aplanką, kuriame įgalintos svetainės:

cd / etc/ nginx/ sites-available/ cp site.ru.vhost site.org.vhost vim site.org.vhost ln -s site.org.vhost / etc/ nginx/ sites-enabled/ web2 cp site.ru. vhost site.com.vhost vim site.com.vhost ln -s site.com.vhost / etc/ nginx/sites-enabled/ web3

Sukūrę ir kiekvieną kartą pakeitę konfigūracijos failus, turėtumėte iš naujo paleisti atitinkamus failus. paslauga. Pakeitėme PHP-FPM ir NGINX konfigūracijas, todėl vykdome šias dvi komandas:

paslauga nginx perkrauti paslauga php7.0-fpm perkrauti

Jei paleidžiant paslaugas nėra klaidų, eikite į mūsų svetaines ir pasigrožėkite jomis! Norėdami patikrinti, sukurkite failą 1.php su turiniu:

Įdėkime į aplanką /var/www/site.ru/web.
Dabar, kai eini į site.ru/1.php turėtume pamatyti ekraną su dabartiniais PHP nustatymais, pavyzdžiui:

Mes žiūrime į esamus parametrus, prijungtus PHP modulius ir įsitikiname, kad viskas sukonfigūruota taip, kaip turėtų. Pakartokime tą patį su svetainėmis. site.org Ir site.com.

Taip pat pridėsiu vieną niuansą – kartais mūsų svetainės organizavimas reikalauja, kad visos užklausos į svetainę būtų siunčiamos per vienus vartus, paprastai tai index.php. Tai yra, nesvarbu, kokį kelią nurodysime patekdami į svetainę, valdymas bus perduotas tiksliai index.php. IN nginx Yra keletas būdų, kaip tai organizuoti, ir aš pateiksiu metodą, kurį naudojame vienoje iš mūsų svetainių.
Taigi, čia yra NGINX konfigūracija svetainei, kuriai pateikiamos visos užklausos (tačiau, išskyrus prieigą prie aplanko inc, kuriame saugome viešuosius išteklius – vaizdus, ​​„JavaScript“ ir CSS failus), eikite tiesiai į index.php ir ten nusprendžiame, ką daryti su šia užklausa:

Serveris (klausykite *:80; serverio_pavadinimas site.com www.site.com; root /var/www/site.com/web; index index.html index.php; error_log /var/www/site.com/log/error .log; access_log /var/www/site.com/log/access.log sujungtas; vieta ~ /\. (neleisti viską; prieigos_atsijungti; log_not_found off; ) location = /favicon.ico (log_not_found off; access_log off; ) vieta = /robots.txt (leisti viską; log_not_found off; access_log off; ) vieta ~* \.(js|css|png|jpg|jpeg|gif|svg)$ ( galiojimo laikas baigiasi daugiausia; # log_not_found off; ) vieta ~ \ .(php|html)$ ( try_files /d58f8ccd9bffa83ebec930554209111f.htm @php; ) vieta @php ( try_files $uri =404; įtraukti /etc/nginx/fastcgi_params; fastcgi_pass unix/phckfm.s ; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; ) vieta /inc/ () vieta / ( perrašyti ^ /index.php paskutinį; ) )

Šioje konfigūracijoje įdomiausi blokai yra šie:

Vieta /įskaitant/()
vieta/(
perrašyti ^ /index.php paskutinis;
}

Pirmasis blokas nurodo nginx apdoroti aplanko kelią inc kaip yra, o antrasis blokas nukreipia visas užklausas į failą index.php.

Pridėkite 4-ąją svetainę: site2.ru - web4

cd / var/ www mkdir -p site2.ru( tmp,web,log) useradd -m -d / var/ www/site2.ru -s $(which bash ) -G www-data web4 passwd web4 chown web4:www -data -R / var/ www/site2.ru cp / etc/ php/ 7.0 / fpm/ pool.d/ web3.conf / etc/ php/ 7.0 / fpm/ pool.d/ web4.conf vim / etc/ php / 7.0 / fpm/ pool.d/ web4.conf cp / etc/ nginx/ sites-available/ site.com.vhost / etc/ nginx/ sites-available/ site2.ru.vhost vim / etc/ nginx/ sites-available / site2.ru.vhost ln -s / etc/ nginx/ sites-available/ site2.ru.vhost / etc/ nginx/ sites-enabled/ web4 paslauga nginx perkrovimo paslauga php7.0-fpm perkrauti

FTP serverio nustatymas

Prieš tęsdami pašto nustatymus, nustatykime FTP serverį, kad galėtumėte pasiekti svetainės aplanką per FTP (FTPS) ir jį atnaujinti. Diegimas grynas-ftpd:

# apt install pure-ftpd
Paketų sąrašų skaitymas... Atlikta
Pastato priklausomybės medis
Skaityti informaciją apie būseną... Atlikta
Bus įdiegti šie papildomi paketai:
pure-ftpd-common
Bus įdiegti šie NAUJI paketai:
pure-ftpd pure-ftpd-common
0 atnaujintų, 2 naujai įdiegtų, 0 pašalintų ir 0 neatnaujintų.
Reikia gauti 263 kB archyvų.
Po šios operacijos bus naudojama 796 kB papildomos vietos diske.
Ar norite tęsti? y

Pure-ftpd sukonfigūruotas originaliu būdu – jis turi būti aplanke /etc/pure-ftpd/conf sukurkite failą su parametro pavadinimu ir į jo turinį įveskite reikiamą reikšmę. Keista, bet gerai. Taigi, sukurkime vykdomąjį scenarijų, kuris nustatys mums reikalingus nustatymus ir paleiskite jį:

vim / root/ pureftpd-conf.sh #!/bin/sh echo "yes" > ChrootEveryone echo "50" > MaxClientsNumber echo "10" > MaxClientsPerIP echo "ne" > VerboseLog echo "yes" > DisplayDotFiles echo "ne" > ProhibitDotFilesWrite echo "taip" > NoChmod echo "yes" > NoAnonymous echo "taip" > Neišspręskite aido "15" > MaxIdleTime # 1 – paprastas arba TLS, 2 – tik TLS echo "2" > TLS # leisti unux vartotojams FTP echo "taip" > UnixAuthentication echo "1000" > MinUID

Trumpas nustatymų aprašymas: visiems padarome chroot, kad neliptų per visą mūsų serverį, rodome failus, prasidedančius tašku (Unix tai yra kaip paslėpti failai) ir leidžiame juos skaityti/rašyti, draudžiame anoniminius prisijunkite, nustatykite maks. 15 min. galimos prastovos, taip pat įpareigojame visus klientus naudotis TLS (šifravimo) – linija echo "2" > TLS. Žinoma, jei įmanoma, rekomenduojama visada naudoti šifravimą, kad MIM (vyrai viduryje) negalėtų perimti mūsų failų. Tai yra, jie galės bet kokiu būdu perimti, bet vargu ar tai iššifruos. Šifravimo trūkumas – lėtesnis failų perdavimo greitis, nes... Laikas švaistomas šifravimui / iššifravimui. Norėdami visiškai išjungti šifravimą, TLS turite įvesti 0; norėdami leisti įprastą ir šifruotą srautą, įveskite vieną čia (1).
Paskutinis parametras taip pat svarbus echo "taip" > Unix Authentication. Prisiminkite vartotojus, kuriuos sukūrėme PHP - NGINX (web1, web2 web3 ir kt.) Dabar galime juos naudoti ir kaip FTP vartotojus. Naudojame tuos pačius slaptažodžius, kuriuos nustatėme juos kurdami.

Norėdami naudoti TLS, sukurkime savarankiškai pasirašytą sertifikatą:

# openssl req -x509 -mazgai -dienos 7300 -newkey rsa:2048 -keyout /etc/ssl/privatus/pure-ftpd.pem -out /etc/ssl/privatus/pure-ftpd.pem

Atlikę visas manipuliacijas, paleiskite demoną iš naujo:

# paslaugos pure-ftpd paleidimas iš naujo

PureFTPD įrašo žurnalus į syslog. Žiūrėk:

# tail -f /var/log/syslog

Tai viskas, dabar galime prisijungti per FTP(S) (S- saugus), nurodant vartotojus web1,web2,web3, ir pagal numatytuosius nustatymus jie pateks į savo namų aplankus, kurie yra jų svetainių aplankai.

Pašto sąranka – Postfix + Dovecot

Taigi, turime darbo svetaines ir FTP prieigą prie jų, kad galėtumėte įkelti / atnaujinti / ištrinti turinį šiose svetainėse. Galime dirbti ir su duomenų bazėmis MySQL/SQLite.

Norint atlikti visavertį darbą, mums tereikia nustatyti paštą, kad galėtume siųsti/gauti laiškus mūsų svetainėse arba sistemoje. Pašto sistema paprastai susideda iš dviejų komponentų MTA- pašto siuntėjo agentas, pašto siuntimo agentas ir MDA- pašto pristatymo agentas, pašto pristatymo agentas. Auksinei porai naudosime Postfix + Dovecot, kaip populiariausias šiandien, ir dėl geros priežasties, mano kuklia nuomone. Taigi, įdiegkime paketus, nustatykime konfigūracijas ir kurkime pašto domenus bei pašto dėžutes. Pirmyn!

1 veiksmas: įdiekite paketus ir įdiekite sertifikatą

# apt įdiegti postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql dovecot-pop3d
Dialogo lange nurodome: Interneto svetainė, site.ru
Sukurkite raktą / sertifikatą dovecot.key ir dovecot.pem:
# openssl req -x509 -mazgai -dienos 3650 -newkey rsa:2048 -keyout /etc/ssl/private/dovecot.key -out /etc/ssl/certs/dovecot.pem
Mano atsakymai į klausimus tokia tvarka, kokia jie pasirodė: RU Volgogradas Volgogradas Justbeo CEO beotiger [apsaugotas el. paštas]

Mes tikriname, ar mūsų domenai yra prieinami paštui:
# dig MX site.ru +short @ns1.he.net
10 mail.site.ru.
# priegloba mail.site.ru ns1.he.net

Naudojant domeno serverį:
Vardas: ns1.he.net
Adresas: 216.218.130.2#53
Pseudonimai:

mail.site.ru turi adresą 131.21.128.229

2 veiksmas: sukurkite MySQL duomenų bazę, virtualius domenus, vartotojus ir slapyvardžius

Sukurkime specialią duomenų bazę, kurioje būtų saugomi mūsų virtualūs domenai, vartotojai ir slapyvardžiai. Pavadinkime, pavyzdžiui vmail. Šioje duomenų bazėje sukursime virtualius domenus visoms 3 svetainėms, taip pat du vartotojus dviem svetainėms:

# mysqladmin -p sukurti vmail
mysql > GRANT SELECT ON vmail.* Į "vmail"@"127.0.0.1" ATPAŽINTAS "slaptažodžiu";
mysql > FLUSH PRIVILEGIJOS;
mysql>Naudokite vmail;
mysql> KURTI LENTELĘ `domenai` (

"vardas" VARCHAR(50) NOT NULL,
PIRMINIS RAKTAS („id“)

mysql> KURTI LENTELĘ „vartotojai“ (
„id“ INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`slaptažodis` VARCHAR(106) NOT NULL,
`el. paštas` VARCHAR(120) NOT NULL,
PIRMINIS RAKTAS („id“),
UNIKALUS RAKTAS "el. paštas" ("el. paštas"),

) ENGINE=InnoDB NUMATYTOJI CHARSET=utf8;

mysql> KURTI LENTELĘ `slapyvardžiai` (
„id“ INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
"source" varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PIRMINIS RAKTAS („id“),
UŽSIENIO RAKTAS (domeno_id) NUORODOS domenams (id) NAIKINANT KASKADĄ
) ENGINE=InnoDB NUMATYTOJI CHARSET=utf8;

Mūsų virtualūs domenai. pagal numatytuosius nustatymus ID prasideda nuo 1:
mysql> INSERT INTO „domenai“ („vardas“)
VERTYBĖS ("site.ru"), ("site.org"), ("site.com");

mysql>
VERTYBĖS
("1", ENCRYPT("pass1", CONCAT("$6$", SUBSTRING(SHA(RAND()), -16))), " [apsaugotas el. paštas]"),
("2", ENCRYPT("pass2", CONCAT("$6$", SUBSTRING(SHA(RAND()), -16))), " [apsaugotas el. paštas]");

Pridėkite kitą vartotoją prie site.com, nepamirškite teisingo domeno_id:
mysql> INSERT INTO „naudotojai“ (domeno_id, slaptažodis, el. paštas)
VALUES("3", ENCRYPT("pass3", CONCAT("$6$", SUBSTRING(SHA(RAND()), -16))), " [apsaugotas el. paštas]");

Pastaba: Įspėjimas | 1287 | "ENCRYPT" yra nebenaudojamas ir bus pašalintas būsimame leidime. Vietoj to naudokite AES_ENCRYPT

Pridedamas slapyvardis [apsaugotas el. paštas] kuri remsis [apsaugotas el. paštas], tai yra laiškas [apsaugotas el. paštas] atiteks vartotojui [apsaugotas el. paštas]. Svarbu – turėtumėte patikrinti domeno ID iš domenų lentelės, kad jį atitiktų laukas domain_id:
mysql>
VALUES("1", " [apsaugotas el. paštas]", "[apsaugotas el. paštas]");

Panašiai pridedame kitus būtinus slapyvardžius. Norėdami pridėti visuotinį slapyvardį, kuris perduos laiškus, išsiųstus bet kuriuo nenurodytu pasirinkto domeno adresu, konkrečiam šio domeno vartotojui:
mysql> INSERT INTO slapyvardžiai (domeno_id, šaltinis, paskirties vieta)
VERTYBĖS ("1", "@site.ru", " [apsaugotas el. paštas]");

Seansą baigiame su MySQL:
UŽDARYTI;

3 veiksmas: sukonfigūruokite „Postfix“.

Pagrindiniai Postfix nustatymai yra dviejuose failuose - pagrindinis.plg Ir meistras.plg. IN meistras.plg galite nepaisyti kai kurių tam tikrų paslaugų parametrų (žyma -o - nepaisyti, nepaisyti). Pradėkime nuo pagrindinis.plg. Trumpai. ką mes čia darome: naudojame TLS šifravimą, virtualius domenus ir vartotojus per MySQL duomenų bazę, Dovecot. Mes nepaisome tik toliau pateiktų nustatymų, likusius paliekame pagal numatytuosius nustatymus, kaip iš pradžių buvo main.cf:

# cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
# vim /etc/postfix/main.cf
#TLS parametrai
smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem
smtpd_tls_key_file=/etc/ssl/private/dovecot.key
smtpd_use_tls=taip
smtpd_tls_auth_only = taip

smtpd_sasl_type = balandis
smtpd_sasl_path = privatus/auth
smtpd_sasl_auth_enable = taip
smtpd_recipient_restrictions = leidimas_sasl_authenticated,permit_mynetworks,reject_unauth_destination

# mydestination = $mano prieglobos pavadinimas, site.com, localhost.com, localhost
mydestination = localhost, localhost.localdomain
myhostname = site.com
## Liepia Postfix naudoti Dovecot LMTP, o ne savo LDA, kad išsaugotų el. laiškus vietinėse pašto dėžutėse.
virtual_transport = lmtp:unix:private/dovecot-lmtp
## Nurodo „Postfix“, kad naudojate MySQL virtualiems domenams saugoti, ir nurodo kelius į duomenų bazės ryšius.
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Sukurkite reikiamus failus:

# vim /etc/postfix/mysql-virtual-mailbox-domains.cf
vartotojas = vmail
slaptažodis = gR29eZ34
kompiuteriai = 127.0.0.1
dbname = vmail
užklausa = SELECT 1 FROM domenai WHERE name = "%s"

# vim /etc/postfix/mysql-virtual-mailbox-maps.cf
vartotojas = vmail
slaptažodis = gR29eZ34
kompiuteriai = 127.0.0.1
dbname = vmail
query = PASIRINKITE 1 IŠ vartotojų WHERE el. paštas = "%s"

# vim /etc/postfix/mysql-virtual-alias-maps.cf
vartotojas = vmail
slaptažodis = gR29eZ34
kompiuteriai = 127.0.0.1
dbname = vmail
query = PASIRINKTI paskirties vietą FROM slapyvardžių WHERE šaltinis = "%s"

Egzaminas:

paslauga postfix iš naujo paleiskite postmap -q site.ru mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf postmap -q [apsaugotas el. paštas] mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf postmap -q [apsaugotas el. paštas] mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Pirmieji du patikrinimai turėtų grąžinti 1, o trečiasis – el. laiškas su slapyvardžiu: [apsaugotas el. paštas]

vim /etc/postfix/master.cf

Pateikimas inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=šifruoti
-o smtpd_sasl_auth_enable=taip
-o smtpd_client_restrictions=permit_sasl_authenticated,atmesti

Patikrinkime visus „Postfix“ diegimus ir paleiskite iš naujo (neužtenka įkelti iš naujo, ar kaip?):

„postconf -n“ paslauga „postfix“ paleidžiama iš naujo

4 veiksmas: Dovecot konfigūracija

Sukurkime kopijas tik tuo atveju:

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot -sql.conf.ext.orig cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig cp /etc/dovecot/conf.d/10 -ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig vim /etc/dovecot/dovecot.conf

...
!include_try /usr/share/dovecot/protocols.d
protokolai = imap lmtp pop3

Kai jūsų svetainė plečiasi, galvojate apie nuomotis ką nors rimtesnio nei tik priegloba. Dedikuoti serveriai šiais laikais yra brangūs ir yra geras jų pakaitalas VDS arba VPS. Dažnai, jei vartotojas niekada neadministravo tokio tipo serverio, jis tiesiog įkelia savo svetainę į serverį ir palieka viską taip, kaip yra, manydamas, kad mašinos iš viso nereikia konfigūruoti, tai yra, kaip įprastame hostinge. Tai iš esmės neteisinga. Jei nepaliksite nulinių nustatymų, o nuomodamiesi įdiegsite tik OS ir valdymo pultą, jūsų VDS/VPS veiks tik maždaug 1/4 talpos. Nepatyrę vartotojai dažniausiai nustemba, kai jų svetainė galingame VDSk sugenda net esant menkiausiam krūviui ir bėga į administraciją prašydami paaiškinti, kodėl taip nutinka, į ką gauna šabloninį atsakymą, kuriame sakoma, optimizuokite scenarijų darbą. Mes padarysime viską, kad iš jūsų išspaustų visas sultis virtualus serveris.

Ką turime kaip pavyzdį:
» VDS
» OS – Debian
» Valdymo skydelis – ISPmanager
» RAM - 4096 MB
» Procesorius – AMD 2799.999 Mhz 4 branduoliai
» Diskas 150 GB
Tokį stebuklą galima išsinuomoti iš bet kurio šeimininko už 1000-1500 rublių per mėnesį.

Sistemos sąranka.

Visi veiksmai atliekami kaip root vartotojas.

1. mano.cnf- mysql optimizavimas. Valdymo skydelyje atidarykite failų tvarkyklę, atidarykite etc/mysql/my.cnf ir pakeiskite eilutes, kurias turite iš toliau pateikto sąrašo, atitinkamomis to paties sąrašo eilutėmis. Ko trūksta, priduriame.


rakto_buferis = 16 mln
table_open_cache = 4
Rūšiavimo_buferio_dydis = 64K
skaitymo_buferio_dydis = 256K
read_rnd_buffer_size = 256K
tinklo_buferio_ilgis = 2K
gijos_stack = 240 tūkst
query_cache_size = 128M
query_cache_limit = 16 mln
query_cache_type = 1
max_connections = 300
gijos_talpyklos_dydis = 100
myisam-recover=ATsarginė kopija
expire_logs_days = 10
max_binlog_size = 100 mln
innodb_buffer_pool_size = 1024M
innodb_additional_mem_pool_size = 16 mln
innodb_flush_log_at_trx_commit = 2
greitai
citatos-pavadinimai
maksimalus_leistinas_paketas = 64 mln

Iš naujo paleisime raumenis tarnybose.

Mūsų serveris dabar optimizuotas duomenų bazėje. Puslapiai turėtų būti įkeliami daug greičiau, o duomenų bazė atlaikys dideles apkrovas.

2. AllowOverride all- Įgalinti perrašymą.htaccess
Eime /etc/apache2/sites-available/default pakeisti visas eilutes nuo AllowOverride jokioįjungta AllowOverride all
Tai leis .htaccess perrašyti taisykles. Numatytasis nustatymas yra joks ir daugeliu atvejų jūsų svetainėje bus rodoma vidinė serverio klaida, ty 500-oji klaida. Pavyzdys, kas turėtų nutikti:

Parinktys Rodyklės FollowSymLinks MultiViews
AllowOverride all
Užsakyti leisti, atmesti
leisti iš visų

3. php.ini- php konfigūratorius. Jame yra daug naudingų parametrų, kuriuos galite keisti pagal savo poreikius. Raskite ir pakeiskite toliau pateiktas eilutes, kad atitiktų jūsų pageidavimus. Norėdami sužinoti, kur yra jūsų php.ini, svetainėje sukurkite failą info.php su tekstu ir atidarykite jį savo naršyklėje. Pavyzdžiui, http://site.ru/info.php. Eilėje Įkeltas konfigūracijos failas bus parodytas kelias.
// Didžiausias duomenų, įkeltų į serverį naudojant POST metodą, dydis
pašto_maksimalus_dydis = 64M
// Didžiausias į jūsų serverį įkeltų duomenų dydis
įkėlimo_maksimalus_failo dydis = 16M
// Išvesties klaidos. Jei derinate scenarijus, nustatykite jį į Įjungta
display_errors = Išjungta
// Tas pats, kas aukščiau, tik paleisties procesui
display_startup_errors = Įjungta | Išjungta
// Klaidų žurnalas. jei rąstai užima daug vietos, nustatykite jį į Išjungta
log_errors = Įjungta
// Pakartokite rodomas klaidas
ignore_repeated_errors = Įjungta
// Maksimalus atminties kiekis scenarijui vykdyti
atminties_riba = 24M

Išsaugoję iš naujo paleiskite serverį.

PHP modulių diegimas.

Norėdami įdiegti modulius, turite paleisti komandas. Komandos vykdomos SSH kliente. Viskas paprasta, jei, pavyzdžiui, skydelis neatsidaro arba įvyksta koks nors gedimas, tada per SSASH komandas galite iš naujo paleisti serverį, kažką pataisyti ir pan. Komandos vykdomos per SSH klientą. Populiariausias yra Putty. Diegimo nereikia. Atidarykite, parašykite serverio IP (jis jums duotas su slaptažodžiais), atsidaro konsolė - juodas langas. Įveskite savo vartotojo vardą (root) ir slaptažodį. Atminkite, kad įvedus slaptažodį saugumo sumetimais simboliai nespausdinami. Ir paspauskite Enter. Dabar galite vykdyti komandas. Norėdami nerašyti jų rankiniu būdu, įdėkite juos dešiniuoju pelės mygtuku.

1. eAccelerator- mes jį iškeliame į pirmą vietą, jos pagalba tinklalapių svoris tampa kelis kartus mažesnis. Mes vykdome šias komandas po vieną.

aptitude įdiegti php5-dev make re2c
wget https://github.com/eaccelerator/eaccelerator/archive/master.zip
unzip master.zip
cd greitintuvas-master
phpize
./configure
padaryti įdiegti
mkdir /var/cache/eaccelerator;chmod 0777 /var/cache/eaccelerator
paslauga apache2 paleisti iš naujo

Eikite į PHP plėtinius ir ieškokite greitintuvo. Jei yra, viskas padaryta teisingai.

2. Modulių aktyvinimas- kai kurie moduliai jau įtraukti, bet nėra aktyvuoti. Komandas vykdome po vieną.

a2enmod perrašyti
apt-get install php5-gd

Apatinė eilutė.

Tai viskas. Dabar serveris išnaudoja beveik visą savo potencialą ir gali atlaikyti dideles apkrovas. Jei norite ko nors paklausti šia tema, ar ką nors pridėti, rašykite komentaruose, atsakysiu visiems.

Internete šiandien galima ne tik pramogauti, bet ir mokytis, dirbti bei užsidirbti. Svetainių skaičius auga kas sekundę, prieglobos paslaugos taip pat tampa patrauklios ir daugėja kaip grybų po lietaus. Būna, kad šeimininkas pateisina visus lūkesčius, bet kartais tenka kraustytis. Galite samdyti laisvai samdomą darbuotoją, bet geriau išmokti tai padaryti patiems. Šiandien rasite trumpą instrukciją šiam atvejui.

Problemos formulavimas

Situacija yra pati svarbiausia. Internetinė parduotuvė, talpinama bendrame priegloboje, pradėjo priimti klientus po jos paleidimo, tačiau buvo užklausų dėl funkcionalumo, o kūrėjai aktyviai tobulino svetainę. Paaiškėjo, kad kai tuo užsiima keli žmonės, nuolat kopijuoti failus per FTP testavimui, taip pat į darbo svetainę, yra labai problematiška. Jūs praradote kontrolę, kas ką padarė, ir turėjote nerimauti dėl originalių failų išsaugojimo, kad būtų lengva juos grąžinti. Savininkas turėjo arba derinti taisymus, arba viską nukopijuoti pats. Kūrėjas negalėjo iš karto pamatyti rezultato ir laukė. Procesas buvo labai sulėtėjęs. Dėl to priėjome prie išvados, kad reikia išnaudoti „Git“ galimybes ir sukurti naują veidrodinę svetainę, kurioje galėtume viską išbandyti. Naudodamas šią schemą kūrėjas galėjo iš karto išbandyti kodą, o patvirtinus kodas buvo perduotas meistrui ir paskelbtas gamybos vietoje. Taip pat galite lengvai sekti įsipareigojimus.

Antra problema: priegloba nuolat strigdavo. Priežastis galiausiai buvo rasta: Įėjimo procesų limitas – parametras, kuris nustato CGI/PHP procesų, įtrauktų į virtualų konteinerį, skaičių ir apie kurį prieglobos rinkodaros specialistai nemėgsta kalbėti. Grafikuose taip pat nesimato, tik mažas stulpelis lentelėje. Dėl to esant mažoms procesoriaus ir RAM apkrovoms (ne daugiau kaip 20%), serveris visiškai neveikė, net ir esant minimaliam lankytojų skaičiui. Dėl to buvo priimtas sprendimas kraustytis.

Pradiniai serverio nustatymai

OC VDS įdiegiamas automatiškai. Tiesiog pasirinkite versiją ir parinktį su žiniatinklio skydeliu arba be jo ir šiek tiek palaukite, kol gausite el. laišką su prisijungimo informacija. Prieglobos svetainės taip pat siūlo įvairias žiniatinklio skydelius. Kai buvo sukurta ši medžiaga, Vesta nepalaikė Ubuntu 16.04 ir tam nebuvo poreikio, todėl pasirinko švarią sistemą. Visi tolesni veiksmai atliekami kaip root. Pirmiausia patikriname lokalę, laiko juostą ir laiką. Apskritai žiniatinklio programos dažniausiai nekreipia dėmesio į kai kuriuos sistemos nustatymus, tačiau kartais taip ir būna, todėl geriau viską gauti iš karto.

# lokalė

Jei gaunamas atsakymas skiriasi nuo ru_RU.UTF, mes jį sukonfigūruojame iš naujo.

# locale-gen ru_RU ru_RU.UTF-8 ru_RU ru_RU.UTF-8 # localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # dpkg-reconfigure locales # update-locale LANG=ru_RU.UTF-8

Tikrinti laiką:

Jei laiko juosta nesutampa, sukonfigūruosime iš naujo.

# dpkg-perkonfigūruoti tzdata

Serverio atnaujinimas:

# tinkamas atnaujinimas ir tinkamas atnaujinimas

Dabar galime įdiegti paslaugas.

Interneto serverio įdiegimas

Nepaisant jų įvairovės, diegimo pasirinkimas paprastai priklauso nuo trijų variantų: „Apache“, „nginx“ arba „nginx“ kaip „Apache“ atvirkštinė dalis. „Apache“ yra labai lanksti ir naudoja modulius dinaminėms užklausoms apdoroti, todėl puikiai tvarko dinamiką. „Nginx“ gerai pateikia statinius duomenis ir sunaudoja mažiau išteklių, tačiau dinamikai apdoroti naudoja trečiosios šalies modulį, o tai sumažina greitį ir šiek tiek apsunkina nustatymus. Priklausomai nuo konkrečios programos, kiekvienas iš jų gali turėti savo privalumų ir trūkumų bei rodyti skirtingą greitį. Todėl galutinis žiniatinklio serverio pasirinkimas visada turi būti patvirtintas praktika, pasirenkant geriausią variantą. „nginx“ problema yra ta, kad kai kuriuose konkrečiuose varikliuose turite rankiniu būdu dirbti su peradresavimais, o „Apache“ viskas veiks tiesiogine prasme, tereikia įjungti mod_rewrite.

Apkrovos testavimas gali būti atliekamas naudojant ab (Apache Benchmark, įtrauktas į apache2-utils) arba siege. Be to, geriau patikrinti iš localhost ir nuotolinio mazgo, kad pamatytumėte, kaip veikia tinklas.

# ab -c 10 -n 6000 http://example.org/

Nors ab yra daugiau sau, įvertinti instaliacijų efektyvumą. Pašalinį paprastai domina tik tai, ką rodo „Google PageSpeed“, todėl turėtumėte sutelkti dėmesį ir į tai.

Pastaruoju atveju sename hostinge svetainė rodė 60, perkėlus į VDS (su tais pačiais parametrais) 72 apache numatytajame instaliacijoje, nginx su plika konfigūracija - 62, pridėjus suspaudimą - 78. Sustabdome ten ir pasirinko nginx . Saugykloje yra keli paketai; daugeliu atvejų pakanka pagrindinio branduolio, kuriame yra visi pagrindiniai moduliai; PHP mums reikia FPM.

# apt nginx įdiegti nginx php7.0-fpm

Failas paprastai yra standartinis, tačiau dėl greičio pridėsime talpyklą ir glaudinimą. Tikslūs parametrai kiekvienu atveju turi būti parinkti eksperimentiškai, tačiau mažiems ir vidutiniams projektams tokių nustatymų dažniausiai pakanka. Prie nginx.conf pridedame arba, jei pasiseka, pašaliname komentarus http skiltyje:

# nano /etc/nginx/nginx.conf http ( .... open_file_cache max=200000 inactive=60s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on on; server_tokens off; serverio_pavadinimų_nustatymas; serverio_pavadinimų_pakeitimas_ body_timeout 1 0; gzip įjungtas; gzip_disable „msie6“; gzip_static įjungtas; gzip_vary įjungtas; gzip_proxyed bet koks; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascriptxml text/xml / javascript programa / javascript tekstas / x-js; )

Sukurkite domeno nustatymus:

# nano /etc/nginx/sites-available/example.org serveris (klausymas 80; serverio_pavadinimas example.org numatytasis; root /var/www/example.org; access_log /var/log/nginx/access.log; error_log /var /log/nginx/error.log; rewrite_log on; # Naudingas nustatymas indekso index.php derinimui; try_files $uri $uri/ /index.php?$query_string; vieta ~ \.php$ (įskaitant /etc/nginx/fastcgi_params ; # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.0-fpm.sock; ) # Talpykloje saugokite vaizdus ir txt/XML/JS/CSS. Galite pašalinti nereikalingus dalykus arba pridėti ką nors vietos ~* ^ .+\.(jpg|jpeg|gif|png|js|css|txt|xml)$ ( access_log off; galioja 30 d.; ) # Blokuokite prieigą prie .git katalogo (apie tai vėliau), pagal analogiją pridedame savo taisyklių vieta ~ /\.git ( paneigti viską; ) )

Tai yra bendras standartinio variklio pavyzdys. Kai kuriems varikliams, tokiems kaip „OpenCart“ ar „WebAsyst“, reikalingi specialūs nustatymai, ir net tai, kas siūloma internete, ne visada veikia.

Pažiūrėkime, ar suspaudimas veikia. Tai galima padaryti pažiūrėjus į „Firebug“ antraštę „Content-Encoding“ (joje turėtų būti rodomas „gzip“) arba naudojant specialią paslaugą.

Įjungiame svetainę:

# ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/example.org

Iš naujo paleiskite nginx:

# paslaugos „nginx“ paleidimas iš naujo

Bet tai dar neveiks. Turite sukonfigūruoti PHP. FPM atveju visi nustatymai yra /etc/php/7.0/fpm. Patikriname, ar paskyra pool.d/www.conf atitinka tą, kurią naudoja nginx, ir lizdas įjungtas.

# nano /etc/php/7.0/fpm/pool.d/www.conf user = www-data group = www-data listen = /run/php/php7.0-fpm.sock

Be to, galite atkreipti dėmesį į parametrus, kurie lemia procesų, kurie aptarnaus PHP užklausas, skaičių.

Pm = dinaminis pm.max_children = 15 pm.start_servers = 18 pm.min_spare_servers = 2 pm.max_spare_servers = 6

Šiek tiek apkrautuose serveriuose gali neužtekti procesų. Žurnalai jums apie tai iš karto praneš.

# cat /var/log/php7.0-fpm.log ĮSPĖJIMAS: serveris pasiekė pm.max_children nustatymą (5), apsvarstykite galimybę jį padidinti

Kitas svarbus failas yra php.ini. Ten yra daug parametrų, ir aš galėčiau ilgai tęsti. Bet iš pradžių turėtumėte įjungti glaudinimą, nustatyti maksimalų įkėlimo failo dydį, prijungti paštą (), seansus, ir labai patartina įjungti OPcache greitintuvą.

# nano /etc/php/7.0/fpm/php.ini zlib.output_compression = Įjungta upload_max_filesize = 2M sendmail_path = sendmail -t -i session.save_path = "/var/lib/php/sessions" opcache.enable=1 opcache. memory_consumption=128 pcache.max_accelerated_files=2000

Būtinai patikrinkite prieigos teises prie /var/lib/php/sessions, kad nginx galėtų ten rašyti, kitaip seansai nebus formuojami. Paleidžiame iš naujo.

# paslauga php7.0-fpm iš naujo

Dabar svetainė perkeliama. Jei perkeliame iš kito hostingo, tada ten sukuriame atsarginę kopiją. Jei turite prieglobos žiniatinklio skydelį, galite pasinaudoti jo galimybėmis. Arba rankiniu būdu:

# tar -zcvf backup.tar.gz /var/www

Ir naujoje vietoje išpakuojame:

# tar -zxvf backup.tar.gz /var/www

Tačiau svetainei mums reikia DBVS.


Įdiekite MySQL

Su MySQL viskas labai paprasta. Įeikite

Tęsinys prieinamas tik nariams

1 variantas. Prisijunkite prie „svetainės“ bendruomenės ir perskaitykite visą svetainėje esančią medžiagą

Narystė bendruomenėje per nurodytą laikotarpį suteiks prieigą prie VISOS „Hacker“ medžiagos, padidins asmeninę kaupiamą nuolaidą ir leis kaupti profesionalų „Xakep Score“ įvertinimą!