Amikor egy dedikált virtuális kiszolgálót futtat a webhelyére, jó esély van arra, hogy mindenkinek konfigurálva van, és nem testreszabható a weboldal futtatásához szükséges teljesítmény maximalizálásához.
tartalom[elrejt]
|
Áttekintés
Számos problémás terület van, ahol maximális teljesítményre van szükség:
- Linux konfiguráció Általában olyan szolgáltatások futnak, amelyeknek nem kell lenniük.
- MySQL konfiguráció Gyakran az alapértelmezett beállítások egy kis kiszolgálón alapulnak, néhány kulcsfontosságú módosítással növelhetjük a teljesítményt.
- Apache konfiguráció Alapértelmezés szerint a legtöbb tárhelyszolgáltató telepíti az apache-t majdnem minden telepített modulra. Nincs ok arra, hogy betöltsük a modulokat, ha mégsem használjuk őket.
- PHP konfiguráció Az alapértelmezett PHP-konfiguráció hasonlóan puffadt, általában több tele van felesleges extra modulokkal.
- PHP Opcode gyorsítótár Ahelyett, hogy a PHP-nek minden alkalommal újrafordítaná a parancsfájlokat, az opcode gyorsítótár gyorsítótárba helyezi a fordított szkripteket a memóriában a hatalmas teljesítményjavításokhoz.
- mentések Valószínűleg fel kell állítania bizonyos automatizált mentéseket, mivel a tárhelyszolgáltatója nem fogja megtenni az Ön számára.
- Biztonság Biztos, hogy a Linux alapértelmezés szerint elég biztonságos, de általában vannak olyan fényes biztonsági problémák, amelyeket néhány gyors beállítással javíthat.
Linux konfiguráció
Van egy csomó csípés amit tehetsz, ami kissé eltérhet a használt szerver alapján. Ezek a tweaks egy CentOS-t futtató kiszolgálóra vonatkoznak, de a DV-szerverek többségére kell dolgozniuk.
Letiltja a DNS-t
Ha a tárhely szolgáltató valószínűleg kezeli a domain DNS-címét, akkor letilthatja a DNS-szolgáltatást a futásból.
disable dns /etc/init.d/named stop chmod 644 /etc/init.d/named
A chmod parancs eltávolítja a parancsfájl engedélyének engedélyezését, és megakadályozza a futás indításkor.
A SpamAssassain tiltása
Ha ön nem a saját kiszolgálón e-mail fiókokat használ, akkor ne fáradjon a levélszemét-blokkoló eszközök futtatásával. (Szintén meg kell nézni a Google Apps, sokkal jobb e-mail megoldás)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
A xinetd letiltása
A xinetd folyamat számos más folyamatot foglal magában, amelyek közül egyik sem hasznos egy tipikus webszerver számára.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Limit Plesk memóriahasználat
Ha a plesk panelt használja, kényszerítheti arra, hogy kevesebb memóriát használjon opciófájl hozzáadásával.
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 MediaTemple DV szervereken dolgozik, de másokat nem ellenőriztek. (Lásd Referenciák)
Plesk letiltása vagy kikapcsolása (opcionális)
Ha évente egyszer csak Plesk-ot használod, akkor nagyon kevés oka van, ha egyáltalán futni fogsz. Ne feledje, hogy ez a lépés teljesen opcionális, és kissé fejlettebb.
Futtassa a következő parancsot a plesk kikapcsolásához:
/etc/init.d/psa stop
A következő parancs futtatásával letilthatja az indításkor futó futtatást:
chmod 644 /etc/init.d/psa
Vegye figyelembe, hogy ha letiltja azt, akkor nem indíthatja el manuálisan a fájlengedélyek visszaállítása nélkül (chmod u + x).
MySQL konfiguráció
Lekérdezési gyorsítótár engedélyezése
Nyissa meg az /etc/my.cnf fájlt, és adja hozzá a következő sorokat a [mysqld] szakaszban, mint ez:
[mysqld] query-cache-type = 1 query-cache-size = 8M
A lekérdezés gyorsítótárába még több memóriát is felvehet, ha nem szeretné, de ne használjon túl sokat.
A TCP / IP letiltása
A meglepő számú gazda alapértelmezés szerint hozzáférést biztosít a TCP / IP-hez a MySQL-hez, így nincs értelme egy webhely számára. Kiderül, hogy a mysql a TCP / IP-en hallgat-e a következő parancs futtatásával:
netstat -an | grep 3306
A letiltáshoz az alábbi sort adja hozzá az /etc/my.cnf fájlhoz:
skip-networking
Apache konfiguráció
Nyissa meg a httpd.conf fájlt, amely gyakran megtalálható a /etc/httpd/conf/httpd.conf
Keresse meg ezt a sort:
Timeout 120
És változtassa meg ezt:
Timeout 20
Most keresse meg a sorokat, amelyek tartalmazzák ezeket a sorokat, és állítsanak be valami hasonlóat:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
PHP konfiguráció
Az egyik dolog, amit szem előtt kell tartanunk, amikor egy szervert kipróbálunk a PHP platformon, az, hogy minden egyes apache szál betölteni fogja a PHP-t egy külön helyre a memóriában. Ez azt jelenti, hogy ha egy fel nem használt modul 256 k memóriát ad hozzá PHP-nek, 40 apache szálon keresztül 10 MB memóriát veszít.
Távolítsa el a szükségtelen PHP modulokat
Meg kell találnod a php.ini fájlt, amely általában megtalálható a /etc/php.ini fájlban (Ne feledje, hogy egyes terjesztéseknél létezik egy /etc/php.d/ könyvtár, amely számos.ini fájlt tartalmaz, minden egyes modul esetében egy.
Írja le a terhelésmodul sorokat az alábbi modulokkal:
- odbc
- SNMP
- OEM
- odbc pdo
- mysqli
- ioncube-rakodó
- jSON
- imap
- ldap
- ncurses
Todo: További információ itt.
PHP Opcode gyorsítótár
Számos opcode gyorsítót használhat, például az APC, az eAccelerator és az Xcache, az utolsó a stabilitásnak köszönhetően.
Töltse le az xcache fájlt, és vegye ki egy könyvtárba, majd futtassa az alábbi parancsokat az xcache forrás könyvtárából:
phpize./configure --enable-xcache make make install
Nyissa meg a php.ini fájlt, és adjon hozzá egy új szakaszt az xcache számára. Be kell állítania az elérési útvonalakat, ha a php moduljait valahol máshol tölti 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 = '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: Szükséged van egy kicsit kibővíteni és az xcache-re hivatkozni a hivatkozásokban.
mentések
Nagyon kevésbé fontos, mint a weboldal automatikus mentése. Előfordulhat, hogy pillanatfelvétel-készpénzfelvételeket készíthet a tárhelyszolgáltatójáról, amelyek szintén nagyon hasznosak, de jobban szeretem az automatikus biztonsági másolatokat is.
Automatikus biztonsági mentés parancsfájl létrehozása
Általában elindítom a / backups könyvtár létrehozását, a / backups / files könyvtár alatt. Beállíthatja ezeket az útvonalakat, ha akarja.
mkdir -p /backups/files
Most hozz létre egy backup.sh parancsfájlt a mentési könyvtárba:
vi /backups/backup.sh
Adja hozzá az alábbiakat a fájlhoz, szükség esetén módosítsa az útvonalakat és a mysqldump jelszót:
#!/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 {};
A parancsfájl először létrehoz egy dátumváltozót, így az összes fájl ugyanaz lesz egy biztonsági másolat számára, majd eldobja az adatbázist, feltölti a webes fájlokat, és gzipeli őket. A keresési parancsok 5 napnál régebbi fájlok eltávolítására használhatók, mivel nem szeretné, hogy a meghajtó kifogyjon a helyről.
Végezze el a parancsfájl futtatását a következő parancs futtatásával:
chmod u+x /backups/backup.sh
Ezután hozzá kell rendelnie ahhoz, hogy a cron automatikusan futtassa. Győződjön meg arról, hogy olyan fiókot használ, amely hozzáférést biztosít a biztonsági mentésekhez.
crontab -e
Adja hozzá a következő sort a crontabhoz:
1 1 * * * /backups/backup.sh
A scriptet idő előtt tesztelheti, ha a felhasználói fiókba bejelentkezve fut. (Rendszeresen futtatom a biztonsági mentéseket rootként)
Szinkronizálás a helyszínen az Rsync segítségével
Most, hogy a kiszolgáló automatikus biztonsági mentései futottak, szinkronizálhatja őket valahol máshol az rsync segédprogrammal. Szeretné elolvasni ezt a cikket az ssh-kulcsok automatikus beállításához: Adjon hozzá nyilvános SSH kulcsot a távoli kiszolgálóhoz egy parancsban
Ezt kipróbálhatja úgy, hogy ezt a parancsot egy linuxos vagy Mac gépen futtatja egy másik helyszínen (otthon van egy linuxos szerver, ahol futtatom ezt)
rsync -a [email protected]:/backups/files/* /offsitebackups/
Ez elég sok időt vesz igénybe az első alkalommal történő futtatáshoz, de a helyi számítógépen a fájlok könyvtárának egy példányát a / offsitebackups / könyvtárban kell elhelyezni. (Győződjön meg róla, hogy létrehozza a könyvtárat a szkript futtatása előtt)
Ezt ütemezheti a crontab sorhoz történő hozzáadásával:
crontab -e
Adja hozzá a következő sort, amely óránként 45 percen belül futtatja az rsync szolgáltatást. Észre fogod venni, hogy itt használjuk az rsync teljes elérési útját.
45 * * * * /usr/bin/rsync -a [email protected]:/backups/files/* /offsitebackups/
Beállíthatja, hogy más időpontban, vagy csak naponta egyszer fusson. Ez tényleg rajtad áll.
Ne feledje, hogy sok segédprogram van, amely lehetővé teszi szinkronizálást ssh vagy ftp segítségével. Nem kell az rsync-t használni.
Biztonság
Az első dolog, amit szeretnél tenni, győződjön meg róla, hogy rendszeres felhasználói fiókod van az ssh használatával, és győződjön meg róla, hogy a su használatával átválthat root-ra. Nagyon rossz ötlet, hogy engedélyezd a közvetlen bejelentkezést a root számára az ssh fölött.
Letiltja a Root Login SSH-t
Szerkessze az / etc / ssh / sshd_config fájlt, és keresse meg a következő sort:
#PermitRootLogin yes
Módosítsa ezt a sort, hogy így nézzen ki:
PermitRootLogin no
Győződjön meg róla, hogy rendszeres felhasználói fiókja van, és gyökerei tudnak tenni, mielőtt végrehajtaná ezt a változtatást, különben kizárhatja magát.
Letiltja az SSH 1. verzióját
Valóban nincs más ok, mint az SSH 2. verziója, mivel biztonságosabb, mint a korábbi verziók. Szerkessze az / etc / ssh / sshd_config fájlt, és keresse meg a következő részt:
#Protocol 2,1 Protocol 2
Győződjön meg róla, hogy csak a 2. protokollt használja az ábrán látható módon.
Indítsa újra az SSH kiszolgálót
Most újra kell indítania az SSH kiszolgálót, hogy ez érvényesüljön.
/etc/init.d/sshd restart
Ellenőrizze a nyitott portokat
A következő parancs segítségével megtekintheti, hogy a kiszolgáló mely portokat hallgatja:
netstat -an | grep LISTEN
Tényleg nem kell semmit hallgatnia a plesk 22, 80, esetleg 8443 portján kívül.
Tűzfal beállítása
Fő cikk:Az Iptables használata Linux alatt
Opcionálisan beállíthat egy iptables tűzfalat, hogy blokkoljon több kapcsolatot. Például általában blokkolom a hozzáférést minden más porthoz, amely nem a munkahelyem hálózatából származik. Ha dinamikus IP-címed van, elkerülheted ezt a lehetőséget.
Ha eddig az útmutató összes lépését követte, akkor valószínűleg nem kell tűzfalat hozzáadnia a keverékhez, de jó megérteni az opcióit.
Lásd még
Az Iptables használata Linux alatt
Irodalom
- A DV-szerver optimalizálása (mediatemple.net)
- XCache