Kai gaunate specialųjį virtualų serverį paleisti savo svetainę, yra tikimybė, kad ji yra sukonfigūruota visiems, o ne pritaikyta, siekiant padidinti svetainės veikimo našumą.
Turinys[paslėpti]
|
Apžvalga
Yra daug probleminių sričių, kuriose norime maksimaliai padidinti našumą:
- Linux konfigūracija Dažniausiai naudojamos paslaugos nereikalauja išmesti atminties, kuri gali būti naudojama daugiau ryšių.
- MySQL konfigūracija Dažnai numatytieji nustatymai yra pagrįsti mažu serveriu, todėl mes galime pridėti keletą pagrindinių pakeitimų, kad būtų galima daug padidinti našumą.
- Apache konfigūracija Pagal nutylėjimą dauguma prieglobos paslaugų teikėjų įdiegia apache beveik kiekvieną modulį. Nėra jokios priežasties įkelti modulius, jei jūs jų niekada nenorite.
- PHP konfigūracija Numatyta PHP konfigūracija taip pat yra išpūstos, paprastai yra talpos nereikalingų papildomų modulių.
- PHP opcode talpykla Vietoj to, kad PHP kaskart pakartotinai kompiliuos scenarijus, "opcode" talpyklė talpins atmintyje surinktus scenarijus į talpyklą, kad padidintų našumą.
- Atsarginės kopijos Tikriausiai turėtumėte įdiegti automatizuotas atsargines kopijas, nes jūsų prieglobos paslaugų teikėjas nesiruošia tai padaryti už jus.
- Saugumas Žinoma, pagal numatytuosius nustatymus "Linux" yra pakankamai saugi, bet paprastai yra keletas akivaizdžių saugumo problemų, kurias galite išspręsti keliais greitais nustatymais.
Linux konfigūracija
Galite atlikti keletą patobulinimų, kurie šiek tiek skirsis priklausomai nuo jūsų naudojamo serverio. Šie pakeitimai yra serveriui, kuriame veikia "CentOS", tačiau jie turėtų dirbti daugeliu DV serverių.
Išjungti DNS
Jei jūsų prieglobos paslaugų teikėjas tvarko jūsų domeno DNS (tikriausiai), tada galite išjungti DNS paslaugą.
disable dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Komandos chmod pašalina scenarijaus vykdymo leidimą, sustabdydamas paleidimą paleidžiant.
Išjungti "SpamAssassain"
Jei nenaudojate el. Pašto abonementų savo pačiame serveryje, neturėtumėte nerimauti dirbti su anti-spam įrankiais. (Taip pat turėtumėte patikrinti "Google Apps", daug geresnį el. Pašto sprendimą).
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Išjungti xinetd
"Xinetd" procese yra keletas kitų procesų, kurių nė vienas nėra naudingas įprastam žiniatinklio serveriui.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Apriboti Plesk atminties naudojimą
Jei naudojate "plesk" skydą, galite priversti jį naudoti mažiau atminties pridėdami parinkčių failą.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Į failą pridėkite šias eilutes:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Atkreipkite dėmesį, kad ši galimybė veikia "MediaTemple DV" serveriuose, bet nebuvo patikrinta kitose. (Žr. Nuorodas)
Išjungti arba išjungti Plesk (neprivaloma)
Jei kartą per metus naudojate "Plesk", tai yra labai mažai priežasčių, kodėl ji vis tiek išlieka. Atminkite, kad šis žingsnis yra visiškai neprivalomas ir šiek tiek labiau pažengęs.
Paleiskite šią komandą, kad išjungtumėte "plesk":
/etc/init.d/psa stop
Galite išjungti jį paleisti paleidžiant paleisdami šią komandą:
chmod 644 /etc/init.d/psa
Atminkite, kad jei jį išjungsite, negalėsite jį paleisti rankiniu būdu, nepakeisite failų teisių (chmod u + x).
MySQL konfigūracija
Įgalinti užklausos talpyklą
Atidarykite savo /etc/my.cnf failą ir pridėkite šias eilutes savo [mysqld] skyriuje:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Jei norite, galite pridėti daugiau atminties į užklausos talpyklą, bet nenaudokite per daug.
Išjungti TCP / IP
Nenuostabu, kad kompiuterių skaičius įgalina prieigą prie "MySQL" pagal TCP / IP pagal nutylėjimą, o tai neturi prasmės šiai svetainei. Galite išsiaiškinti, ar mysql klauso TCP / IP, paleisdami šią komandą:
netstat -an | grep 3306
Norėdami išjungti, pridėkite šią eilutę prie failo /etc/my.cnf:
skip-networking
Apache konfigūravimas
Atidarykite httpd.conf failą, dažnai randamą /etc/httpd/conf/httpd.conf
Suraskite eilutę, kuri atrodo taip:
Timeout 120
Ir pakeisk tai į šį:
Timeout 20
Dabar raskite skyrių, kuriame yra šios eilutės, ir prisiderinkite prie panašaus:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
PHP konfigūracija
Vienas iš dalykų, kuriuos reikia nepamiršti, kai optimizuojant PHP serverio serverį, yra tai, kad kiekvienas apache srautas ketina įkelti PHP į atskirą atminties vietą. Tai reiškia, kad jei nepanaudotas modulis prideda 256k atminties PHP, per 40 apache temas jūs išmesite 10 MB atminties.
Pašalinti nereikalingus PHP modulius
Turėsite surasti savo failo php.ini, kuris paprastai yra / etc / php.ini (atkreipkite dėmesį, kad kai kuriuose distributyvuose bus katalogas /etc/php.d/ su daugybe.ini failų, vienas už kiekvieną modulį.
Komentuokite bet kurias apkrovos modulio linijas su šiais moduliais:
- Odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: pridėkite daugiau informacijos čia.
PHP opcode talpykla
Yra keletas op kodų talpyklų, kurias galite naudoti, įskaitant APC, eAccelerator ir Xcache, o paskutinis yra mano asmeninis pasirinkimas dėl stabilumo.
Atsisiųskite xcache ir išskleiskite ją į katalogą ir paleiskite šias komandas iš xcache šaltinio katalogo:
phpize./configure --enable-xcache make make install
Atidarykite savo failą php.ini ir pridėkite naują skyrių xcache. Jums reikės koreguoti kelius, jei jūsų php moduliai yra įkelti iš kažkur kitur.
vi /etc/php.ini
Į failą pridėkite šį skyrių:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = 'myusername' xcache.admin.pass = 'putanmd5hashhere' [xcache]; Change xcache.size to tune the size of the opcode cache xcache.size = 16M xcache.shm_scheme = 'mmap' xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Change xcache.var_size to adjust the size of variable cache xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off xcache.readonly_protection = On xcache.mmap_path = '/tmp/xcache' xcache.coredump_directory = '' xcache.cacher = On xcache.stat = On xcache.optimizer = Off
Todo: Reikia šiek tiek išplėsti ir nuoroda į xcache.
Atsarginės kopijos
Yra labai mažai svarbiau nei automatizuotų jūsų svetainės atsarginių kopijų kūrimas. Galbūt galėsite gauti atsarginę kopijavimą iš savo prieglobos paslaugų teikėjo, kurie taip pat yra labai naudingi, bet aš taip pat norėčiau turėti automatines atsargines kopijas.
Sukurkite automatinį atsarginį kopijavimo scenarijų
Aš paprastai pradedu kurti / atsarginių kopijų katalogą, po kurio yra / atsarginių kopijų / failų katalogas. Galite koreguoti šiuos kelius, jei norite.
mkdir -p /backups/files
Dabar sukurkite atsarginių kopijų šabloną atsarginių kopijų kataloge:
vi /backups/backup.sh
Į failą įtrauksite toliau nurodytus kelius ir mysqldump slaptažodį:
#!/bin/sh THEDATE=`date +%d%m%y%H%M` mysqldump -uadmin -pPASSWORD DATABASENAME > /backups/files/dbbackup$THEDATE.bak tar -cf /backups/files/sitebackup$THEDATE.tar /var/www/vhosts/my-website-path/httpdocs gzip /backups/files/sitebackup$THEDATE.tar find /backups/files/site* -mtime +5 -exec rm {}; find /backups/files/db* -mtime +5 -exec rm {};
Pagal scenarijų pirmiausia sukuriamas datos kintamasis, taigi visi failai bus pavadinti ta pačia vienintelei atsarginei kopijai, tada išsiunčiama į duomenų bazę, pakeičiami žiniatinklio failai ir gzipsami. Rasti komandas naudojamas pašalinti bet kokius failus, senesnes nei 5 dienas, nes nenorite, kad jūsų diskas paleistumėte vietą.
Padarykite vykdomąjį scenarijų paleisdami šią komandą:
chmod u+x /backups/backup.sh
Kitas turėsite priskirti jį automatiškai paleisti cron. Įsitikinkite, kad naudojate paskyrą, kuri turi prieigą prie atsarginių kopijų katalogo.
crontab -e
Į crontab pridėkite šią eilutę:
1 1 * * * /backups/backup.sh
Galite išbandyti scenarijų iš anksto, paleisdami jį prisijungdami prie vartotojo abonemento. (Paprastai aš paleisiu atsargines kopijas kaip šakninį)
Sinchronizuokite atsargines kopijas išjungus svetainę naudodamiesi "Rsync"
Dabar, kai paleidžiate savo serverio automatines atsargines kopijas, galite sinchronizuoti juos kur nors kitur naudodami rsync įrankį. Jūs norėsite perskaityti šį straipsnį, kaip nustatyti automatinį prisijungimą naudodami SSH klavišus: pridėkite viešą SSH klavišą prie nuotolinio serverio į vieną komandą
Galite išbandyti šią komandą, paleisdami šią komandą į "Linux" ar "Mac" įrenginį kitoje vietoje (turiu "Linux" serverį namuose, kuriame aš paleisti)
rsync -a [email protected]:/backups/files/* /offsitebackups/
Tai užtruks nemažai laiko, kol bus paleisti pirmą kartą, tačiau pabaigoje jūsų vietinis kompiuteris turėtų turėti failų katalogo kopiją / offsitebackups / kataloge. (Prieš paleisdami scenarijų būtinai sukurkite tą katalogą)
Jūs galite suplanuoti tai pridedant prie crontab eilutės:
crontab -e
Įtraukite šią eilutę, kuri kiekvieną valandą paleis rsync 45 minučių ženkle. Jūs pastebėsite, kad mes naudojame visą kelią į rsync čia.
45 * * * * /usr/bin/rsync -a [email protected]:/backups/files/* /offsitebackups/
Galite planuoti, kad jis paleidžiamas kitais laikais arba tik vieną kartą per dieną. Tai tikrai priklauso nuo tavęs.
Atkreipkite dėmesį, kad yra daug komunalinių paslaugų, kurios leis jums sinchronizuoti per ssh arba ftp. Jums nereikia naudoti rsync.
Saugumas
Pirmas dalykas, kurį norėtumėte padaryti, yra įsitikinti, kad turite įprastą vartotojo abonementą, kurį galite naudoti per ssh, ir įsitikinkite, kad galite naudoti su, kad pereitumėte prie root. Tai labai blogai idėja leisti tiesioginį prisijungimą root iš ssh.
Išjungti šakninį prisijungimą per SSH
Redaguokite / etc / ssh / sshd_config failą ir ieškokite šios eilutės:
#PermitRootLogin yes
Pakeiskite šią eilutę, kad atrodytų taip:
PermitRootLogin no
Įsitikinkite, kad turite įprastą vartotojo paskyrą ir galite root prisijungti prieš tai, kai atliksite šį pakeitimą, kitaip galite užsikimšti.
Išjunk SSH versiją 1
Nėra jokios priežasties naudoti nieko kito nei SSH 2 versiją, nes ji yra saugesnė nei ankstesnės versijos. Redaguokite / etc / ssh / sshd_config failą ir ieškokite tokio skirsnio:
#Protocol 2,1 Protocol 2
Įsitikinkite, kad naudojate tik 2 protokolą, kaip parodyta.
Iš naujo paleiskite SSH serverį
Dabar reikės iš naujo paleisti SSH serverį, kad šis įsigalios.
/etc/init.d/sshd restart
Patikrinkite, ar nėra atvirų uostų
Galite naudoti šią komandą, norėdami pamatyti, kuriuos serverius klauso:
netstat -an | grep LISTEN
Jūs tikrai neturėtumėte nieko klausytis, išskyrus uostus 22, 80, o gal ir 8443 pleskui.
Nustatykite ugniasienę
Pagrindinis straipsnis:"Iptables" naudojimas sistemoje "Linux"
Galite pasirinktinai nustatyti iptables užkardą, kad užblokuotumėte daugiau ryšių. Pavyzdžiui, paprastai blokuoju prieigą prie kitų uostų, išskyrus iš savo darbo tinklo. Jei turite dinaminį IP adresą, jūs norėsite to išvengti.
Jei iki šiol jau vykdote visus šio vadovo veiksmus, greičiausiai nebūtinai turite pridėti ugniasienę į mišinį, tačiau gerai suprasti jūsų parinktis.
Taip pat žiūrėkite
"Iptables" naudojimas sistemoje "Linux"
Nuorodos
- DV serverio optimizavimas (mediatemple.net)
- XCache