12Sep
Když získáte vyhrazený virtuální server pro spouštění vašeho webu, je pravděpodobné, že je nakonfigurován pro všechny a není přizpůsoben tak, aby maximalizoval výkonnost při spouštění webových stránek.
Obsah
|
Přehled
Existuje řada problémových oblastí,t pro maximalizaci výkonu:
- Konfigurace Linux
Obvykle běží služby, které nemusí být, plýtvání paměti, která by mohla být použita pro více připojení. - konfigurace MySQL
Často jsou výchozí nastavení založená na malém serveru, můžeme přidat několik klíčových změn, abychom zvýšili výkon. - konfigurace Apache
Ve výchozím nastavení většina poskytovatelů hostingu instaluje Apache s téměř každým instalovaným modulem. Neexistuje žádný důvod k načtení modulů, pokud je nebudete nikdy používat. - konfigurace PHP
Výchozí konfigurace PHP je podobně nafouknutá, obvykle jsou instalovány tuny nepotřebných doplňkových modulů. - PHP Opcode Cache
Namísto umožnění PHP skompilovat skripty vždy, mezipaměť opcode uloží kompilované skripty do paměti pro obrovské zvýšení výkonu. - Zálohování
Pravděpodobně byste měli nastavit automatizované zálohy, protože váš poskytovatel hostingu to nebude dělat za vás. Bezpečnost -
Jistě, Linux je ve výchozím nastavení dostatečně bezpečný, ale obvykle se vyskytují některé zřetelné bezpečnostní problémy, které můžete vyřešit několika málo rychlými nastaveními. Konfigurace
Linux
Existuje poměrně mnoho vylepšení, které můžete udělat, což se bude mírně lišit podle serveru, který používáte. Tyto vylepšení jsou pro server se systémem CentOS, ale měly by fungovat pro většinu DV serverů.
Zakázat službu DNS
Pokud váš poskytovatel hostingu zpracovává DNS pro vaši doménu( pravděpodobné), můžete zakázat spuštění služby DNS.
zakázat dns /etc/init.d/ pojmenovaný stop chmod 644 /etc/init.d/ pojmenovanýPříkaz chmod odebere oprávnění spouštět ze skriptu a zastaví jeho spuštění při spuštění.
Zakázat SpamAssassain
Pokud na svém serveru nepoužíváte e-mailové účty, neměli byste obtěžovat běh antispamových nástrojů.(Také byste se měli podívat na Google Apps, mnohem lepší e-mailové řešení)
/etc/init.d/ psa-spamassassin stop chmod 644 /etc/init.d/ psa-spamassassinVypnout xinetd
Proces xinetd obsahuje řadu dalších procesů, z nichž žádný není užitečný pro typický webový server.
/etc/init.d/ xinetd stop chmod 644 /etc/init.d/ xinetdPoužití limitu paměti Plesk
Používáte-li plesk panel, můžete ho přinutit k použití méně paměti přidáním souboru možností.
vi /usr/local/psa/admin/conf/ httpsd.custom.includeDo souboru přidejte následující řádky:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Všimněte si, že je známo, že tato možnost pracuje na serverech MediaTemple DV, ale nebyla zaškrtnuta žádná další.(Viz odkazy)
Vypnout nebo vypnout Plesk( volitelně)
Pokud používáte Plesk pouze jednou ročně, je velmi málo důvodů, aby to vůbec nešlo. Uvědomte si, že tento krok je zcela nepovinný a poněkud pokročilejší.
Spusťte následující příkaz k vypnutí plesk:
/etc/init.d/ psa stopMůžete jej zakázat spuštěním při spuštění spuštěním následujícího příkazu:
chmod 644 /etc/init.d/ psaVšimněte si, že pokud ho deaktivujete, nemůžete ho spustit ručně bezzměna oprávnění k souboru zpět( chmod u + x).
Konfigurace MySQL
Povolit mezipaměť dotazu
Otevřete soubor my.cnf /etc/ a vložte následující řádek do oddílu [mysqld] takto:
[mysqld] query-cache-type = 1 dotaz-cache-size = 8MPokud chcete, přidejte do mezipaměti dotazů více paměti, ale nepoužívejte příliš mnoho.
Zakázat TCP / IP
Překvapivý počet hostitelů umožňuje standardně přístup k MySQL na TCP / IP, což nemá žádný význam pro webové stránky. Můžete zjistit, zda mysql naslouchá na TCP / IP spuštěním následujícího příkazu:
netstat -an |grep 3306Chcete-li zakázat, přidejte následující řádek do souboru my.cnf /etc/:
skip-networkingKonfigurace Apache
Otevřete soubor httpd.conf, který se často nachází v /etc/httpd/conf/ httpd.conf
Najít řádek, který vypadá takto:
Timeout 120A změňte to takto:
Timeout 20Nyní najděte sekci, která obsahuje tyto řádky a nastavte na něco podobného:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000PHP Konfigurace
Jedna z věcí, kterámějte na paměti, že při ladění serveru na platformě PHP je, že každý jednotlivý podproces Apache si načte PHP na samostatném místě v paměti. To znamená, že pokud nepoužitý modul přidá 256 kB paměti do PHP, přes 40 apache threads strávíte 10 MB paměti.
Odstraňte nepotřebné PHP moduly
Budete muset najít php.ini soubor, který se obvykle nachází na /etc/ php.ini( V některých distribucích se objeví adresář /etc/php.d/ s počtem souborů. ini, jeden prokaždý modul
Komentujte všechny loadmodule linky s těmito moduly:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: Přidejte více informací zde
PHP opcode cache
Tamjsou řada vyrovnávacích pamětí operačního systému, které můžete použít, včetně APC, eAccelerator a Xcache, přičemž poslední je moje osobní preference kvůli stabilitě.
Stáhněte xcache a extrahujte jej do adresáře a poté spusťte následující příkazy z xcache zdrojeadresář:
phpize. /configure --enable-xcache make make installOtevřete soubor php.ini apřidat novou sekci pro xcache. Budete muset upravovat cesty, pokud jsou vaše php moduly načteny někde jinde.
vi /etc/ php.iniDo souboru přidejte následující část:
[xcache-common] zend_extension = /usr/lib/php/modules/ xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere"[xcache];Změna xcache.size vyladíte velikost mezipaměti opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Změna xcache.var_size pro úpravu velikosti proměnné mezipaměti 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 = Vypnuto xcache.readonly_protection =Na xcache.mmap_path = "/tmp/ xcache" xcache.ciredump_directory = "" xcache.cacher = Zapnuto xcache.stat = Zapnuto xcache.optimizer = VypnutoTodo: Potřeba rozbalit tento bit a odkazovat na xcache v referencích. Zálohování
Je to mnohem důležitější než automatické zálohování vašich webových stránek. Možná budete mít možnost získat zálohy zálohování od poskytovatele hostingu, které jsou také velmi užitečné, ale raději také automatizované zálohy.
Vytvořit automatický zálohovací skript
Obvykle začínám vytvářením adresáře / záloh s adresářem souborů /backups/ pod ním. Tyto cesty můžete upravit, pokud chcete.
mkdir -p /backups/ souboryNyní vytvořte skript backup.sh v adresáři záloh:
vi /backups/ backup.shPřidejte do souboru následující soubory a upravte cesty podle potřeby a heslo mysqldump:
#!/bin/ sh THEDATE = 'datum +% d% m% y% H% M` mysqldump -uadmin -password DATABASENAME & gt;/backups/files/ dbbackup $ THEDATE.bak tar -cf /backups/files/ sitebackup $ THEDATE.tar /var/www/vhosts/ my-website-cesta / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar najít /backups/files/ místo * -mtime +5 -exec rm{ } \;najít /backups/files/ db * -mtime +5 -exec rm{ } \;Skript nejprve vytvoří datovou proměnnou, takže všechny soubory budou pojmenovány pro jednu zálohu stejným způsobem, poté skladují databázi, vytrhnou webové soubory a gzipují je. Nálezové příkazy se používají k odstranění všech souborů starších než 5 dnů, protože nechcete, aby váš disk vyčerpal prostor.
Spusťte spustitelný skript spuštěním následujícího příkazu:
chmod u + x /backups/ backup.shPoté budete muset přiřadit, aby se spustil automaticky pomocí příkazu cron. Ujistěte se, že používáte účet, který má přístup do adresáře záloh.
crontab -eDo crontabu přidejte následující řádek:
1 1 * * * /backups/ backup.shSkript můžete předem otestovat spuštěním při přihlášení k uživatelskému účtu.(Obvykle spouštím zálohy jako root)
Synchronizace záloh mimo server s Rsync
Nyní, když máte automatizované zálohy serveru, můžete je synchronizovat někde jinde pomocí nástroje rsync. Budete chtít přečíst tento článek o tom, jak nastavit ssh klíče pro automatické přihlášení: Přidat veřejné SSH klíče pro vzdálený server v jediném příkazu
Toto můžete otestovat spuštěním tohoto příkazu na linuxu nebo Macu na jiném místě( Imít linuxový server doma, což je místo, kde to běžím)
rsync -a [email protected]: /backups/files/ * /offsitebackups/To bude trvat dost času, než se poprvé spustí, ale na konci by měl váš lokální počítač mít kopiiadresáře souborů v adresáři /offsitebackups/.(Před spuštěním skriptu nezapomeňte vytvořit tento adresář)
Toto můžete naplánovat přidáním do řádku crontab:
crontab -ePřidejte následující řádek, který bude spouštět rsync každou hodinu za 45 minutovou značku. Všimnete si, že zde používáme úplnou cestu k rsync.
45 * * * * /usr/bin/ rsync -a [email protected]: /backups/files/ * /offsitebackups/Můžete naplánovat běh v jiném čase nebo pouze jednou denně.To je opravdu na vás.
Všimněte si, že existuje mnoho nástrojů, které vám umožní synchronizovat pomocí ssh nebo ftp. Nemusíte používat rsync.
Zabezpečení
První věcí, kterou chcete udělat, je zajistit, abyste měli běžný uživatelský účet k použití přes ssh a ujistěte se, že můžete použít su pro přepnutí na root. Je to velmi špatný nápad povolit přímý login pro root přes ssh.
Zakázat kořenové přihlášení přes SSH
Upravte soubor /etc/ssh/ sshd_config a vyhledejte následující řádek:
#PermitRootLogin anoZměňte tento řádek tak, aby vypadal takto:
PermitRootLogin neUjistěte se, že máte běžný uživatelský účet a může to býtroot, než provedete tuto změnu, jinak byste se mohl uzamknout.
Zakázat verzi SSH verze 1
Ve skutečnosti není žádný důvod použít jinou než SSH verze 2, protože je bezpečnější než předchozí verze. Upravte soubor /etc/ssh/ sshd_config a vyhledejte následující část:
# Protokol 2,1 Protokol 2Zkontrolujte, zda používáte protokol 2 pouze podle obrázku.
Restartujte server SSH
Nyní budete muset restartovat server SSH, aby se tato skutečnost projevila.
/etc/init.d/ restart Kontrola otevření portů
Následující příkaz můžete zjistit, které porty server naslouchá:
netstat -an |grep LISTENOpravdu byste neměli mít nic jiného než poslouchat jiné než porty 22, 80 a možná 8443 pro plesk.
Nastavení brány firewall
Hlavní článek: Používání Iptables v systému Linux
Volitelně můžete nastavit bránu firewall iptables pro blokování dalších připojení.Například obvykle zablokuji přístup k jiným portům než k mé pracovní síti. Pokud máte dynamickou adresu IP, budete se chtít této možnosti vyhnout.
Pokud jste již všechny kroky v této příručce již postupovali, pravděpodobně není nutné do mixu přidat také firewall, ale je dobré pochopit vaše možnosti.
Viz také
- Použití Iptables v systému Linux
Reference
- Optimalizace vašeho DV serveru( mediatemple.net)
- XCache