12Sep
Po uruchomieniu dedykowanego serwera wirtualnego do uruchomienia witryny istnieje duże prawdopodobieństwo, że jest on skonfigurowany dla wszystkich użytkowników i nie jest dostosowywany w celu zmaksymalizowania wydajności w celu uruchomienia witryny.
Spis treści[ukryj]
|
Omówienie
Istnieje wiele obszarów problemowych, w których braliśmy udziałt, aby zmaksymalizować wydajność:
- Konfiguracja systemu Linux
Zazwyczaj uruchamiane są usługi, które nie muszą być, marnując pamięć, która może być wykorzystana na więcej połączeń. - Konfiguracja MySQL
Często ustawienia domyślne są oparte na małym serwerze, możemy dodać kilka kluczowych zmian, aby znacznie zwiększyć wydajność. - Konfiguracja Apache
Domyślnie większość dostawców hostingu instaluje apache z prawie każdym zainstalowanym modułem. Nie ma powodu, aby ładować moduły, jeśli nie zamierzasz ich używać. - Konfiguracja PHP
Domyślna konfiguracja PHP jest podobnie nadęta, zwykle jest zainstalowana tona niepotrzebnych dodatkowych modułów. - Opcjonalna pamięć podręczna PHP
Zamiast pozwalać PHP na rekompilację skryptów za każdym razem, pamięć podręczna opcode będzie buforować skompilowane skrypty w pamięci w celu zwiększenia wydajności. - Kopie zapasowe
Prawdopodobnie powinien skonfigurować niektóre automatyczne kopie zapasowe, ponieważ twój dostawca usług hostingowych nie zrobi tego za ciebie. - Bezpieczeństwo
Domyślnie, Linux jest wystarczająco bezpieczny domyślnie, ale zazwyczaj istnieją pewne poważne problemy z bezpieczeństwem, które można naprawić za pomocą kilku szybkich ustawień.
Konfiguracja systemu Linux
Istnieje spora liczba poprawek, które można wykonać, które będą się nieco różnić w zależności od używanego serwera. Te poprawki dotyczą serwera z systemem CentOS, ale powinny działać na większości serwerów DV.
Wyłącz DNS
Jeśli Twój dostawca hostingu obsługuje DNS dla Twojej domeny( prawdopodobnie), możesz wyłączyć usługę DNS.
wyłącza dns /etc/init.d/ o nazwie stop chmod 644 /etc/init.d/ o nazwieKomenda chmod usuwa uprawnienia wykonywania ze skryptu, zatrzymując go przed uruchomieniem przy uruchomieniu.
Wyłącz SpamAssassain
Jeśli nie używasz kont e-mail na swoim serwerze, nie powinieneś kłopotać się uruchamianiem narzędzi antyspamowych.(Powinieneś również sprawdzić Google Apps, znacznie lepsze rozwiązanie poczty elektronicznej)
/etc/init.d/ psa-spamassassin stop chmod 644 /etc/init.d/ psa-spamassassinWyłącz xinetd
Proces xinetd zawiera szereg innych procesów, z których żaden nie jest przydatny dla typowego serwera WWW.
/etc/init.d/ xinetd stop chmod 644 /etc/init.d/ xinetdOgranicz użycie pamięci Plesk
Jeśli korzystasz z panelu plesk, możesz wymusić na nim użycie mniejszej ilości pamięci przez dodanie pliku opcji.
vi /usr/local/psa/admin/conf/ httpsd.custom.includeDodaj następujące wiersze do pliku:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Zwróć uwagę, że ta opcja działa na serwerach MediaTemple DV, ale nie została sprawdzona w żadnym innym.(Patrz Piśmiennictwo)
Wyłącz lub wyłącz Plesk( opcjonalnie)
Jeśli używasz Plesk tylko raz w roku, nie ma powodu, aby go w ogóle pozostawić.Zauważ, że ten krok jest całkowicie opcjonalny i nieco bardziej zaawansowany.
Uruchom następujące polecenie, aby wyłączyć polecenie PLESK:
/etc/init.d/ zatrzymanie psaMożesz wyłączyć to uruchamianie przy uruchomieniu, wykonując następujące polecenie:
chmod 644 /etc/init.d/ psaZwróć uwagę, że jeśli go wyłączysz, nie możesz uruchomić go ręcznie bezzmiana uprawnień do plików z powrotem( chmod u + x).
Konfiguracja MySQL
Włącz bufor zapytań
Otwórz plik /etc/ my.cnf i dodaj następujące wiersze w sekcji [mysqld] w następujący sposób:
[mysqld] query-cache-type = 1 query-cache-size = 8MMożeszdodaj więcej pamięci do pamięci podręcznej zapytań, jeśli chcesz, ale nie używaj za dużo.
Wyłącz TCP / IP
Zaskakująca liczba hostów domyślnie umożliwia dostęp do MySQL na TCP / IP, co nie ma sensu dla strony internetowej. Możesz dowiedzieć się, czy mysql nasłuchuje na TCP / IP, uruchamiając następującą komendę:
netstat -an |grep 3306Aby wyłączyć, dodaj następujący wiersz do pliku /etc/ my.cnf:
skip-networkingKonfiguracja Apache
Otwórz plik httpd.conf, często znajdujący się w /etc/httpd/conf/ httpd.conf
Znajdź wiersz, który wygląda tak:
Limit czasu 120I zmień to na:
Limit czasu 20Teraz znajdź sekcję, która zawiera te linie, i dostosuj do czegoś podobnego:
Serwery startowe 2 Serwery MinSpare 2 Serwery MaxSpare 5 SerwerLimit 100 MaxClients 100 MaxRequestsPerChild 4000Konfiguracja PHP
Jedną z rzeczy donależy pamiętać, że podczas podkręcania serwera na platformie PHP każdy wątek apache będzie ładował PHP w oddzielnej lokalizacji w pamięci. Oznacza to, że jeśli nieużywany moduł dodaje 256k pamięci do PHP, przez 40 wątków apache marnujesz 10 MB pamięci.
Usuń niepotrzebne moduły PHP
Musisz zlokalizować plik php.ini, który zwykle znajduje się na /etc/ php.ini( Zwróć uwagę, że w niektórych dystrybucjach będzie katalog /etc/php.d/ z pewną liczbą plików. ini, jeden do. każdy moduł
Wykomentuj żadnych linii LoadModule z tych modułów:
- odbc
- SNMP
- pdo
- odbc pdo
- mysqli
- ionCube-ładowarka
- json
- IMAP
- ldap
- ncurses
Todo. Dodaj więcej informacji tutaj
PHP Opcode
Cache Nieto liczba buforów kodu, których możesz użyć, w tym APC, eAccelerator i Xcache, z których ostatnia jest moją osobistą preferencją ze względu na stabilność
Pobierz xcache i rozpakuj go do katalogu, a następnie uruchom następujące polecenia ze źródła xcachekatalog:
phpize. /configure --enable-xcache make make installOtwórz ynasz plik php.ini i dodaj nową sekcję dla xcache. Musisz dostosować ścieżki, jeśli moduły php są ładowane z innego miejsca.
vi /etc/ php.iniDodaj następującą sekcję do pliku:
[xcache-common] zend_extension = /usr/lib/php/modules/ xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere"[xcache];Zmień xcache.size, aby dostroić rozmiar bufora kodu operacyjnego xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Zmień xcache.var_size, aby dostosować rozmiar zmiennej 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 = OffTodo: Trzeba nieco rozszerzyć i połączyć z xcache w odnośnikach.
Kopie zapasowe
Nie ma nic ważniejszego niż automatyczne tworzenie kopii zapasowych witryny. Możesz uzyskać kopie zapasowe migawek od swojego dostawcy hostingu, które są również bardzo przydatne, ale wolę też mieć zautomatyzowane kopie zapasowe.
Utwórz automatyczny skrypt kopii zapasowej
Zwykle rozpoczynam od utworzenia katalogu / backups, pod którym znajduje się katalog plików /backups/.Możesz dostosować te ścieżki, jeśli chcesz.
mkdir -p Pliki /backups/Teraz utwórz skrypt backup.sh w katalogu kopii zapasowych:
vi /backups/ backup.shDodaj do pliku następujące elementy, dostosowując ścieżki i hasło mysqldump w razie potrzeby:
#!/bin/ sh THEDATE = `date +% d% m% y% H% M` mysqldump -uadmin -pPASSWORD DATABASENAME & gt;/backups/files/ dbbackup $ THEDATE.bak tar -cf /backups/files/ sitebackup $ THEDATE.tar /var/www/vhosts/ moja-witryna-ścieżka / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar znajdź stronę /backups/files/ * -mtime +5 -exec rm{ } \;znajdź /backups/files/ db * -mtime +5 -exec rm{ } \;Skrypt najpierw utworzy zmienną daty, aby wszystkie pliki miały taką samą nazwę dla pojedynczej kopii zapasowej, następnie zrzuca bazę danych, tasuje pliki sieciowe i je gzipuje. Polecenia find służą do usuwania plików starszych niż 5 dni, ponieważ nie chcesz, aby na dysku zabrakło miejsca.
Wykonaj skrypt wykonywalny, wykonując następującą komendę:
chmod u + x /backups/ backup.shNastępnie musisz przypisać go do automatycznego uruchamiania przez cron. Upewnij się, że używasz konta, które ma dostęp do katalogu kopii zapasowych.
crontab -eDodaj następującą linię do pliku crontab:
1 1 * * * /backups/ backup.shMożesz przetestować skrypt z wyprzedzeniem, uruchamiając go po zalogowaniu na konto użytkownika.(Zwykle uruchamiam kopie zapasowe jako root)
Synchronizuj kopie zapasowe poza firmą Z Rsync
Teraz, gdy masz już automatyczne tworzenie kopii zapasowych serwera, możesz zsynchronizować je gdzie indziej, używając narzędzia rsync. Będziesz chciał przeczytać ten artykuł o tym, jak skonfigurować klucze ssh do automatycznego logowania: Dodaj publiczny klucz SSH do serwera zdalnego w jednym poleceniu
Możesz przetestować to, uruchamiając to polecenie na komputerze z systemem Linux lub Mac w innej lokalizacji( Imam serwer Linux w domu, na którym to uruchamiam)
rsync -a [email protected]: /backups/files/ * /offsitebackups/To zajmie trochę czasu, aby uruchomić po raz pierwszy, ale na koniec twój komputer powinien mieć kopiękatalogu plików w katalogu /offsitebackups/.(Upewnij się, że utworzyłeś ten katalog przed uruchomieniem skryptu)
Możesz zaplanować to przez dodanie go do linii crontab:
crontab -eDodaj następującą linię, która będzie uruchamiać rsync co godzinę przy znaku 45 minut. Zauważysz, że używamy tutaj pełnej ścieżki do rsync.
45 * * * * /usr/bin/ rsync -a [email protected]: /backups/files/ * /offsitebackups/Można zaplanować uruchamianie w innym czasie lub tylko raz dziennie. To naprawdę zależy od ciebie.
Zauważ, że istnieje wiele narzędzi, które pozwalają na synchronizację przez ssh lub ftp. Nie musisz używać rsync.
Zabezpieczenia
Pierwszą rzeczą, którą chcesz zrobić, jest upewnienie się, że masz zwykłe konto użytkownika do użycia przez ssh i upewnij się, że możesz użyć su, aby przełączyć się na root. To bardzo zły pomysł, aby zezwolić na bezpośrednie logowanie do roota przez ssh.
Wyłącz logowanie root przez SSH
Edytuj plik sshd_config /etc/ssh/ i znajdź następujący wiersz:
#PermitRootLogin yesZmień ten wiersz tak, aby wyglądał następująco:
PermitRootLogin noUpewnij się, że masz zwykłe konto użytkownika i możesz suroot przed dokonaniem tej zmiany, w przeciwnym razie możesz się zablokować.
Wyłącz SSH Wersja 1
Naprawdę nie ma powodu, aby używać czegoś innego niż SSH w wersji 2, ponieważ jest bezpieczniejsza niż poprzednie wersje. Edytuj plik sshd_config /etc/ssh/ i znajdź następującą sekcję:
#Protocol 2,1 Protocol 2Upewnij się, że używasz tylko protokołu 2, jak pokazano.
Uruchom ponownie serwer SSH
Teraz musisz zrestartować serwer SSH, aby to zadziałało.
/etc/init.d/ sshd restartSprawdź otwarte porty
Możesz użyć następującego polecenia, aby sprawdzić, na których portach nasłuchuje serwer:
netstat -an |grep LISTENNaprawdę nie powinieneś mieć czego słuchać poza portami 22, 80 i ewentualnie 8443 dla PLESK.
Konfiguracja zapory
Główny artykuł: Używanie Iptables w systemie Linux
Opcjonalnie można skonfigurować zaporę iptables, aby zablokować więcej połączeń.Na przykład zwykle blokuję dostęp do innych portów niż z mojej sieci roboczej. Jeśli masz dynamiczny adres IP, będziesz chciał uniknąć tej opcji.
Jeśli już wykonałeś wszystkie kroki opisane w tym przewodniku, prawdopodobnie nie musisz dodawać zapory do miksu, ale dobrze jest zrozumieć swoje opcje.
Zobacz także
- Używanie Iptables w systemie Linux
Referencje
- Optymalizacja serwera DV( mediatemple.net)
- XCache