Сюда обычно чего-то пишут. Но меня ломает...

ClickUnder - имеет ли смысл?

Я всегда крайне осторожно относился к любой веб-рекламе, выполняющей какие-либо действия без согласия пользователя. Особенно раздражают попандеры (это большая жопа на полэкрана, при нажатии на кнопку “закрыть” вываливается пара дополнительных окон). Я обычно посещаю сайт с попандером ровно один раз, и больше туда никогда не хожу. Обсуждение попандеров даже забанили на серче, значит я не одинок в своих суждениях.

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

Однако недавний эксперимент показал, что кликандер сцуко эффективен и прокатывает не только для доров, но и на некоторых других видах трафика. Я думаю ни для кого не секрет, что у меня есть небольшой анонимайзер с посещаемостью полторы-две тысячи человек в день, и трафом около 400 гигов в месяц который хавает массу серверных ресурсов и упорно не хочет монетизироваться  (ну, хотя бы сам себя окупать).

Больше месяца там болтался баннер фотостраны, на который кликали жалкие 20-30 человек в день, из них регистрировалось 1-2. Вчера решил таки поставить кликандер, посмотреть что же получится. Пришлось изрядно повозиться, прикручивая кликандерный скрипт к Glype proxy, но в итоге к трем часам ночи я его таки победил.

Итог меня слегка удивил - на партнерку за день слилось 640 уников (хотя кликандер показывается 1 раз в день, 600 как-то маловато, но речь не об этом), при этом зарегистрировалось 13 человек. Получается, что ctr на кликандере составляет примерно 2%, а на баннере чуть больше пяти. То есть при росте объема трафа в 25-30 раз мы получаем снижение конверта только в 2.5 раза, из чего неизбежно следует вывод, что кликандер в десять раз эффективнее баннера.

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

Aнализ нагрузки веб-сервера

Колдунства для анализа нагрузки веб-сервера. Чел писал для борьбы с ДДОСами, но пригодится и в более мирных случаях.

Число процессов Apache:
ps aux | grep httpd |wc -l

Число коннектов на 80 порт:
netstat -na | grep :80 | wc -l

То же, в статусе SYN
netstat -na | grep :80 | grep syn

Пример SYN-флуда:
netstat -na | grep :80 | grep SYN | wc -l 767

Посмотреть много ли разных IP:
netstat -na | grep :80 | grep SYN | sort -u | more

На какой домен чаще всего идут запросы:
tcpdump -npi eth0 port domain

Статус Apache:
apachectl status

Посмотреть откуда IP:
whois xxx.xxx.xxx.xxx

или
jwhois xxx.xxx.xxx.xxx

С какого IP сколько запросов:
netstat -na | grep :80 | sort | uniq -c | sort -nr | more

DoFollow

Я решил попробовать поставить на этот блог DoFollow (ссылки из каментов индексируются не только яндексом, но и гуглем). Посмотрим, что из этого получится ;)

Оптимизатор - нафиг он нужен

Ахнунг! Статья из раздела Ликбез. Если Вы очень круты, читать ее противопоказано.

В рунете сложилось довольно четкое определение оптимизатора — это специалист, отвечающий за продвижение сайта (ну например такого — http://www.jobtrends.ru) в выдаче поисковых систем. Дальше идут следствия — чем выше сайт, тем больше у него посетителей и тем больше от него может быть отдача (зависит от цели создания сайта — продажи, привлечение клиентов, открутка рекламы и пр). За следствия (например, за объем продаж) оптимизатор не отвечает.

Но на западе такая ситуация была два-три года назад, сейчас все изменилось, и мы видимо тоже идем в этом направлении. Там все меньше предлагается услуга чистой оптимизации (подъема в выдаче поисковых систем), а как правило речь идет о комплексном продвижении ресурса, как в выдаче, так и средствами социальных медиа, рекламы в СМИ, покупки PPC (например, так — http://www.yellowsticker.info/yahoo-sm-free-16/ )и т.д. В этом случае владелец ресурса получает уже не кота в мешке, а выполнение некоторых целей, понятных бизнесу, таких как повышение продаж, рост числа клиентов, улучшение имиджа компании-владельца.

Разнятся и методы. В рунете оптимизация содержимого сайта (внутренняя) рассчитана, прежде всего, на лучшее ранжирование сайта поисковыми системами. На западе этого недостаточно и вебмастера много внимания уделяют конверту — оптимизации содержимого под посетителя; — чтобы ему было удобно, он вернулся и чего-то купил/заказал/позвонил.

Оптимизация внешних факторов в рунете основана прежде всего на наращивании внешней ссылочной массы методом покупки ссылок (обычно на биржах). На западе на это клиенты смотрят уже очень косо, потому что большой гугл жестко наказывает за продвижение методом покупки ссылок, считая его черным; , наряду с email-спамом и строительством дорвеев. Но у нас пока все это прокатывает и купить ссылочную массу гораздо проще и дешевле чем продвигаться белыми методами, получая естественные ссылки.

Из этого следует и ответ на вопрос — а нужен ли оптимизатор. Если сайт решает какие-то бизнес-задачи, то да, потому что такому сайту нужны посетители. Можно ли не нанимать оптимизатора и сэкономить? Теоретически да, но нужно понимать, что эффективная внешняя оптимизация без бюджета на построение ссылочной массы сейчас невозможна. Учитывая множество подводных камней, связанных с постоянно меняющимися алгоритмами выдачи поисковых систем, эффективнее нанять опытного оптимизатора и получить более или менее стабильный результат.

Установка Nginx как фронтенда к Apache на сервер c WHM/Cpanel

Меня окончательно утомили тормоза апача на моем ВДС (700 метров памяти, центос-5, whm/cpanel, апач 2.2, куплен в ТекТонике, рекомендую). Причина банальна - выжирание памяти апачем при довольно смешной нагрузке в 2-2.5 тысячи пользователей в день. Тюнинг maxclients помог, но не сильно (зарежешь число клиентов чтобы стало больше свободной памяти - начинаются еще более страшные тормоза).

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

Основная проблема заключалась в том, что прикрутить надо было не к голому серверу, а установленной панельке WHM/Cpanel, что поначалу казалось непросто. За основу был взят вот этот мануал, но в нем многое было не описано, подразумевалось, что ты, типа, старый линуксоид, и тебе и так все понятно. Я же опишу для идиотов, типа себя, чтобы потом  не забыть.

Начать надо с установки mod_rpaf на апач. Он нужен для того, чтобы апач получал правильные адреса посетителей от nginxa.

Логинимя под рутом, далее

cd /root/tmp
mkdir mod_rpaf
cd mod_rpaf/
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Последняя строчка собственно устанавливает модуль.
Теперь надо прописать настройки модуля. Идем в WHM,  Main >> Service Configuration >> Apache Setup > Include Editor > Pre Main Include и вставляем там приведенный код:

LoadModule rpaf_module modules/mod_rpaf-2.0.so

RPAFenable On
# Enable reverse proxy add forward
RPAFproxy_ips 127.0.0.1 LIST_OF_YOUR_IPS
# which ips are forwarding requests to us
RPAFsethostname On
# let rpaf update vhost settings
# allows to have the same hostnames as in the “real”
# configuration for the forwarding Apache
RPAFheader X-Real-IP
# Allows you to change which header mod_rpaf looks
# for when trying to find the ip the that is forwarding
# our requests
List_of_your_IPs меняем на список купленных к серверу адресов, через пробел. Жмем сохранить, перезапустить апач. Ахтунг! при докупке свежих IP их всех нужно будет потом руками прописывать в этом месте
Теперь нам надо перетащить апач на какой нибудь другой порт, например 81, потому что на стандартный 80 порт мы будем сажать nginx. Для этого в WHM идем в Tweak settings и правим порт на котором висит апач - 0.0.0.0:80 на 0.0.0.0:81. Жмем “apply” - ответа мы уже не дождемся, порт поменян. При необходимости можно зайти по http://whm.че-то-там.com:81
Обратите внимание, что https мы не переносим. Если есть желание, можно попробовать перенести и его за nginx, но особо смысла не вижу.
Возвращаемся в консоль - нам надо поправить настройки prefork’a в конфиге апачи.
Для начала убедитесь, что у вас используется именно prefork, используя:
httpd -V | grep MPM

Поравьте соответствующий раздел конфига

vi /usr/local/apache/conf/httpd.conf,

поправьте на что-то вроде этого:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 5
MaxClients 100
MaxRequestsPerChild 100
</IfModule>
Если у Вас worker, то раздел, естественно, другой.

Теперь нужно конфиг продистилировать скриптами WHM, чтобы он нормально прососался:
/usr/local/cpanel/bin/apache_conf_distiller –update –main
/scripts/rebuildhttpdconf
поправтье номер порта 80 на 81 в настройках сервиса мониторинга
vi /etc/chkserv.d/httpd
и перезапустите его:
/etc/init.d/chksrvd restart
или
/etc/init.d/chkservd restart
сервис  может называться по разному, в крайнем случае ребут вас спасет.
На этом с апачем мы закончили, ставим nginx (по мотивам отсюда):
Нам понадобится компилятор, ставим его если еще нет:
yum -y install gcc pcre-devel zlib-devel
Скачиваем и распаковываем nginx:
mkdir /root/tmp/nginx
cd /root/tmp/nginx
wget http://sysoev.ru/nginx/nginx-0.6.35.tar.gz
tar xzf nginx-*.tar.gz
cd nginx-*/

Устанавливаем:
./configure
make
make install
ln -s /usr/local/nginx/conf /etc/nginx
Прописываем ротацию логов:
vi /etc/logrotate.d/nginx
туда:
/usr/local/nginx/logs/*log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 2> /dev/null || true
endscript
}

Делаем инит-скрипт:
vi /etc/init.d/nginx
туда:
#!/bin/sh
#
# Init file for nginx server daemon
#
# chkconfig: - 85 15
# description: nginx server daemon
#

bin=’/usr/local/nginx/sbin/nginx’
pid_file=’/usr/local/nginx/logs/nginx.pid’

case “$1″ in
start)
echo -n “Starting nginx: ”
$bin && echo OK || echo FAILED
;;

stop)
echo -n “Stopping nginx: ”
kill `cat $pid_file` && echo OK || echo FAILED
;;

configtest)
$bin -t
;;

reload)
echo -n “Reloading nginx: ”
kill -HUP `cat $pid_file` && echo OK || echo FAILED
;;

restart)
$0 stop
sleep 1
$0 start
;;

*)
echo “Usage: $0 {start|stop|restart|reload|configtest}”
exit 1
;;
esac

Добавляем права на выполнение:
chmod +x /etc/init.d/nginx
и прописываем автозагрузку (runlevel 3)
ln -s ../init.d/nginx /etc/rc3.d/S99nginx
Теперь нам надо прицепить скрипт, который генерит конфиги nginxa на основании насроек whm. Мы запихаем его в /scripts/postwwwacct, чтобы он обновлял конфиги после каждого добавления аккаунта:
vi /scripts/postwwwacct
туда:
#!/bin/sh

cat > “/usr/local/nginx/conf/nginx.conf” <<EOF
user  nobody;
worker_processes  2;

error_log  logs/error.log info;

worker_rlimit_nofile  8192;

events {
worker_connections  512; # increase for more busy servers
use rtsig; # you should use epoll here for Linux kernels 2.6.x
}

http {
server_names_hash_max_size 2048;

include    mime.types;
default_type  application/octet-stream;

sendfile on;
tcp_nopush on;
tcp_nodelay on;

keepalive_timeout  10;

gzip on;
gzip_min_length  1100;
gzip_buffers  4 32k;
gzip_types    text/plain text/html application/x-javascript text/xml text/css;
ignore_invalid_headers on;

client_header_timeout  3m;
client_body_timeout 3m;
send_timeout     3m;
connection_pool_size  256;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
request_pool_size  4k;
output_buffers   4 32k;
postpone_output  1460;

include “/usr/local/nginx/conf/vhost.conf”;
}

EOF

/bin/cp /dev/null /usr/local/nginx/conf/vhost.conf

cd /var/cpanel/users
for USER in *; do
for DOMAIN in `cat $USER | grep ^DNS | cut -d= -f2`; do
IP=`cat $USER|grep ^IP|cut -d= -f2`;
ROOT=`grep ^$USER: /etc/passwd|cut -d: -f6`;
echo “Converting $DOMAIN for $USER”;

cat >> “/usr/local/nginx/conf/vhost.conf” <<EOF
server {
access_log off;

error_log  logs/vhost-error_log warn;
listen    80;
server_name  $DOMAIN www.$DOMAIN;

# uncomment location below to make nginx serve static files instead of Apache
# !WARNING!
# it will make the bandwidth accounting incorrect as these files won’t be logged!
#location ~* .(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|htm|html|js|css)$ {
# root   $ROOT/public_html;
#}

location / {
client_max_body_size    10m;
client_body_buffer_size 128k;

proxy_send_timeout   90;
proxy_read_timeout   90;

proxy_buffer_size    4k;
# you can increase proxy_buffers here to suppress “an upstream response
#  is buffered to a temporary file” warning
proxy_buffers     16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

proxy_connect_timeout 30s;

proxy_redirect  http://www.$DOMAIN:81   http://www.$DOMAIN;
proxy_redirect  http://$DOMAIN:81   http://$DOMAIN;

proxy_pass   http://$IP:81/;

proxy_set_header   Host   $host;
proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
EOF
done
done
service nginx restart

Для ядра 2.6 нужно также поменять use rtsig на use epoll.
Если сервер лично ваш и/или вам пофиг на корректность отображения трафа в WHM/Cpanel, можно поставить nginx не только как реверс-прокси к апаче, но и как веб-сервер под статический контент - картинки, файлы и прочее и получить еще большее увеличение производительности. Для этого надо в скрипте раскомментировать строки:
#location ~* .(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|htm|html|js|css)$ {
# root   $ROOT/public_html;
В первый раз запустим генератор конфигурации руками (на первый запуск закомментируем в нем последнюю строку):
/scripts/postwwwacct
Теперь проверим, чего он нагенерил:
/usr/local/nginx/sbin/nginx -t
Стартуем nginx:
/usr/local/nginx/sbin/nginx
И - вуаля! На всякий случай стоит проверить поведение сервера после ребута.
Результаты можете оценить сами.

Настройка апача на VDS

правильные настройки апача с модулем prefork для вдс с 768 метрами памяти без фронтенда

RLimitMEM 51467605
RLimitCPU 240
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 200
</IfModule>

колдунства под cpanel:
vi /usr/local/apache/conf/httpd.conf
/usr/local/cpanel/bin/apache_conf_distiller –update –main
/scripts/rebuildhttpdconf

Хостинг! Бесплатный хостинг! Кому бесплатный хостинг!?

Часто ли Вы были в ситуации, когда вам нужен был качественный бесплатный хостинг, с поддержкой PHP, MySQL, Perl и нормальной административной панелью? Иногда такое бывает, особенно если Вы только начинаете. Правда, качественных бесплатных хостингов, да так чтобы без рекламы, бывает мало. А проекты, которым такой хостинг требуется, бывают.

Я решил пораздавать нуждающимся хостинг забесплатно. Дело в том, что у меня наблюдается избыток ресурсов. А брать более дешевые тарифы - обрекать себя на постоянные тормоза. Вроде ресурсы и не нужны, а платить за них приходится. Поэтому остатки я раздаю.

Условия два -  “белый” проект (легальный в правовом поле РФ и США) и установка одной “сквозной” (на всех страницах сайта) ссылки на один из моих ресурсов (также белых и пушистых).

“Тарифный план” включает:
- 200 мб на диске;
- до 10 гигов трафа в месяц;
- PHP/CGI/Perl;
- Cron;
- FTP доступ;
- Shell по очень обоснованному запросу;
- Почтовые ящики - до 10;
- Домены - 2, сайт - 1;
- Панель управления Cpanel;
Сервер находится в США.
Любой параметр может быть в разумных пределах увеличен по запросу.
Хостинг предоставляется на условиях AS IS, без какой-либо поддержки и каких-либо гарантий доступности и/или сохранности информации. Я оставляю за собой право убить все нафиг в любое время. Особенно, если хоститься вами будет что-то “не то”.

Отдельный вопрос - домен.
По дефолту я выдаю технологический адрес вида что-то.idspispopd.info. Вы можете прикрутить любой домен, купленный в любом удобном месте. На случай острой необходимости бесплатного домена второго уровня - домен в зоне .info я могу зарегистрировать на год под ваш проект, перерегистрация на вас в любое время - $15.

Для заказа хостинга нужно написать запрос на мыло web[at]timp[dot]ru и указать в нем:
- Тип сайта;
- Тематику;
- Предполагаемую платформу;
- Технологическое имя сайта (xxx.idspispopd.info);
- Дополнительные запросы;
- Контактные данные.

Пример:

Доброго времени суток!
Прошу предоставить бесплатный хостинг для проекта:
Тип - блог;
Тематика - компьютеры;
Платформа - Wordpress;
Тех. имя - komputerz.idspispopd.info
Дополнительные запросы:
Прошу увеличить дисковую квоту до 300 метров (планируется много картинок)


 

  • Страница 1 из 2
  • 1
  • 2
  • >