Egy dedikált virtuális webszerver csípése
Ha egy dedikált virtuális szervert kap a webhelyének futtatásához, akkor jó eséllyel, hogy mindenki számára konfigurálva van, és nem testreszabható, hogy maximalizálja a webhely futtatásának teljesítményét.
tartalom[elrejt]
|
Áttekintés
Számos problémás terület van, ahol maximalizálni szeretnénk a teljesítményt:
- Linux konfiguráció
Általában olyan szolgáltatások futnak, amelyeknek nem kell lenniük, el kell pazarolniuk a memóriát, amelyet több kapcsolatra lehetne használni. - MySQL konfiguráció
Gyakran az alapértelmezett beállítások egy kis kiszolgálón alapulnak, néhány kulcsfontosságú változtatást adhatunk a teljesítmény növeléséhez. - Apache konfiguráció
Alapértelmezés szerint a legtöbb tárhelyszolgáltató telepíti az apache-t majdnem minden telepített modulhoz. Nincs ok a modulok betöltésére, ha nem használja őket. - PHP konfiguráció
Az alapértelmezett PHP-konfiguráció hasonlóan dagadt, rendszerint egy csomó szükségtelen extra modul van telepítve. - PHP Opcode gyorsítótár
Ahelyett, hogy lehetővé tenné a PHP-t, hogy minden egyes alkalommal újrafordítsa a szkripteket, az opcode gyorsítótár gyorsítótárba helyezi a memóriában tárolt parancsfájlokat a hatalmas teljesítménynövelés érdekében. - mentések
Valószínűleg be kell állítania néhány automatikus biztonsági mentést, mivel a tárhelyszolgáltatója nem fogja megtenni. - Biztonság
Persze, a Linux alapértelmezés szerint elég biztonságos, de általában néhány olyan ragyogó biztonsági probléma van, amelyet néhány gyors beállítással javíthat.
Linux konfiguráció
Meglehetősen sok tweaks van, amit a használt kiszolgálótól függően változhat. Ezek a csevegések egy CentOS-ot futtató kiszolgálóra vonatkoznak, de a DV-szerverek többségénél kell működniük.
A DNS letiltása
Ha a tárhelyszolgáltatója kezeli a tartomány DNS-jét (valószínűleg), akkor letilthatja a DNS-szolgáltatás futását.
tiltsa le a dns /etc/init.d/named stop chmod 644 /etc/init.d/named parancsot
A chmod parancs eltávolítja a parancsfájltól a végrehajtási engedélyt, és leállítja azt a indításkor.
A SpamAssassain letiltása
Ha nem használ e-mail fiókokat a kiszolgálón, akkor ne fáradjon az anti-spam eszközök futtatására. (Meg kell nézni a Google Alkalmazásokat is, sokkal jobb e-mail megoldást)
/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ória használatát
Ha használja a plesk panelt, akkor kényszerítheti arra, hogy kevesebb memóriát használjon egy 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 a MediaTemple DV szervereken működik, de még nem ellenőrizték. (Lásd a hivatkozásokat)
Plesk letiltása vagy kikapcsolása (opcionális)
Ha évente egyszer csak a Plesk-t használja, nagyon kevés ok van arra, hogy egyáltalán működjön. 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 megáll
A következő parancs futtatásával letilthatja a futást az indításkor:
chmod 644 /etc/init.d/psa
Ne feledje, hogy ha letiltja, akkor nem indíthatja el manuálisan a fájljogosultságok visszaállítása nélkül (chmod u + x).
MySQL konfiguráció
Lekérdezés gyorsítótár engedélyezése
Nyissa meg az /etc/my.cnf fájlt, és adja hozzá a következő sorokat a [mysqld] részéhez:
[mysqld] query-cache-type = 1 lekérdezés-cache-size = 8M
Ha többet szeretne hozzáadni a lekérdezés gyorsítótárához, ne használjon túl sokat.
A TCP / IP letiltása
A meglepő számú gép lehetővé teszi a MySQL elérését a TCP / IP-n alapértelmezés szerint, ami nincs értelme a webhelynek. Megtudhatja, hogy a mysql a következő paranccsal futtatja-e a TCP / IP-t:
netstat -an | grep 3306
A letiltáshoz adja hozzá a következő sort az /etc/my.cnf fájlhoz:
skip-hálózati
Apache konfiguráció
Nyissa meg a httpd.conf fájlt, amely gyakran megtalálható az /etc/httpd/conf/httpd.conf fájlban
Keresse meg a következő vonalat:
Időkorlát 120
És változtassa meg erre:
Időkorlát 20
Most keresse meg azokat a részeket, amelyek ezeket a sorokat tartalmazzák, é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, amit szem előtt kell tartani, amikor a PHP platformon egy szervert csiszolnak, az, hogy minden egyes apache-szál a PHP-t külön memóriában fogja betölteni. Ez azt jelenti, hogy ha egy fel nem használt modul 256kb memóriát ad hozzá a PHP-hez, 40 apache-szálon 10MB memóriát pazarol.
Távolítsa el a szükségtelen 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 terjesztéseknél egy /etc/php.d/ könyvtár lesz .ini fájlokkal.) minden egyes modulhoz.
Kommentálja ki a modulokat tartalmazó betöltőmodulokat:
- odbc
- SNMP
- OEM
- odbc pdo
- mysqli
- ioncube-rakodó
- jSON
- imap
- ldap
- ncurses
Todo: További információk hozzáadása itt.
PHP Opcode gyorsítótár
Számos opciós kód gyorsítótárat használhat, köztük az APC, az eAccelerator és az Xcache, az utolsó pedig a személyes stabilitásom miatt..
Töltse le az xcache fájlt, és vegye ki egy könyvtárba, majd futtassa az alábbi parancsokat az xcache forráskönyvtárból:
phpize ./configure --enable-xcache make make install
Nyissa meg a php.ini fájlt, és adjon hozzá egy új részt az xcache számára. Be kell állítania az útvonalakat, ha a php moduljait máshol töltik be.
vi /etc/php.ini
Adja hozzá a következő részt a fájlhoz:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Az xcache.size módosítása az opcode gyorsítótár méretének beállításához xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Módosítsa az xcache.var_size értéket a változó cache méretének beállításához 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 = On xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = On xcache.stat = On xcache.optimizer = Ki
Todo: Szüksége van egy kicsit kibővíteni és hivatkozni az xcache-re a hivatkozásokban.
mentések
Nagyon kevésbé fontos, mint a webhely automatikus mentése. Előfordulhat, hogy pillanatfelvételt készíthet a tárhelyszolgáltatótól, ami szintén nagyon hasznos, de én is inkább automatikus biztonsági mentéseket készítek.
Automatizált biztonsági mentési parancsfájl létrehozása
Általában a / backups könyvtár létrehozásával kezdem, egy / backups / files könyvtárral alatta. Ezeket az útvonalakat beállíthatja, ha akarja.
mkdir -p / biztonsági másolatok / 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ő fájlokat, módosítsa az útvonalakat és a mysqldump jelszót, ha szükséges:
#! / 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 keresés / mentés / fájlok / site * -mtime +5 -exec rm \ t find / backups / files / db * -mtime +5 -exec rm \ t
A szkript először egy dátumváltozót hoz létre, így az összes fájl ugyanaz lesz, ha egyetlen biztonsági másolatot készít, majd eldobja az adatbázist, felemeli a webes fájlokat, és elrejti őket. A keresési parancsokat az 5 napnál régebbi fájlok eltávolítására használják, mivel nem akarod, hogy a meghajtó elfogy a hely.
Végezze el a parancsfájlt a következő parancs futtatásával:
chmod u + x /backups/backup.sh
Ezután hozzá kell rendelnie, hogy automatikusan elinduljon a cron. Győződjön meg róla, hogy olyan fiókot használ, amely hozzáférést biztosít a mentési könyvtárhoz.
crontab-e
Adja hozzá a következő sort a crontabhoz:
1 1 * * * /backups/backup.sh
A szkriptet idő előtt tesztelheti, ha a felhasználói fiókba bejelentkezve futtatja. (Általában rootként futtatom a biztonsági mentéseket)
Szinkronizálja a biztonsági mentéseket a webhelyen kívül az Rsync használatával
Most, hogy a szerverének automatikus mentése van, szinkronizálhatja őket valahol máshol az rsync segédprogram használatával. Ezt a cikket szeretné elolvasni az ssh kulcsok automatikus bejelentkezéskor történő beállításáról: nyilvános SSH kulcs hozzáadása egyetlen távoli kiszolgálóhoz egyetlen parancsban
Ezt tesztelheti úgy, hogy a parancsot egy Linux vagy Mac gépen egy másik helyen futtatja (otthon van linux-szerverem, amelyikben ezt futtatom)
rsync -a [email protected]: / backups / files / * / offsitebackups /
Ez egy időig tart, amíg az első alkalommal fut, de a végén a helyi számítógépnek rendelkeznie kell a / offsitebackups / könyvtárban lévő fájlkönyvtár másolatával. (A parancsfájl futtatása előtt győződjön meg róla, hogy létrehozza ezt a könyvtárat)
Ezt ütemezheti úgy, hogy hozzáadja azt egy crontab sorhoz:
crontab-e
Adja hozzá a következő sort, amely minden órában rsync-t futtat a 45 perces jelzéssel. Megfigyeljük, hogy itt a teljes elérési utat használjuk.
45 * * * * / usr / bin / rsync -a [email protected]: / biztonsági másolatok / fájlok / * / offsitebackups /
Akkor ütemezheti, hogy egy másik időpontban vagy naponta egyszer fut. Ez tényleg rajtad múlik.
Ne feledje, hogy sok segédprogram teszi lehetővé, hogy szinkronizáljon az ssh vagy az ftp segítségével. Nem kell rsync-t használni.
Biztonság
Az első dolog, amit meg akar tenni, győződjön meg róla, hogy rendszeres felhasználói fiókja van az ssh-en keresztül történő használathoz, és győződjön meg róla, hogy a su segítségével lehet váltani a gyökérre. Ez egy nagyon rossz ötlet, hogy engedélyezzük a root bejelentkezést az ssh felett.
A root bejelentkezés letiltása az SSH-n keresztül
Szerkessze az / etc / ssh / sshd_config fájlt, és keresse meg a következő sort:
#PermitRootLogin igen
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 a változás megkezdése előtt gyökerezik a gyökérzetbe, különben ki is zárhatja magát.
Az SSH 1. verzió letiltása
Valójában nincs ok arra, hogy az SSH 2-es verzióját használja, mivel ez biztonságosabb, mint a korábbi verziók. Szerkessze az / etc / ssh / sshd_config fájlt, és keresse meg a következő részt:
# 2. protokoll 2. jegyzőkönyv
Győződjön meg arról, hogy csak a 2. protokollt használja az ábrán látható módon.
Indítsa újra az SSH szervert
Most újra kell indítania az SSH-kiszolgálót, hogy ez érvényesüljön.
/etc/init.d/sshd újraindítás
Ellenőrizze a nyílt portokat
A következő paranccsal tekintheti meg, hogy a kiszolgáló milyen portokat néz:
netstat -an | grep LISTEN
Tényleg nem kellene semmit hallgatnia a 22-es, 80-as és esetleg 8443-as portokon kívül.
Állítson be egy tűzfalat
Fő cikk: Az Iptables használata Linuxon
Opcionálisan beállíthat iptables tűzfalat további kapcsolatok blokkolására. Például általában blokkolom a hozzáférést bármely más porthoz, a munkahálózaton kívül. Ha dinamikus IP-címe van, el kell kerülnie ezt az opciót.
Ha eddig az útmutató összes lépését követte, valószínűleg nem szükséges tűzfalat hozzáadni a keverékhez, de jó megérteni az opciókat.
Lásd még
- Az Iptables használata Linuxon
Irodalom
- A DV-kiszolgáló optimalizálása (mediatemple.net)
- XCache