12Sep

Vylepšení vyhrazeného virtuálního webového serveru

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

  • 1 Přehled
  • 2 Konfigurace Linuxu
    • 2.1 Vypnout DNS
    • 2.2 Zakázat SpamAssassain
    • 2.3 Zakázat xinetd
    • 2.4 Limit Plesk Použití paměti
    • 2.5 Zakázat nebo vypnout Plesk( volitelně)
  • 3 Konfigurace MySQL
    • 3.1 Povolení mezipaměti dotazu
    • 3.2 Vypnout TCP / IP
  • 4 Konfigurace Apache
  • 5 Konfigurace PHP
    • 5.1 Odstranit nepotřebné PHP moduly
    • 5.2 PHP Opcode Cache
  • 6 Zálohování
    • 6.1 Vytvoření automatického zálohovacího skriptu
    • 6.2 Synchronizace záloh mimo server s Rsync
  • 7 Zabezpečení
    • 7.1 Zakázat kořenPřihlášení přes SSH
    • 7.2 Zakázat SSH verze 1
    • 7.3 Restartování SSH serveru
    • 7.4 Kontrola otevření portů
    • 7.5 Nastavení brány firewall
  • 8 Viz také
  • 9 Reference

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-spamassassin

Vypnout 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/ xinetd

Použ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.include

Do souboru přidejte následující řádky:

MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

Vš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 stop

Můž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/ psa

Vš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 = 8M

Pokud 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 3306

Chcete-li zakázat, přidejte následující řádek do souboru my.cnf /etc/:

skip-networking

Konfigurace Apache

Otevřete soubor httpd.conf, který se často nachází v /etc/httpd/conf/ httpd.conf

Najít řádek, který vypadá takto:

Timeout 120

A změňte to takto:

Timeout 20

Nyní 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 4000

PHP 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 install

Otevř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.ini

Do 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 = Vypnuto

Todo: 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/ soubory

Nyní vytvořte skript backup.sh v adresáři záloh:

vi /backups/ backup.sh

Př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.sh

Poté 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 -e

Do crontabu přidejte následující řádek:

1 1 * * * /backups/ backup.sh

Skript 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 -e

Př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 ano

Změňte tento řádek tak, aby vypadal takto:

PermitRootLogin ne

Ujistě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 2

Zkontrolujte, 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 LISTEN

Opravdu 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