Официальный сайт движения «Москва без Лужкова!»
Главная Новости Москвы Наши новости Популярное
  • Новости
  • Новости
  • ВХОД В ЛИЧНЫЙ КАБИНЕТ
    логин
    пароль
       
    Новости

    Projekty WordPress: wskazówki dotyczące optymalizacji

    1. Dostosuj DBMS
    2. Wybór silnika: MyISAM lub InnoDB?
    3. Optymalizacja konfiguracji DBMS
    4. Konfigurujemy serwer WWW
    5. Backend + Frontend = Apache + Nginx
    6. Zapewniamy bezpieczeństwo
    7. Wniosek

    Dzisiaj WordPress jest jednym z najpopularniejszych systemów CMS

    Dzisiaj WordPress jest jednym z najpopularniejszych systemów CMS. Pierwotnie pomyślany jako silnik blogowania, dziś jest używany do wielu różnych typów witryn, w szczególności do portali informacyjnych i mediów online. Wordpress prowadzi korporacyjne strony internetowe, portale edukacyjne i rozrywkowe.

    WordPress jest używany przez wielu naszych klientów, którzy często przychodzą do nas z pytaniami dotyczącymi konfiguracji tego CMS.

    Istnieje kilka szczegółowych instrukcji dotyczących instalowania i konfigurowania WordPressa w Internecie. W tym artykule chcielibyśmy poruszyć kwestie, na które większość publikacji Wordpress nie zwraca wystarczającej uwagi. Porozmawiamy o tym, jak zoptymalizować pracę witryn na Wordpressie, a także porozmawiać o kilku zaleceniach w celu podniesienia poziomu bezpieczeństwa i stabilności. Ubuntu 12.04 jest używany we wszystkich przykładach.

    Dostosuj DBMS

    Wybór DBMS

    Jak wiadomo WordPress wymaga MySQL. Ostatnio rozpowszechniły się alternatywne implementacje (widełki) tej bazy danych, z których najbardziej popularne to Percona Server i MariaDB. Wiele instrukcji instalacji opublikowanych online zaleca korzystanie z MariaDB.

    Zalecamy używanie Percona Server, ponieważ ten widelec jest bardziej wydajny i stabilny niż standardowy MySQL. Ponadto Percona ma więcej funkcji do zbierania statystyk systemowych.

    Aby zainstalować Percona na serwerze, musisz najpierw zaimportować klucze:

    $ apt-key adv - serwer kluczy keys.gnupg.net - klucze-recv 1C4CBDCDCD2EFD2A

    Następnie dodaj następujące repozytoria do pliku /etc/apt/sources.list:

    deb http://repo.percona.com/apt precyzyjny główny deb-src http://repo.percona.com/apt precision main

    I wykonaj polecenie:

    $ sudo apt-get update

    Następnie możesz zainstalować serwer Percona za pomocą standardowego menedżera pakietów:

    $ sudo apt-get install klient-serwer-percona-serwer-serwer

    Wybór silnika: MyISAM lub InnoDB?

    Najpopularniejszymi silnikami w bazach danych MySQL są MyISAM i InnoDB. Jeśli silnik zostanie wybrany nieprawidłowo, pojawią się problemy z wydajnością i spójnością.

    Rozważ cechy tych silników bardziej szczegółowo.

    MyISAM pokazuje dobre wyniki w próbkach SELECT, co wynika głównie z braku obsługi transakcji i kluczy obcych. Jednak podczas modyfikowania i dodawania rekordów cała tabela jest przez pewien czas blokowana, co przy dużym obciążeniu może spowodować poważne opóźnienia.

    Niewątpliwymi zaletami tego silnika są także wyszukiwanie pełnotekstowe i kompresja. Format danych w MyISAM jest wieloplatformowy, co pozwala na przesyłanie danych z jednego serwera do drugiego bez żadnych problemów, po prostu kopiując pliki binarne (tabele) baz danych.

    InnoDB jest używany w nowoczesnych wersjach MySQL jako silnik domyślny.
    W przeciwieństwie do MyISAM, InnoDB obsługuje transakcje i klucze obce. Percona Server korzysta z własnego silnika XtraDB, w pełni kompatybilnego z InnoDB. Dane w InnoDB / XtraDB są buforowane. Gdy większość danych jest odczytywana z pamięci podręcznej, wydajność InnoDB / XtraDB jest kilka razy wyższa niż wydajność MyISAM.

    Istnieje wiele artykułów poświęconych porównywaniu MyISAM z InnoDB / XtraDB, a także MySQL z jego widelcem (patrz w szczególności test wydajności). Nie wchodzimy w szczegóły teoretyczne i nie ograniczamy się do praktycznych porad: MyISAM powinien być wybierany tylko w przypadkach, gdy potrzebne jest wyszukiwanie pełnotekstowe. InnoDB / XtraDB wykona doskonałą pracę we wszystkich pozostałych zadaniach. Przy okazji, w MySQL / Percona Server 5.6+ wyszukiwanie pełnotekstowe dla InnoDB.

    Optymalizacja konfiguracji DBMS

    W miarę rozwoju witryny ilość danych w bazie danych będzie rosła i konieczna będzie zmiana ustawień bazy danych. Aby zapewnić optymalną wydajność witryny, zaleca się regularne sprawdzanie, jak optymalnie konfigurowana jest bieżąca konfiguracja MySQL. Najłatwiej jest wykonać taki test za pomocą specjalnych skryptów, z których najbardziej znanym i popularnym jest mysqltuner.pl. Można go pobrać za pomocą następujących poleceń:

    $ wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl $ chmod + x ./mysqltuner.pl $ ./mysqlhunter.pl

    Ten skrypt zbiera statystyki MySQL i zawiera zalecenia dotyczące ulepszenia istniejących ustawień.

    Konfigurujemy serwer WWW

    Opcje Apache

    Ustawienia Apache są przechowywane w pliku /etc/apache2/apache2.conf

    W pliku konfiguracyjnym Apache istnieje taki parametr jak max_clients - maksymalna liczba uruchomionych procesów do równoległego przetwarzania żądań klienta. Na pierwszy rzut oka może się wydawać, że ten parametr powinien być ustawiony na wartość maksymalną. W praktyce jednak rzeczy są inne.

    Załóżmy, że pojedynczy proces Apache może zużywać 20 MB pamięci RAM. Jeśli parametr max_clients jest ustawiony na 200, to przy szczytowym obciążeniu wszystkie procesy będą wymagały 200 × 20 MB = 4 GB pamięci - i to tylko dla Apache! W wyniku braku pamięci nawet najprostsze żądania będą wykonywane bardzo powoli. A oprogramowanie na serwerze może przestać działać.

    Dlatego zbyt duże ustawienie parametru max_clients nie jest pożądane. Jeśli liczba żądań przekroczy ustawioną wartość, wtedy wszystkie te żądania będą kolejkowane i przetwarzane, gdy tylko zajęte procesy zostaną zwolnione.

    Aby poprawić wydajność, zaleca się również wyłączenie połączeń podtrzymujących, poprawiając odpowiedni wiersz w pliku konfiguracyjnym:

    KeepAlive off

    Backend + Frontend = Apache + Nginx

    Każdy mniej lub bardziej obciążony projekt internetowy musi mieć wielowarstwową architekturę (już napisał ). W przypadku większości projektów opartych na WordPress odpowiednia jest dwuwarstwowa architektura Backend - Frontend. Zalecamy użycie następującego pakietu: jako backend Apache, Nginx jako frontend.

    Możliwa jest jednak inna opcja - php-fpm jako backend i jako frontend - ten sam Nginx (patrz na przykład instrukcje konfiguracyjne i. Wiele publikacji stwierdza, że ​​kilka php-fpm + Nginx działa szybciej lub zużywa znacznie mniej pamięci, ale z tym stwierdzeniem trudno się jednoznacznie zgodzić.

    Testy publikowane w Internecie powinny być traktowane ze zdrowym sceptycyzmem: często php-fpm + Nginx pokazuje najlepsze wyniki tylko dlatego, że Apache nie został poprawnie skonfigurowany (zobacz na przykład i to; zobacz też ciekawą dyskusję). Na podstawie własnych doświadczeń możemy powiedzieć, że dla większości projektów Wordpress kombinacja Apache + Nginx jest w porządku. Wybór rozwiązania powinien opierać się nie tylko i na wzroście produktywności, ale także na specyfice zadań i względach wygody technologicznej. A naszym zdaniem Apache jest bardziej elastyczną konfiguracją. Może być używany jako oddzielny serwer WWW i jako backend dla Nginx oraz jako front-end dla php-fpm.

    Ogólny schemat pracy jest następujący: Nginx akceptuje żądania od użytkowników, które następnie przesyłają do Apache lub przetwarzają je sami. Apache będzie transmitował żądania związane z przetwarzaniem dynamicznej zawartości - na przykład, skrypty php. Nginx niezależnie przetwarza żądania powrotu statycznego - na przykład grafiki, JS, CSS, pliki tekstowe, pliki XML.

    Apache przetwarzający żądanie i przekazujący zawartość Nginx, jest wyłączony i przejście do przetwarzania innych żądań. Z tego powodu praca jest znacznie przyspieszana (co jest ważne na przykład przy wolnym połączeniu internetowym).

    Ponadto dystrybucja zapytań dynamicznych może zostać przyspieszona przy użyciu serwera Memcached (patrz na przykład instrukcje instalacji i konfiguracji).

    Zapewniamy bezpieczeństwo

    Liczne wtyczki służą do rozszerzenia funkcjonalności WordPress. W tych wtyczkach różne luki są stale wykrywane, dlatego niektórzy administratorzy systemu traktują je jako nieco stronnicze. Witryny oparte na WordPress często stają się celem ataków, ale z czasem programiści ulepszą wtyczki, eliminując istniejące luki w zabezpieczeniach. Poniżej podajemy kilka wskazówek, jak dostosować WordPress, dzięki czemu możesz sprawić, że strona będzie mniej podatna na zagrożenia.

    Chroń się przed złośliwym oprogramowaniem i lukami w skryptach na serwerze, na którym zainstalowany jest WordPress. Zalecamy korzystanie ze skanera ClamAV + Maldet. Instrukcje dotyczące instalowania i konfigurowania AV można znaleźć. Aby wyszukać luki, możesz również użyć programu.

    Zmień prefiks tabel w bazie danych. Domyślnie prefiks wp_ jest ustawiony w bazie danych WordPress. Upraszcza to korzystanie z luk w zabezpieczeniach związanych z wtryskiem MySQL: jeśli znasz nazwę tabeli, znacznie łatwiej jest wstawić złośliwy kod, zmienić w nim informacje lub całkowicie go usunąć. W nowych wersjach WordPress możliwe jest wybranie prefiksu podczas instalacji.

    Jeśli używasz wcześniejszej wersji WordPressa, możesz zmienić prefiks za pomocą specjalistycznych wtyczek. Najbardziej znanym i popularnym jest Zmieniacz prefiksów. Należy jednak zauważyć, że wiele z tych wtyczek nie zawsze działa poprawnie, więc przed ich użyciem zaleca się zapisanie kopii zapasowej bazy danych.

    Przenieś plik wp-config.php. Plik wp-config.php zawiera ważne ustawienia WordPress, które chcesz chronić przed nieautoryzowanym dostępem. Domyślnie ten plik jest zapisywany w katalogu głównym, ale można go przenieść do katalogu powyżej. Nie znajdując pliku wp-config.php w katalogu głównym, WordPress wyszuka go automatycznie.

    Uzyskaj certyfikat SSL i włącz szyfrowanie SSL. Aby to zrobić, dodaj następujące linie do pliku wp-config:

    / * Włącz szyfrowanie SSL * / define ('FORCE_SSL_LOGIN', true); define ('FORCE_SSL_ADMIN', true);

    Usuń informacje o wersji WordPress. Jeśli atakujący stwierdzi, że używasz przestarzałej wersji WordPressa, może wykorzystać luki i zhakować Twoją witrynę. Dlatego informacje o wersji najlepiej usunąć.

    Najpierw musisz usunąć plik: http: //your_site/readme.html, z którego możesz łatwo dowiedzieć się, której wersji WordPress używasz.

    Możesz także dowiedzieć się o wersji, której używasz z pliku header.php, który znajduje się w folderze motywu. Zawiera następującą linię:

    <meta name = "generator" content = "WordPress" />

    Możesz usunąć całą tę linię. Jeśli nie ma takiej linii w pliku header.php twojego motywu, to najprawdopodobniej jest on wstawiany automatycznie przez WordPress, gdy wywołujesz funkcję wp_head (). W takim przypadku usuń informacje o wersji z sekcji, dodając następujący kod do pliku functions.php:

    remove_action ('wp_head', 'wp_generator'); function selectel_remove_version () {return ''; } add_filter ('the_generator', 'selectel_remove_version');

    Zmień klucze bezpieczeństwa. W wymienionym powyżej pliku wp-config.php znajduje się sekcja z kluczami bezpieczeństwa. Wygląda to tak:

    define ('AUTH_KEY', ''); define ('SECURE_AUTH_KEY', ''); define ('LOGGED_IN_KEY', ''); define ('NONCE_KEY', '');

    Klucze są używane do haszowania haseł. Bardzo często nawet doświadczeni użytkownicy nie zwracają uwagi na tę sekcję. Tymczasem zmiana kluczy bezpieczeństwa jest dość prosta: wystarczy przejść do strony i skopiować wygenerowane klucze do pliku wp-config.php. Ta procedura jest wystarczająca do przeprowadzenia tylko raz podczas początkowej konfiguracji witryny.

    Ogranicz dostęp do folderów wp-i wp-includes. Ze względów bezpieczeństwa zaleca się zamknięcie dostępu do zawartości zawartości wp-i folderów wp-includes. Konieczne jest zamknięcie dostępu do dowolnych plików, z wyjątkiem grafiki, JS i СSS. Aby to zrobić, w każdym folderze utwórz plik .htaccess i umieść w nim następujący kod:

    Zamów Zezwól, Odmów Odmów od wszystkich Zezwalaj od wszystkich

    Utwórz pusty plik wp-content / plugins / index.html. Spowoduje to, że informacje o używanych wtyczkach staną się niedostępne. Wtyczki WordPress mogą zawierać luki, a atakujący mogą to wykorzystać.

    Aby uczynić aukcję niedostępną, możesz również dodać następujący wiersz do pliku .htaccess przechowywanego w folderze wtyczek:

    Opcje -Indexes Ogranicz dostęp do folderu wp-admin.

    Aby ograniczyć dostęp, musisz utworzyć plik .htaccess w tym folderze i umieścić w nim następujący kod:

    AuthUserFile / dev / null AuthGroupFile / dev / null AuthName „Access Control” AuthType Podstawowa kolejność odmawia, na przykład zezwól na odmowę ze wszystkich #. Adres IP komputera domowego pozwala na # tutaj podajemy adres jeden lub więcej adresów IP, z których będziemy pisać na blogu w pracy pozwalają na zezwolenie z

    Ograniczenie dostępu do określonego zestawu adresów IP nie zawsze jest wygodne. Możesz skonfigurować dostęp do folderu wp-admin tylko za pomocą hasła. Aby to zrobić, utwórz plik .htauth:

    $ htpasswd -c /home/yourdirectory/.htauth

    I umieść go jeden poziom powyżej katalogu / public_html /
    Następnie musisz utworzyć plik .htaccess w folderze wp-admin i umieścić w nim następujący kod:

    AuthName "Admins Only" AuthUserFile /home/yourdirectory/.htauth AuthGroupFile / dev / null AuthType basic require user <nazwa użytkownika>

    Wniosek

    Konfiguracja nawet tak prostego i intuicyjnego systemu CMS jak WordPress jest dość trudna i zawiera wiele niuansów, na które nawet doświadczeni użytkownicy nie zawsze zwracają uwagę. Mamy nadzieję, że te zalecenia będą przydatne. Z naszej strony zawsze jesteśmy gotowi pomóc w tworzeniu i optymalizacji złożonych projektów na Wordpressie w ramach naszego nowego pakietu usług dla administracja serwerem .

    Lista zaleceń podanych w tym artykule jest oczywiście daleka od zakończenia. Będziemy zadowoleni, jeśli komentujesz komentarze i dzielisz się swoim doświadczeniem w optymalizacji projektu na Wordpress.


     

    Найди свой район!

    Восточный

    Западный

    Зеленоградский

    Северный

    Северо-Восточный

    Северо-Западный

    Центральный

    Юго-Восточный

    Юго-Западный

    Южный

    Поиск:      


     
    Rambler's Top100
    © 2007 Движение «Москва без Лужкова!»