Ne v kontakte Asocial programmer's blog

Виртуализация и хостинг: мой поиск в мире технологий

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

По ходу своих исследований выяснил для себя точную разницу между VDS и VPS. Как ни странно, эти два термина зачастую смешивают воедино, хотя они изрядно отличаются. VPS предполагает создание некоторой виртуальной среды на базе ядра хост-системы с выделенными ресурсами, файловой системой и root-доступом к системе. При этом, как правило, доступ к ядру системы сильно ограничен. VDS же представляет собою полностью эмулируемый, вплоть до железа, выделенный сервер, внутри которого вы обладаете полной свободой действий.

На данный момент для сферы VDS мне сильнее всех приглянулся QEMU с ускоряющим модулем kQEMU; возможно, в некоторых отношениях он уступает XEN, но зато проще в настройке и использовании.

А для VPS самое интересное решение из бесплатно распространяемых я нашел в лице openVZ, open-source клона небезызвестного Virtuozzo. Пощупать его пока удалось только в виде LiveCD, но впечатления остались сугубо положительные. Через час должна завершиться закачка дистрибутива CentOS, с которым openVZ дружит лучше всего и после установки его на виртуальную машину начнется очередной период веселья :)

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

  1. http://jack.kiev.ua/docs/qemu-doc-ru.html - Слегка устаревший, но все еще очень полезный перевод официальной документации QEMU
  2. Записки Дебианщика - Здесь можно найти довольно много интересной информации, в частности, и про QEMU
  3. Подключение ВМ qemu в локальную сеть - Статья из Gentoo Wiki про то, как подключить виртуальную машину к локальной сети. Актуальна для большинства дистрибутивов.
  4. http://dedic.crimea.ua - Много интересного о хостинговой индустрии.

LAMPP - запуск от обычного пользователя.

Сейчас существует множество сборок apache+php+mysql для упрощения работы веб-разработчиков, которые позволяют легко и быстро настроить у себя на компьютере все, что нужно для веб-программирования. В рунете наиболее популярным пакетом является Денвер, третье поколение которого не так давно стало доступно публике. Однако, самый популярный - не значит “единственный”. Из всех существующих, наибольшую конкуренцию Денверу может составить пакет XAMPP от проекта ApacheFriends. Впрочем, за рубежом он уже давно завоевал большое сообщество пользователей и единственное, что мешает ему потеснить Денвер - отсутствие русской локализации, которое отпугивает многих новичков.

Сегодня мы поговорим о версии XAMPP для Linux, известного так же как LAMPP. Те, кто пользовались им, знают, что для запуска сервера необходимы права root, но вводить всякий раз пароль - дело не веселое. Поэтому я сегодня расскажу о способе, позволяющему избавить себя от этой нудной необходимости.

Немного теории.

В большинстве файловых систем, используемых ОС семейства *NIX (и Linux в том числе), Есть такое свойство файла - SUID-бит, установка которого в 1 обеспечивает запуск исполняемого файла с правами владельца. Чтобы установить такой бит для файла file_name, нужно от имени root выполнить команду chmod u+s file_name

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

1
2
3
4
5
6
if test "id -u" -ne 0
then
$de && echo "XAMPP muss als root aufgerufen werden!"
$de || echo "You need to start XAMPP as root!"
exit
fi

Теперь приступим к самому главному. Первым делом, научим запускаться от простого пользователя apache :) Для этого выполним от имени root следующие действия:

1
2
3
4
chmod -R 0775 /opt/lampp/logs
chown -R root:users /opt/lampp/logs # вместо users здась нужно подставить имя группы, в которую входит ваш пользователь. Для openSUSE это и будет users, для Mandriva, как правило, такое же как имя пользвателя.
chown root:root /opt/lampp/bin/httpd
chmod u+s /opt/lampp/bin/httpd

Отлично, теперь от имени простого пользователя набираем: /opt/lampp/lampp startapache и если при это не возникает ошибок, то можно приступать к настройке mysql.

Для этогонам нужно будет проделать следующие действия:

  1. Добавить в файл /opt/lampp/etc/my.cnf в секцию [mysqld] строку user=aleks где вместо aleks вы должны подставить имя своего пользователя.
  2. Выполнить от имени root команды
    1
    2
    
    chmod -R 0775 /opt/lampp/var/mysql
    chown -R root:users /opt/lampp/var/mysql # вместо users опять подставляем имя группы вашего пользователя.
    

Все, теперь mysql должен без проблем запускаться от простого пользователя B)

ProFTPd и проблемы, связанные с ним. Тут-то нас и подстерегает жестокий облом. :( ProFTPd ни за что не желает запускаться из-под простого пользователя, несмотря на все мои ухищрения с suid-битами и владельцами файлов. Выяснить, что же именно в нем не работает у меня не было особого желания, да и необходимости - для веб-разработки он практически не нужен. Однако, можно слегка облегчить себе жизнь на тот лучай, если на м все же понадобится его запустить. Для этого нужно добавить sudo в файл /opt/lampp/lampp в начало строчек /opt/lampp/sbin/proftpd > /opt/lampp/var/proftpd/start.err 2>&1 и kill cat /opt/lampp/var/proftpd.pid

Пароль суперпользователя нам вводить все равно придется, но зато скрипт сам запросит его у нас, избавляя от необходимости набирать лишние команды. :)

RemoveAd - облагораживаем Народ.Ру

RemoveAd - интро Идея проекта проста - нахождение и публикация решений по удалению рекламы, навешиваемой на многих бесплатных хостингах. Выполняется проект в рамках разминки для мозгов :)

Теперь о важном.

  1. Все хаки, убирающие рекламу, противоречат правилам бесплатных хостингов и могут привести к удалению аккаунтов, замеченных на паленом. Используйте их на свой страх и риск.
  2. Единственный случай, в котором такое решение может быть разумным - использование страницы с фреймами. Естественно, что никому не нравится, когда у него не сайте висят два баннера вместо двух - тогда рационально прибегнуть к хаку.

RemoveAd на Народе В первой статье я обращусь к одному из самых популярных, несмотря на все свои недостатки, хостингов - narod.ru. Почти все веб-мастера прошли этап размещение своего первого сайтика на Народе, а некоторые пользуются им и по сей день.

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

Для этого нам понадобится вставить в любое место страницы вот такой код:

1
2
3
4
5
6
7
<script>
  function removead() {
    //alert(document.images.length);
    document.getElementById("bn").style.display = "none";
    clearTimeout(st.t);
  }
</script>

А в теге нужно добавить обработчик onload, чтобы эта функция вызывалась и убирала баннер: onload="removead()"

И наконец вот тут можно посмотреть на действующий пример: http://armovead.narod.ru/

Не в контакте или почему был назван так этот блог.

В этой жизни я не доверяю двум вещам: гопам и тому, о чем все фанатично заявляют, что это круто. Догадались уже, о чем я? Вот-вот. Может ли кто-нибудь похвастаться, что у него среди друзей никто не зависает на “В контакте” и “Однокласниках”?

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

Это был довольно болезненный удар по моему мировоззрению, ибо я думал, что большинство моих друзей люди разумные и не фанатики. А на практике оказалось, что чуть ли не половина из них сидит в той или иной социальной сети.

Я стал непроизвольно прислушиваться к разговорам вокруг меня и в трех случаях из десяти речь шла о “в контакте”!..

Воистину, Ктулху проснулся и зохавывает наши моски :( Вот только, вопреки расхожему мнению, Ктулху это не чешуйчатое существо с головой, как осьминог, а несколько мегабайт скриптов социальной сети. :crazy:

Но это все лирика и иллюстрация к тому, что я скажу третьим пунтом в списке причин для недоверия социальным сетям.

Вот этот список:

  1. Идея полной деанонимизации. У любого человека, более-менее активно ведущего свои дела в сети, пусть даже вполне законные, со временем накапливается изрядное количество завистников и недоброжелателей, которые, если им представится удобный случай, могут запросто подложить вам свинью. Так же, думаю никто не станет со мною спорить, что владея информацией, ты владеешь силой; в наш век тотальной информатизации это особенно остро. Спрашивается, зачем давать злопыхателям информацию и власть, публикуя о себе лишнюю информацию? А идея социальных сетей подразумевает указание реальных данных о себе, начиная от имени и заканчивая местом учебы и работы. Естественно, это все не отностися к секретаршам и домохозяйкам, но мы сейчас не о них говорим.
  2. Злопыхатели - это еще пол беды. А вот представьте себе, к какому шикарному досье имеют доступ владельцы этих социальных сетей. Большой брат хочет все знать? |-|
  3. Я сам видел, как люди с пеной у рта доказывают, что социальные сети - это хорошо. Так же мне приходилось видеть, как наркоманы доказывают, что драг - это круто и вообще, мол попробуй - тебе понравится. Что, жизнь короче? Ну и по х**, зато яркая. Между прочим, до ужаса похожие картины… Не знаю как вас, а меня такой фанатизм и нехорошее сходство настораживает.

Ктулху проснулся, или просто глупая мода, которая через пару месяцев отпадет? Не знаю. Но надеюсь, что это всего лишь дурацкая мода.

b2evolution изнутри или портирование скина.

Все началось с того, что, выбрав b2evolution в качестве блогового движка этого сайта, я приступил к поиску какой-нибудь оригинальной шкуры для нее. Надо сказать что, по непонятным мне причинам, b2evo пользуется среди вебмастеров заметно меньшей популярностью, чем ее сестра Wordpress (оба эти движка являются потомками прекратившего свое существование b2), хотя как минимум не уступает ей по возможностям.

Как следствие, хороших шкур для нее довольно мало. Тем не менее, мне удалось найти в репозитории целых две шкуры, которые после доработки могли стать тем, что мне надо. Не долго думая, я скачал их, залил в нужную папку и установил из админки. Тут меня ждало первое разочарование: блог ни в какую не хотел работать, заявляя, что шкура не найдена :( Что за бред? Я же только что ее установил и она была видна :? Захожу в админку - там она есть. Несколько минут медитации навли меня на мысль покопаться в файлах сккина - вдруг чего интересного найду? Там действительно оказался неприметный файл skininfo.html, в котором было написано, что скин предназначен для версии 1.9.х, у меня же стоит 2.4. Черт.

Парочка интуитивно придуманных решений ни к чему не привела - с тех пор API блога так изменился, что почти половина вызовов функций в шаблонах вела себя черт знает как.

Стало ясно, что без вдумчивого чтения документации мне не обойтись. Пришлось лезть на оффсайт и ворошить тамошнюю вики на предмет доков по шаблонам. К моему удовольствию, там нашлась статья по обновлению скинов версий 1.х на 2.х, в которой кое-что пояснялось. Однако очень быстро выяснилось, что этой статьи недостаточно, а кое-что из нее в моем шаблоне просто отсутствовало, и как тут быть не совсем ясно. Еще двадцать минут читания документации и в голове сформировался вывод: шаблоны документированы хреново и придется разбираться самому.

На помощь мне пришел старый добрай способ “посмотри, как это сделано у других и сделай так же”. В результате пяти часов сравнения стиля Boogle (именно его я и начал портировать) со встроенным стилем evopress, изучения сорцов блога в надежде понять назначение и алгоритм работы всевозможных функций, я получил то, что хотел: дизайн, напоминающий гуглевский и еще несколько камней в огород разработчиков. Собственно, результат работы вы можете видеть в данный момент :)

Что я сделал:

  1. Сменил имена файлов шаблона на те, которые требовались для работы в новых версиях.
  2. Нашел и подставил новые функции вместо тех, которые использовались в старых версиях движка.
  3. Позаимствовал код отображения постов и боковой панели из шкуры evopress, заменив им старый код и адаптировав его для моего шаблона путем довольно-таки нудного ковыряния в css. Собственно, это и заняло большую часть времени.
  4. Выкинул старый код, напрямую обращавшийся к плагинам, заменив его контейнерами для виджетов.
  5. Мелкие косметические изменения в шаблоне.

Теперь о упомянутых камнях. Камень номер раз: несмотря на то, что на оффсайте движок заявлен как freeware, в нем имеется adware код, который выводит спонсорскую ссылку внизу страницы в строке с копирайтами. Надо сказать, что патчик, решающий проблему, (по вполне очивидным причинам я его публиковать не стану B) ) занимает всего три строчки, и его написание заняло меньше 10 минут, но неприятный осадок остался. Камень номер два: недостаточная документированность движка. К сожалению, этим грешат многие движки, но известны и обратные случаи. От части этот камень компенсируется достаточно простым кодом, но все равно обидно. Последним камнем станет чрезвычайно сложные шаблоны: в них активно используются php функции движка, непонятно как работающие и недокументированные. Я придерживаюсь мнения, что в шаблонах кода должен бвть минимум, а все должно быть реализовано при помощи базовых конструкций шаблонизатора. Хорошим примером может служить система шаблонов в phpBB3: полная абстрагированность от php кода ядра и в то же время все необходимые управляющие конструкции. Еще один хороший пример - всем известный smarty, но, ИМХО, он все же слишком перегружен, слишком уж много в нем программирования. К слову, самая плохая система шаблонов из мне известных используется в SMF - там весь HTML код хранится в виде строковых переменных php, что сильно напрягает при редактировании.

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

Я умышленно не стал касаться юзабилити - это тема для отдельной статьи, тем более неоднократно обсуждавшаяся.

Сайт запущен!

Сайт готов… Остались лишь мелочи: чуть-чуть подогнать дизайн, настроить SEO и все. Что бы теперь еще такое с ним сотворить?.. Готов выслушать все мнения по этому поводу и прислушаться к ним :)

А пока пойду донастраивать движок. приглянулся мне один шаблон - дак нет, он под старую версию и несовместим с последней, которую использую я :( Придется разбираться и портировать его вручную.