Amikor dedikált virtuális kiszolgálót kap a webhelye futtatásához, jó esély van arra, hogy azt mindenki számára konfigurálják, és ne úgy szabja meg, hogy maximalizálja a webhely futtatásához szükséges teljesítményt.
Tartalom[ elrejt ]
|
Áttekintés
Számos problémás terület van, ahol maximalizálni akarjuk a teljesítményt:
-
Linux konfiguráció
Általában futnak olyan szolgáltatások, amelyeknek nem kell lenniük, pazarolva a memóriát, amelyet több kapcsolatra lehetne használni. -
MySQL konfiguráció
Az alapértelmezett beállítások gyakran egy kis kiszolgálón alapulnak, hozzáadhatunk néhány kulcsfontosságú módosítást a teljesítmény nagy növelése érdekében. -
Apache konfiguráció
Alapértelmezés szerint a legtöbb tárhelyszolgáltató szinte minden modullal telepíti az apache-ot. Nincs ok a modulok betöltésére, ha soha nem fogja használni őket. -
PHP konfiguráció
Az alapértelmezett PHP konfiguráció hasonlóan dagadt, általában rengeteg felesleges extra modul van telepítve. -
PHP Opcode gyorsítótár
Ahelyett, hogy engedélyezné a PHP-nek, hogy a szkripteket minden egyes alkalommal újrafordítsa, az opcode gyorsítótár gyorsítótárazza a fordított parancsfájlokat a memóriában, ezzel óriási teljesítménynövelést biztosítva. -
Biztonsági mentések
Valószínűleg be kell állítania néhány automatikus biztonsági mentést, mivel a tárhelyszolgáltató nem fogja megtenni ezt helyetted. -
Biztonság
Persze, a Linux alapértelmezés szerint elég biztonságos, de általában vannak olyan kirívó biztonsági problémák, amelyeket néhány gyors beállítással megoldhat.
Linux konfiguráció
Elég sok módosítást tehet, amelyek kissé eltérhetnek a használt szervertől függően. Ezek a módosítások egy CentOS rendszert futtató kiszolgálóra vonatkoznak, de a DV szerverek többségének működnie kell.
Tiltsa le a DNS-t
Ha a tárhelyszolgáltató kezeli a domain DNS-ét (valószínűleg), akkor letilthatja a DNS-szolgáltatás futtatását.
letiltja a dns-t /etc/init.d/named stop chmod 644 /etc/init.d/named
A chmod parancs eltávolítja a végrehajtási engedélyt a parancsfájlból, megakadályozva annak indítását.
Tiltsa le a SpamAssassin alkalmazást
Ha nem saját szerverén használ e-mail fiókokat, akkor ne törődjön a spamellenes eszközök futtatásával. (Érdemes megnéznie a Google Apps alkalmazást is, sokkal jobb e-mail megoldás)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Az xinetd letiltása
Az xinetd folyamat számos más folyamatot tartalmaz, amelyek egyike sem hasznos egy tipikus webszerver számára.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Korlátozza a Plesk memóriahasználatot
Ha a plesk panelt használja, akkor egy opciófájl hozzáadásával kevesebb memória használatára kényszerítheti.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Adja hozzá a következő sorokat a fájlhoz:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Ne feledje, hogy ez az opció ismert, hogy a MediaTemple DV szervereken működik, de másnál nem ellenőrizték. (Lát Hivatkozások )
A Plesk letiltása vagy kikapcsolása (opcionális)
Ha csak évente egyszer használja a Plesk programot, akkor nagyon kevés oka van egyáltalán futni hagyni. Ne feledje, hogy ez a lépés teljesen opcionális és kissé haladóbb.
A plesk kikapcsolásához futtassa a következő parancsot:
/etc/init.d/psa stop
Az alábbi parancs futtatásával letilthatja az indításkor történő futtatást:
chmod 644 /etc/init.d/psa
Ne feledje, hogy ha letiltja, akkor nem tudja manuálisan elindítani a fájlengedélyek visszaállítása nélkül (chmod u + x).
MySQL konfiguráció
Engedélyezze a Lekérdezés gyorsítótárát
Nyissa meg az /etc/my.cnf fájlt, és adja hozzá a következő sorokat a [mysqld] szakaszához:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Ha szeretné, több memóriát adhat a lekérdezés gyorsítótárához, de ne használjon túl sokat.
Tiltsa le a TCP / IP-t
Meglepően sok gazdagép alapértelmezés szerint hozzáférést biztosít a MySQL-hez a TCP / IP-n, aminek nincs értelme egy weboldal számára. A következő parancs futtatásával kitalálhatja, hogy a mysql hallgat-e a TCP / IP-n:
netstat -an | grep 3306
A letiltáshoz adja hozzá a következő sort az /etc/my.cnf fájlhoz:
Átugrani a hálózatot
Apache konfiguráció
Nyissa meg az /etc/httpd/conf/httpd.conf fájlban gyakran megtalálható httpd.conf fájlt.
Keresse meg az így kinéző sort:
Időtúllépés 120
És változtassa meg erre:
Időtúllépés 20
Most keresse meg azt a részt, amely ezeket a sorokat tartalmazza, és állítson be valami hasonlót:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
PHP konfiguráció
Az egyik dolog, amelyet szem előtt kell tartani, amikor a szervert a PHP platformon módosítja, az az, hogy minden egyes apache szál a PHP-t külön helyre tölti fel a memóriában. Ez azt jelenti, hogy ha egy fel nem használt modul 256 ezer memóriát ad hozzá a PHP-hez, akkor 40 apache szálon 10 MB memóriát pazarol.
Távolítsa el a felesleges PHP modulokat
Meg kell találnia a php.ini fájlt, amely általában az /etc/php.ini címen található (vegye figyelembe, hogy egyes disztribúciókban lesz egy /etc/php.d/ könyvtár, számos .ini fájlkal, minden modulhoz egy.
Hozzászólás az összes modulhoz a következő modulokkal:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ápolja
Todo: Adjon ide további információkat.
PHP Opcode gyorsítótár
Számos opcode gyorsítótár használható, beleértve az APC-t, az eAccelerator-ot és az Xcache-t, az utolsó a személyes preferenciám a stabilitás miatt.
Töltse le az xcache fájlt, és bontsa ki egy könyvtárba, majd futtassa a következő parancsokat az xcache forráskönyvtárából:
phpize ./configure --enable-xcache készítsen telepíteni
Nyissa meg a php.ini fájlt, és adjon hozzá egy új szakaszt az xcache számára. Be kell állítania az útvonalakat, ha a php moduljait máshonnan töltötte be.
vi /etc/php.ini
Adja hozzá a következő szakaszt a fájlhoz:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "felhasználónevem" xcache.admin.pass = "putanmd5hashhere" [xcache] ; Az xcache.size módosításával állítsa be az opcode gyorsítótár méretét xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 ; Az xcache.var_size módosításával módosíthatja a változó gyorsítótár méretét 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 = Ki xcache.readonly_protection = Be xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Be xcache.stat = Be xcache.optimizer = Ki
Todo: Ezt ki kell bővíteni egy kicsit, és linkelni kell a referenciákban található xcache-re.
Biztonsági mentések
Kevésbé fontosabb, mint az automatikus biztonsági másolat készítése a webhelyről. Lehet, hogy pillanatfelvételeket készíthet tárhelyszolgáltatójától, amelyek szintén nagyon hasznosak, de én inkább automatizált biztonsági másolatokat szeretnék.
Hozzon létre automatizált biztonsági mentési parancsfájlt
Általában egy / backups könyvtár létrehozásával kezdem, alatta egy / backups / files könyvtárral. Ha akarja, beállíthatja ezeket az utakat.
mkdir -p / biztonsági mentések / fájlok
Most hozzon létre egy backup.sh parancsfájlt a biztonsági mentések könyvtárában:
vi /backups/backup.sh
Adja hozzá a következőket a fájlhoz, szükség szerint módosítva az elérési utakat és a mysqldump jelszót:
#! / bin / sh
THEDATE = `dátum +% 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 {} \;
A szkript először létrehoz egy dátumváltozót, így az összes fájl azonos elnevezésű lesz egyetlen biztonsági mentéshez, majd kibontja az adatbázist, tárolja a webfájlokat és gzipezi őket. A find parancsokkal minden 5 napnál régebbi fájlt eltávolíthatunk, mivel nem akarja, hogy a meghajtóban elfogyjon a hely.
Tegye futtathatóvá a szkriptet a következő parancs futtatásával:
chmod u + x /backups/backup.sh
Ezután hozzá kell rendelnie, hogy a cron automatikusan fusson. Győződjön meg arról, hogy olyan fiókot használ, amely hozzáfér a biztonsági mentések könyvtárához.
crontab -e
Adja hozzá a következő sort a crontab-hoz:
1 1 * * * /backups/backup.sh
A szkriptet idő előtt tesztelheti, ha futtatja, miközben bejelentkezett a felhasználói fiókba. (A biztonsági mentéseket általában rootként futtatom)
A biztonsági másolatok szinkronizálása a helyszínen kívül az Rsync segítségével
Most, hogy fut a szerver automatikus biztonsági mentése, az rsync segédprogram segítségével szinkronizálhatja őket máshova. Olvassa el ezt a cikket arról, hogyan állíthatja be az ssh kulcsokat az automatikus bejelentkezéshez: Nyilvános SSH kulcs hozzáadása a távoli kiszolgálóhoz egyetlen parancsban
Kipróbálhatja ezt úgy, hogy futtatja ezt a parancsot egy másik helyen lévő Linux vagy Mac gépen (van otthon egy linux szerverem, ahol ezt futtatom)
rsync -a [email protected]: / biztonsági mentések / fájlok / * / offsitebackups /
Az első futtatáshoz elég sok időre van szükség, de a végén a helyi számítógépnek rendelkeznie kell a fájlok könyvtárának másolatával a / offsitebackups / könyvtárban. (A szkript futtatása előtt feltétlenül hozza létre ezt a könyvtárat)
Ezt úgy ütemezheti, hogy hozzáadja egy crontab sorhoz:
crontab -e
Adja hozzá a következő sort, amely óránként futtatja az rsync-et a 45 perces jelzésnél. Észre fogja venni, hogy az rsync teljes elérési útját itt használjuk.
45 * * * * / usr / bin / rsync -a [email protected]: / biztonsági mentések / fájlok / * / offsitebackups /
Ütemezheti, hogy más időpontban, vagy csak naponta egyszer fusson. Ez tényleg rajtad múlik.
Vegye figyelembe, hogy sok segédprogram létezik, amelyek lehetővé teszik az szinkronizálást az ssh vagy az ftp segítségével. Nem kell használnia az rsync alkalmazást.
Biztonság
Az első dolog, amit meg kell tennie, győződjön meg arról, hogy rendelkezik-e rendes felhasználói fiókkal az ssh-n keresztül, és győződjön meg arról, hogy a su használatával válthat root-ra. Nagyon rossz ötlet engedélyezni a root bejelentkezést az ssh felett.
Tiltsa le a root bejelentkezést SSH-n keresztül
Szerkessze az / etc / ssh / sshd_config fájlt, és keresse meg a következő sort:
#PermitRootLogin igen
Változtassa meg ezt a sort így:
PermitRootLogin sz
Győződjön meg róla, hogy rendelkezik-e rendes felhasználói fiókkal, és be tudja-e indítani a gyökérkezelést, mielőtt ezt a változtatást végrehajtaná, különben kizárhatja magát.
Tiltsa le az SSH 1. verzióját
Valójában nincs ok az SSH 2-es verzióján kívül más használatára, mivel biztonságosabb, mint a korábbi verziók. Szerkessze az / etc / ssh / sshd_config fájlt, és keresse meg a következő szakaszt:
#Protokol 2,1 2. jegyzőkönyv
Győződjön meg arról, hogy csak a 2. protokollt használja, az ábra szerint.
Indítsa újra az SSH-kiszolgálót
Most ennek újraindításához újra kell indítania az SSH szervert.
/etc/init.d/sshd újraindítás
Ellenőrizze, hogy vannak-e nyitott portok
A következő paranccsal megtekintheti, hogy a kiszolgáló mely portokat figyeli:
netstat -an | fogd hallgatni
Valójában nem kellene hallgatnia a plesk számára a 22., a 80. és esetleg a 8443-as portokon kívül.
Tűzfal beállítása
Opcionálisan beállíthat egy iptables tűzfalat a további kapcsolatok blokkolásához. Például általában letiltom a hozzáférést bármely más porthoz, kivéve a munkahelyi hálózatot. Ha dinamikus IP-címmel rendelkezik, el kell kerülnie ezt a lehetőséget.
Ha eddig követte az útmutató összes lépését, akkor valószínűleg nem szükséges tűzfalat is hozzáadni a keverékhez, de jó megérteni a lehetőségeket.
Lásd még
- Az Iptables használata Linuxon