Архив рубрики: Полезное по WordPress

Полезные плагины, настройки. Инструкции и напоминалки самому себе.

Еще одна оптимизация сайта

upgrade

На днях меня уже не первый раз ткнули носом в то, что комментарии на сайте не работают, об проблеме этой я знал, и пытался наскоками ее решить, но как видно безуспешно, точнее с переменным успехом, т.е. комментарии работали когда хотели.

Все дело в кэше и его взаимодействие с CDN, и обе эти функции выполняют для меня важные роли, одна уменьшает нагрузку на мой и без того еле живой сервер, а вторая разгружает канал в интернет.

Но тут на меня нахлынуло и я вновь полез в настройки и конфиги, попутно подправив внешний вид.

Я еще раз перебрал конфиг nginx, сделал принудительное кэширование в браузере, пересмотрел политику копирования файлов на CDN, более тонко настроил все применяемые кэши, пересобрал новую версию eaccelerator, обновил все плагины и перенастроил MySQL. Прогнал через оптимизаторы много css и js файлов, сделал их асинхронную загрузку где можно, а где нельзя отложил обработку до загрузки тела сайта.

Визуально скорость почти не изменилась, но нагрузка с сервера спала, чекалки показывают все больше очков, так же возросла стабильность работы сайта. Уже несколько дней я проверяю работу разных компонентов, и пока все работает, особенно видно работающие комментарии, ибо спама падает по 300 штук в день. На всякий случай я прикрутил форму комментирования через контакт.

Знакомый мне перерисовал логотип в векторе и я почти везде заменил старый на более качественный и прозрачный, обновил плагин социальных кнопок и покрасил их в «фирменный» депрессивный цвет — серый. Пока изменения могут быть не видны, ибо они еще не реплицировались на CDN, но скоро все будет видно.

После обновления WordPress плагина XML-Sitemaps Яндекс перестал видеть sitemaps

Недавно, начал активно обновятся плагин WordPress XML-Sitemaps, за месяц было 2-3 обновления, полностью изменена логика карты, как она выглядит сейчас, можно посмотреть на моей карте https://www.itroad.ru/sitemap.xml

Ну и пофиг подумал я и не предал этому значения, до поры до времени. Через неделю после последнего обновления (Генератор XML-карты сайта для WordPress 4.0.3), я зашел в webmaster.yandex.ru и увидел, что у меня ошибка обработки sitemap, начав разбираться я пошел в валидатор, но валидатор вообще не смог получить мой sitemap, выдавая ошибку (Unable to copy sitemap content).

Unable to copy sitemap content

При этом карта по ссылке доступна, Google ее видит, ошибок доступа в логах сервера так же не было, о чем я и написал в суппорт Яндекса.

Через сутки мне ответили:

Вероятнее всего, всё дело в том, что при обращении к Вашему файлу sitemap возвращается заголовок X-Robots-Tag: noindex . Настройте сервер так, чтобы этот заголовок не возвращался, и тогда ошибка должна перестать возникать.

В Nginx точно ничего не менялось, и я решил убедиться в том, что действительно в заголовке есть указанный тег.

Через сервис http://www.askapache.com/online-tools/http-headers-tool/ проверил отдачу sitemap и некоторых других страниц, на страницах тега не было, а вот на sitemap был.

|HTTP/1.1 200 OK Server: nginx/1.2 |
|.1 Date: Sat, 19 Apr 2014 07:33:0 |
|5 GMT Content-Type: application/x |
|ml; charset=utf-8 Transfer-Encodi |
|ng: chunked Connection: keep-aliv |
|eX-Powered-By: PHP/5.2.17-1.1 X   |
|-Pingback: https://www.itroad.ru/xm|
|lrpc.php X-Robots-Tag: noindex   |
|ontent-Encoding: gzip Vary: Accep |
|t-Encoding                        |

Стало понятно, что тег отдается генератором sitemap, пройдясь поиском по php файлам плагина, я нашел нужное место в файле sitemap-core.php

//Do not index the actual XML pages, only process them.
//This avoids that the XML sitemaps show up in the search results.
if(!headers_sent()) header('X-Robots-Tag: noindex', true);

Закомментировав строчку:

if(!headers_sent()) header('X-Robots-Tag: noindex', true);

я получил нужный результат, тег в заголовке перестал отдавать, а Яндекс смог прочитать мою карту.

Странная ситуация на самом деле, ибо совсем недавно и Google и Яндекс обрабатывали robots.txt (аналогом и продолжением которого является упомянутый заголовок) и если в robots.txt запретить доступ к sitemap, его не могли прочитать оба поисковика, а теперь Google через запрет в robots.txt не читает карту сайта, а если запрет через заголовок, то читает. Яндекс же, не читает ее в обоих случаях, хотя именно Google стал первым поддерживать X-Robots-Tag: noindex и изначально его реакция была аналогична реакции Яндекс.

Посмотрим, оправдается ли пугалка в комментариях в файле sitemap-core.php и попадут ли мои карты в выдачу и если попадут, то я даже не знаю, как разруливать эту ситуацию между двумя поисковиками, вед указать в заголовке, к какому именно поисковику относится запрет — нельзя, а это значит, что придется все делать выборочно руками в robots.txt.

Вот как то так, если кто в курсе темы, я бы с удовольствием пообщался.

NGNIX переход с Apache редирект 301

Совсем недавно, я решил попробовать, что же такое WordPress. До этого долгое время пользовался другими движками, но в них постоянно что то не устраивало. Либо небольшое или вялое комьюнити, либо отсутствие удобных, а иногда просто необходимых функций. Понятно, что у всего есть свои недостатки и достоинства, достоинства WordPress я ценил при установке и настройке, а вот недостатки проявились в эксплуатации.

И первый недостаток, это полная неработоспособность сайта на Apache. Каждый коннект, порождает новую копию Apache и эти копии неминуемо сжирают всю память. Я попробовал поставить несколько плагинов для решения этой проблемы: WP File Cache, WPLANG Lite. Стало немного легче, но полностью ситуацию не исправило. Сервер с сайтом можно было по вешать просто зажав F5 в браузере. И это на 2х процессорном сервере с 4 гигами оперативки.

Я попробовал поставить  NGNIX как бэкенд, но ситуацию это не исправило. По  F5 по вешать сайт уже не получалось, но под скриптом, который скачивает индекс файл в 400 потоков, ложился как миленький.

Если бы сверху накрутить еще и ускорители, то тогда, непонятным становится наличие в связке Apache, уже проще было обойтись без него.

Поэтому решено было остановиться на связке nginx + php-cgi + eaccelerator + SJ Object Cache + DB Cache Reloaded Fix (только не из репозитория вордпреса, а с сайта автора, там более новая версия)

Первым делом ставим nginx, собирать его из исходников, а тем более ставить его через make install, никакого желания не было. Да и зачем? Ведь потом его нормально не обновить, не удалить. Значит ставить надо из пакетов, или в крайнем случае собирать свой пакет (кому хочется самую последнюю версию и если ее вдруг нет в пакете).

Ищем пакет тут http://ftp.de.debian.org/debian/pool/main/n/nginx/

И ставим последнюю доступную версию:

wget http://ftp.de.debian.org/debian/pool/main/n/nginx/

Тем самым ставится более свежая версия 0.7.67

Для нормальной работы движка, понадобилось сделать 301 редирект, и вот как раз этим я и хочу поделится, в первую очередь, что бы самому не забыть.

После этого кусочка, любые обращения к сайту по под доменам или ip будут редикректися на www.itroad.ru

server {
 listen 80;
 server_name itroad.ru www.itroad.ru;
 access_log /var/log/nginx/access.log;
location / {
 root /var/www/itroad.ru/www;
 index index.php index.html index.htm;
 rewrite ^ https://www.itroad.ru permanent; #301 redirect
 }
 }

Цвет ссылок по умолчанию

Добавлял себе в footer.php адрес своей почты, а так как стили вида footer.php определены в css, все ссылки в нем НЕ отличаются от текста (хотя и продолжают быть кликабельными). Я решил привести ссылку на почту к стандартному виду (то есть синяя ссылка), при этом я 10 минут не мог найти в интернете код цвета ссылок по умолчанию.

Пишу сюда дабы не забыть, стандартный синий цвет имеет код #0066cc

Каталоги доступные для просмотра. Как так…?

Решил просканировать этот сайт, так как с WordPress до этого дела не имел. Оказалось в нем есть куча папок, которые доступны для просмотра. Как то это не хорошо… Конечно половина этих папок понаделали плагины, но все равно неприятно. Особенно плагин wp-file-cache, он то совсем дырка. Из его кэша можно достать такие вещи…ух (хотя автор плагина об этом предупреждает)!

Вот список дырок насканированных у меня:

/wp-content/
/wp-content/themes/
/wp-content/themes/twentyten/
/wp-content/plugins/
/wp-content/plugins/wp-pagenavi/
/wp-includes/
/wp-content/themes/twentyten/images/
/wp-content/themes/twentyten/images/headers/
/wp-content/plugins/checkbot/
/wp-content/plugins/checkbot/images/
/wp-content/plugins/checkbot/images/Default/
/wp-admin/css/
/wp-content/uploads/
/wp-content/uploads/2011/
/wp-content/uploads/2011/06/

Лучше сразу избавится от этой проблемы раз и навсегда, отключив модуль autoindex_module. Отключение этого модуля прекратит доступ ко всем директориям в которых нет index.php файла, даже к тем, которые вам нужны. Закрыть доступ можно создав пустой index.php файл, в корне директории, а так же через .htaccess.