Переехал из одного мира в другой

Свершилось! Еще одним обязательным занятием в жизни стало больше! :)
Сделал первый раз в жизни переезд своим сайтам с webhosting в США на VPS в Амстердаме - сменил и географию и сущность арендуемого хостинга. И вроде как получилось :)

С самого своего создания в 2006 году я размещал свои сайты на webhosting в одной американской компании - 5 июня исполняется 8 лет, как я там... Но все течет, все меняется - я вырос из этих "детских штанишек", так как мой основной по посещаемости сайт CARInfo: Автосправочник с посещаемостью на уровне 1 тыс уникальных посетителей в сутки и с большой базой данных стал откровенно "тормозить" - выделяемые мне провайдером ресурсы MySQL были явно недостаточны для такой активной работы с БД (на сайте много объемных динамических справочников).

Поэтому, не смотря на дешевизну и простоту webhosting (всего лишь $4.95 в месяц, реальная и квалифицированная поддержка в режиме 24/7, неограниченные место на диске и траффик, отсутствие каких-либо "морок" с администрированием собственно сервера), было принято решение переходить на выделенную виртуальную машину - VPS. В случае VPS я получаю больше ресурсов в свое распоряжение, могу "по-человечески" настроить сервер под свои нужды, полностью свободен в выборе доступных сервисов и т.д. В минусе - затраты на хостинг и трудозатраты на обеспечение работоспособности сайтов.

"От добра добра не ищут", поэтому я 5 мая (ровно за месяц до окончания очередной 2-летней аренды хостинга) решил попробовать VPS у "своего" хостинг-провайдера - за $9.95 предлагается виртуальная машина с 1.5ГБ ОЗУ (гарантированный минимум не указан), 5ГБ дискового пространства на SSD, 1 ядром процессора (тип процессора не известен) и CentOS 64bit по умолчанию. Вместо CentOS я поставил Debian 6 и начал перенос файлов с прицелом попробовать сначала перевезти данный блог, а потом, в случае успеха, оставшиеся CARInfo: Автосправочник и CARInfo: Бортжурнал... И тут меня ждало первое и серьезное разочарование - 5ГБ нереально мало! В принципе получается следующая картина с необходимым местом - существующий размер файлов сайта + 3...3,5ГБ на операционную систему + не меньше 10% на файл подкачки + какой-то запас места под рост объема файлов сайта. После всевозможной чистки файлов сайта от накапливавшихся там не особенно нужных вещей и тотальной зачистки таблиц в БД с архивными данными (кстати, надо еще наладить эту операцию на регулярной основе - благодаря переезду я начал смотреть на размер архивных таблиц и прозрел от их размеров) я получил 0,5ГБ свободного места при всего лишь 128МБ файла подкачки... Чистка откровенно ненужных элементов ОС в виде библиотек для графической оболочки и ненужных мне системных сервисов общего назначения я выгадал всего лишь около 100МБ. А еще надо хранить регулярные дампы баз данных хотя бы за последнюю неделю (около 150МБ каждый день и постоянно растет)... Но следующая ступенька с 30ГБ места стоит уже $39.95 в купе с увеличением доступных памяти и ресурсов процессора. Только докупить место нельзя. Надо искать другое предложение по "средней" цене между $10 и $40 с местом на диске не менее 10...15ГБ.

Следующая (и текущая!) попытка - ровно за $20 в месяц предоставляется 60ГБ места на диске (RAID10, не SSD), 2ГБ ОЗУ при гарантированном минимуме 1ГБ, все 4 ядра разделяемого между виртуальными машинами процессора Intel Xeon 2.67GHz. Из репозитория провайдера поставил Debian 7, перенес туда не очень свежий дамп сайтов и начал обустраиваться на новом месте, ведь на webhosting очень часто ставят всевозможные "рогатки" для безопасного разделения арендаторов (что бы не мешали друг другу, "не ходили" друг к другу "в гости", минимизация рисков подвешивания сервера одним из арендаторов и т.д.), сайты приходится держать в общей "свалке" в домашней папке, зачастую извращаться с теми или иными настройками сайтов, не иметь возможность свободного использования портов и т.д. Теперь я сам себе хозяин и сайты можно разложить по отдельным папочкам в /var/www, по-человечески настроить ограничения в PHP и MySQL. При этом для меня, использующего "древние" CMS и веб-альбом, самым большим затыком было то, что имеющийся в системе PHP5.4.4 не позволяет скриптам выходить на уровень выше текущей папки - "пляски с бубном" в конфигурировании PHP и использованием symbol links не помогли - помимо правки конфигурационных файлов и настроек в БД так же пришлось решать вопрос с клонированием разделяемых файлов и папок - для начала пришлось сделать для каждого сайта свою копию этих ресурсов в его (сайта) домашней папке.

Важно! Если Вы не являетесь опытным системным администратором, как и я, то лучше обратитесь к квалифицированному специалисту по web-серверам, что бы он сделал грамотную первоначальную настройку системы - это позволит избежать многих неприятностей, связанных со взломом или заражением Ваших сайтов, что окупит затраты на данного специалиста сторицей. Для сопровождения сервера дальше уже хватит Вашей квалификации, ведь вполне справедливо говорят, что "Unix труден в настройке, но потом легок в эксплуатации".

После тестового запуска данного блога на новом VPS я зрительно не заметил никакого прироста в скорости работы сайта. Причины стали понятны при просмотре журнала сообщений сайта - каждое обновление даже самой простой странички сайта приводило к 100+ записям об ошибках PHP в этот журнал - "функция не поддерживается", "функция устарела (deprecated)", "попытка создания объекта из null" и т.д. Причем все эти записи касались практически исключительно стандартного кода CMS - написанные мной модули работали нормально. Да - жаркие споры в интернет о необходимости и сложности перехода на PHP5.3 и уж тем более на PHP5.4 совершенно оправданы. Вместе с переездом апгрейд CMS и web-галереи на новые версии, работающие на новом PHP, я не мог в виду практически отсутствующей обратной совместимости, что могло превратить данный процесс в вечный. Поэтому я установил параллельно PHP5.2.17, на котором работает без ошибок практически любой код с требованием использования PHP не ниже 4.1, но все новое и апгрейды существующего уже будет настраиваться под использование PHP5.4.4 Про установку параллельно PHP5.2.17 отдельный рассказ здесь. После этого скорость работы сайта существенно возросла, что сразу же отразилось на показателях в Google Adsense (чем быстрее сайт, тем он популярней у рекламодателей и тем дороже реклама) и в Alexa Page Rank.

После полного и всеобъемлющего тестирования в течение недели на данном блоге и адаптации/правки файлов остальных сайтов я решил перевозить и их. Но тут есть один нюанс - на CARInfo: Автосправочник результаты запросов пользователей становятся доступны по коротким ссылкам. Поэтому базу данных сайта необходимо перенести "один в один". Такая проблема актуальна для любого сайта или форума, где боле-менее активная жизнь. Я выполнил следующие операции:

  1. Настроил NS на новом месте, но с указанием старого IP на webhosting;
  2. Переписал у хостера моих доменных имен записи про используемые для поиска сайта NS на новые; Выждал 72 часа, что бы все DNS в мире начали искать мои сайты через новые NS:
  3. Поставил сайты в режим обслуживания (maintaince mode), что бы остановить запись в БД;
  4. Сделал дамп базы; Так как у меня не было доступа к shell, то я его сделал с помощью простейшего PHP скрипта, который запустил из браузера:
    Цитата:
    <?php

    echo shell_exec ('/usr/bin/mysqldump --opt --user=*** --pass=*** -h localhost -e --add-drop-table DB_name | gzip -f9 > /абсолютный_путь_к_папке_доступной_из_web/db_name_export.sql.gz');

  5. В shell нового сервера выполнил команду:
    Цитата:
    $ wget http://ваш_сайт/путь_к_папке_с_дампом/db_name_export.sql.gz

    закачка прошла на скорости около 2МБ/с;

  6. Развернул дамп в MySQL и протестировал достоверность перенесенных данных;
  7. Непосредственно в БД, т.к. панель администратора на новом месте по URL еще недоступна, отключил режим обслуживания;
  8. В настройках NS указал новый IP;

Все эти пункты были выполнены примерно за 2 часа. И вот сайты на новом месте :) Скорость отклика БД сайта CARInfo: Автосправочник мне нравится. :)

Ну а дальше можно постепенно апгрейдить CMS, переходить на современный PHP и отрабатывать переход на nginx, который работает намного быстрее apache2. В общем планов, как всегда, громадье :)


Re: Переехал из одного мира в другой

А вот и косвенное подтверждение оправданности такого переезда - Google свидетельствует о 3-кратном уменьшении времени загрузки страниц самого нагруженного из моих сайтов CARInfo: Автосправочник

Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can use BBCode tags in the text.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.

Больше информации о возможностях форматирования

CAPTCHA
Этот вопрос задается для проверки того, не является ли обратная сторона программой-роботом (для предотвращения попыток автоматической регистрации).