10 миллионов хитов в день на WordPress блоге

Плюсануть
Поделиться
Класснуть

Не так давно на Хабре впалил интересную ссылку на пост одного чела, который умудряется иметь блог на WordPress с 10 миллионами хитов в день, и при этом сидеть на сервере за $15 долларов. Рассматривается вариант, когда на сервер устанавливается Ubuntu 11.10, MySQL, PHP с PHP FPM, APC и модулем MySQL, Nginx с конфигурацией для WordPress, сам WordPress и плагины - W3 Total Cache и Varnish.

Немного статистики:

10 миллионов хитов в день на WordPress блоге

Ахуеть, ага. На Хабре была просто ссылочка на англоязычную версию, я же взялся за её перевод. Английский мой хромает на обе ноги, но вроде что то и получилось. По крайней мере я понял всё. :)

10 миллионов хитов в день на WordPress блоге за $15

Данная инструкция довольно подробна, и я надеюсь, что из неё понятно как поставить сервер Linux с ноля, а так же запилить на него Varnish, Nginx, W3 Total Cache, и WordPress. В данном примере устанавливать всё это безобразие мы будем на сервер Amazon Micro, а обойдётся нам это всё в менее, чем $15 в месяц.

Итак. В начале установите Ubuntu 11.10 на новый виртуальный сервер. Ставьте именно 11.10, в статье разбирается именно эта версия, да и версии новее - нестабильное говно, старее - старое говно.

Я использовал Amazon EC2 для своего тестового сервера, но и Linode так же хорош.

Заранее упомяну данные своего сервера, у вас они будут отличаться:

  • Public DNS Name: ec2-23-20-235-223.compute-1.amazonaws.com
  • Public IP Address: 23.20.235.223

Заходим на сервер и входим под root-пользователем:

ssh ubuntu@ec2-23-20-235-223.compute-1.amazonaws.com
sudo -i

Теперь настроим брандмауэр

Итак, раз мы будем настраивать сеть, то не плохо было бы поиграться с брандмауэром. В Ubuntu это очень просто, для этого нам потребуется пакет ufw. Вот команды, которые нам пригодятся:

ufw allow ssh
ufw allow http
ufw logging off
ufw enable

После этих манипуляций, ваш уютенький серверок становится относительно безопасным.

Установка и настройка MySQL

Для этого потребуются следующие команды:

apt-get update
apt-get install mysql-server

После установки задайте пароль для root-пользователя в MySQL:

mysql -u root -p

После этого вновь введите свой свежеустановленный пароль для root-пользователя. Затем отправьте следующий запрос к MySQL (не забудьте заменить слово "ХУЙ" на свой пароль)

CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO "wp_user"@"localhost" IDENTIFIED BY "ХУЙ";
FLUSH PRIVILEGES;
EXIT

Вот и всё, мускуль настроен. PHP и nginx, настало твоё время!

Установка и настройка PHP

Итак, нам нужно установить не просто ПЭ-ХЭ-ПЭ, а, блять, систему PHP FPM, APC, и ахуенный MySQL модуль:

apt-get install php5-fpm php-pear php5-common php5-mysql php-apc

Теперь отредактируйте файл /etc/php5/fpm/php.ini, добавив туда следующие строки:

[apc]
apc.write_lock = 1
apc.slam_defense = 0

А в файле /etc/php5/fpm/pool.d/www.conf сделайте следующее:

Замените

listen = 127.0.0.1:9000

на

listen = /dev/shm/php-fpm-www.sock

А ниже вставьте такие строки:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

После, в этом же файле, замените эти строчки

user = www-data
group = www-data

на эти

user = nginx
group = nginx

Вот и всё, если вы не забыли сохранить изменения в файлах выше, то система PHP FPM настроена. Осталась очередь Nginx.

Установка и настройка Nginx

Все инструкции написаны на основе официальной: nginx.org.

Итак, для начала скачаем суперсекретный ключ для подтверждения пакетов (виндузятники, не заморачивайтесь, это всё какие то глупые антивирусные проверки линуксоидов, вот дебилы):

cd /tmp/
wget http://nginx.org/keys/nginx_signing.key
apt-key add /tmp/nginx_signing.key

Добавим нужные репозитории. Не проебите меня ">>", это важно!

echo "deb http://nginx.org/packages/ubuntu/ lucid nginx" >> /etc/apt/sources.list
echo "deb-src http://nginx.org/packages/ubuntu/ lucid nginx" >> /etc/apt/sources.list

Скачаем и установим nginx следующими командами:

apt-get update
apt-get install nginx

Теперь настроим nginx

Для начала нужно отредактировать файл /etc/nginx/nginx.conf. В http секции добавьте такую строчку:

port_in_redirect off;

После перейдите в категорию /etc/nginx/conf.d, создайте файл drop и пропишите в нём всё то, что прописано в файле drop отсюда.

Далее по ссылке, что я дал выше, скачайте файл default.conf и поместите по адресу /etc/nginx/conf.d/default.conf (с заменой оригинального файла), затем в этом файле везде замените домен domainname.com на свой.

Теперь создадим категорию /var/www/ и присвоим ей нужные права:

mkdir -p /var/www/
chown nginx:nginx /var/www/
chmod 775 /var/www

Всё, nginx настроен. Теперь нужно перезагрузить сервисы:

service nginx restart
service php5-fpm restart

Всё готово к установке WordPress!

Для установки движка просто выполните данные команды:

cd /tmp
wget http://wordpress.org/latest.tar.gz
tar zxvf latest.tar.gz
cd wordpress
mv * /var/www/
chown -R nginx:nginx /var/www

Для настройки WordPress введите следующие команды:

cp /var/www/wp-config-sample.php /var/www/wp-config.php
chown nginx:nginx /var/www/wp-config.php

У себя в браузере откройте api.wordpress.org/secret-key/1.1/salt и скопируйте результат. Затем отредактируйте файл /var/www/wp-config.php и вставьте то, что только что скопировали.

Затем измените следующие строчки (вводите данные не root-пользователя):

define("DB_NAME", "название_базы");
define("DB_USER", "юзер");
define("DB_PASSWORD", "пароль");

После всех этих действий, если вы не налажали с настройками и прописали верный IP у домена, то должен открыться ваш сайт. Перейдите на страницу ваш-говносайт.ком/install.php для настройки WordPress.

Займёмся кешированием

Итак, для начала установите плагин "W3 Total Cache", и в настройках включите следующие секции:

  • Database Cache
  • Object Cache

Казалось бы вот и всё, а нихуя! Установим varnish 3!

Для этого введите следующую команду:

apt-get install varnish

Замените файл /etc/varnish/default.vcl, взяв такой же файл отсюда.

Затем отредактируйте /etc/default/varnish.

Измените данную секцию:

DAEMON_OPTS="-a :6081 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

На эту:

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,64m"

Далее нужно настроить nginx под порт 8080, вместо 80-го порта, ибо на 80-ом порту будет запущен Varnish.

Откройте файл /etc/nginx/conf.d/default.conf и замените

listen 80;

на

listen 8080;

Сохраните файл и запустите следующие команды:

service nginx restart
service varnish restart

Вот и всё! Выше описан способ как настроить сервер, ценой менее 20-ти баксов на нагрузку в 10 миллионов хитов в день. Спасибо varnish и nginx за это!

Из инструкции я упустил некоторые очевидные шаги, ибо вы сами умнички и легко справитесь с установкой WordPress и плагина для него, а так же не стал писать про сервис blitz.io, ибо лишнее. Пофапать на нагрузку можно и в админке Amazon.

Внимание! В скором времени я переведу один блог по данной инструкции на сервер Amazon, и естественно опишу в блоге процесс, то есть будет живой пример данной статьи. Подписывайтесь на RSS и читайте в Twitter, что бы не пропустить такое событие.

Теперь меня волнует другой вопрос. Нахуя я покупал MaxCache? Сейчас вот думаю, может Убунтовод перенести на Amazon, а то хостер опять выёбывается.

Последнее изменение записи: 28.12.2015 | Рубрика: Работа | Метки: , , , , ,
Плюсануть
Поделиться
Класснуть