cyberflow_gravatar

Cyberflow

I am linux system administrator.


Navigation
» Home
» Categories
» Github
» XML Feed

Cyberflow


    logstash, ротация логов в elasticsearch

    31 May 2013 | Comments

    Небольшая заметка как организовать ротацию логов, собирающихся при помощи logstash в elasticsearch.

    В крон добавляем:

    cat <<'EOF' > /etc/cron.daily/logstash
    #!/bin/bash
    logdate=$(date -d'-15 days' +"%Y.%m.%d")
    curl -XDELETE "http://localhost:9200/logstash-${logdate}"
    EOF

    Этот скрипт будет запускаться ежедневно и удалять все логи из elasticsearch 15-дневной давности.

    Hyperdb to Wordpress

    22 Mar 2013 | Comments

    Hyperdb - это замена стандартоного класса wpdb, позволяющая использовать несколько баз данных. В данной статье я опишу настройку hyperdb для распределенной инфраструктуры, состоящей из двух frontend серверов и двух серверов баз данных на базе дистрибутивов Debian 6, в качестве основной задачи ставилось не только распределение запросов на чтение между серверами БД, но и отслеживания отставаний слэйв сервера и, в случае отставания, чтение актуальных данных с мастера.

    Настройка самих фронтендов оставим за кадром, т.к. это выходит за рамки данной статьи. Что касается серверов БД, то мы будем использовать мастер-слэйв репликацию и mk-heartbeat для отслеживания lag-ов на слэйве. Сервера геораспределены и каждый сервер БД располагается в отдельном ДЦ в паре с фронтендом. На настройке баз я остановлючь подробнее:

    Настройка репликации DB:

    Здесь не описано ничего принципиально нового. Используется стандартная репликация Мастер-Слэйв средствами MySql.

    Добавление Facebook комментариев к Octopress

    20 Mar 2013 | Comments

    В этой небольшой статья я опишу как добавить комментарии facebook к блогу на octopress. В octopress есть поддержка комментариев с использованием disqus, но мне ближе facebook.

    Для начала необходимо зарегистрировать приложение на facebook для своего блога. Когда регистрация пройдена facebook должен выдать app id. Теперь можно приступить к настройке. Добавим facebook app id и параметры отображения комментариев в файл конфигурации _config.yml

    _config.yml

    # Facebook comments
    facebook:
      appid: 222612811167194
      num_post: 5
      width: 789
      colorscheme: light

    Следующим шагом добавим facebook javascript API на нашу страницу. Для этого можно воспользоваться уже имеющимся в octopress функционалом facebook like. И так, открываем siurce/_includes/facebook_like.html и меняем строчку содержащую js.src= заменив в ней цифры на app id полученный от facebook.

    Настраиваем сервера на Clodo через Opscode Chef

    28 Feb 2013 | Comments

    Данная статья описывает возможность автоматической настройки виртуальных серверов (на примере хостинга clodo) с помощью chef.

    Заводим аккаунт в opscode

    Добавляем free хостинг на 5 серверов.

    При создании необходимо скачать ключик валидотора и конфиг для knife и поместить в ~/.chef/knife.rb.

    current_dir = File.dirname(__FILE__)
    log_level                :info
    log_location             STDOUT
    node_name                "cyberflow"
    client_key               "#{current_dir}/cyberflow.pem"
    validation_client_name   "clodo-test-validator"
    validation_key           "#{current_dir}/clodo-test-validator.pem"
    chef_server_url          "https://api.opscode.com/organizations/clodo-test"
    cache_type               'BasicFile'
    cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
    cookbook_path            ["#{current_dir}/../cookbooks"]

    Далее идём в opscode, заводим клиента, и ключик для клиента кладём так же в ~/.chef/.

    Github pages, jekyll и custom plugins

    28 Feb 2013 | Comments

    Не секрет, что jekyll отличный движок для блогинга. Так же не секрет, что многие пользователи jekyll используют в качестве хостинга github pages. Однако, как всегда, есть нюансы. В случае с github pages это отсутствие поддержки custom plugins, коих для jekyll имеется в количестве. Есть масса вариантов хостить статику, но в этой статье речь пойдёт о том, как можно продолжать хоститься на github pages и использовать при этом плагины.

    Собственно и в этом вопросе не обошлось без вариантов, но лично для себя я выбрал вариант, который предложил Alexandre Rademaker. Суть этого решения заключается в том, чтобы отказаться от генерации статики на стороне github, а генерить её локально. Однако красота метода заключается в том, что при этом все исходные данные продолжают находиться под контролем git-a.

    Теперь по сути:

    Мы будем использовать branch source для хранения сырых данных и самой начинки jekyll, тогда как в master бранче будет только статика, которая и будет раздаваться по средствам github pages.

    Далее предполагается, что у нас уже есть репозиторий на github, где в мастер ветке лежит jekyll и сырые данные без статики. Теперь создаём новый branch:

    $ git branch source
    $ git push origin source
    $ git checkout source

    Теперь создаём что нам надо, добавляем плагины и т.п.

    $ git status / git add / git commit

    Запускаем jekyll:

    $ jekyll

    Всё готово для выкладки на github pages:

    $ checkout master
    $ cp -r _site/* . && rm -rf _site/ && touch .nojekyll
    $ git status > git add > git commit
    $ git push -all origin

    В статье используются материалы с сайта: http://arademaker.github.com