mnshome.info
marzenia się spełniają



  Apache 2.4. Пропал метод remote_ip! Решение простое
13.11.2016 18:03

После появления Apache 2.4 разработчики mod_perl2 не "подтянули" весь набор изменений. 
Теперь место метода $r->connection->remote_ip следует использовать client_ip.

Изменение можно внести в startup.pl:

    package Apache2::Connection;
    # patch: http://osdir.com/ml/modperl.perl.apache.org/2014-11/msg00055.html
    sub remote_ip { return $_[0]->client_ip }
    1;

Или в обработчик Handlers::handler:

    my $PATCH_20141100055 = 0;
    sub handler {
        my $r = shift;

        unless ($PATCH_20141100055) {
            my $sver = _get_server_version();
            if ($sver && ($sver >= 2.04) && !$r->connection->can('remote_ip')) { # Apache 2.4.x or larger
                eval 'sub Apache2::Connection::remote_ip { return $_[0]->client_ip }';
            }
            $PATCH_20141100055 = 1;
        }

    # ...
    }
    
    sub _get_server_version {
        my $sver = Apache2::ServerUtil::get_server_banner() || '';
        $sver =~ s/^.+?\///;
        if ($sver =~ /([0-9]+)\.([0-9]+)\.([0-9]+)/) {
            return $1 + ($2/100) + ($3/10000);
        } elsif ($sver =~ /([0-9]+)\.([0-9]+)/) {
            return $1 + ($2/100);
        } elsif ($sver =~ /([0-9]+)/) {
            return $1;
        }
        return 0
    }

  Логи Apache в syslog
23.12.2015 15:28

Возникла задача писать логи Apache в SysLog. 

Решение оказалось практически на ладони

Ниже привожу цитируемый блок-выдержку из статьи (форматирование убрано)


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

CustomLog |/usr/local/share/apache22/logging common


/usr/local/share/apache22/logging – это перловый скрипт.
Выглядит он так:

#!/usr/bin/perl
use Sys::Syslog qw( :DEFAULT setlogsock );
 
setlogsock('unix');
openlog('apache', 'daemon', 'local2');
while ($log = <STDIN>) {
        syslog('notice', $log);
}
closelog

Для работы скрипта требуется перловый модуль /usr/ports/sysutils/p5-Sys-Syslog/. Я при работе пишу логи с фасилити local2. Можно использовать любой свободный фасилити.
В настройках syslog настройки логирования сообщений с facility2 выглядят так:

local2.*      /var/log/apache.log

Но если вы используете rsyslog, то возможности по логированию значительно возрастают. rsyslog умеет фильтровать сообщения по содержимому.
И если, к примеру, обычный лог в rsyslog.conf, записывающий сообщения с facility2 в лог /var/log/apacheserv.log настраивается так:

if $hostname contains 'apacheserv' and ( $syslogfacility-text contains 'local2') \
        then /var/log/apacheserv.log;TraditionalFormat

Мы фильтруем сообщения по имени сервера и фасилити.
А в случае, если в сообщении Apache, присутствует имя виртуального сервера, то вполне можно настроить запись отчетов по каждому виртуальному серверу в отдельный файл.
Формат логов Apache для этой ситуации у меня настроен так:

LogFormat "%h %l %u %t http://%v%U %>s %b" common

%v – эта переменная обозначает имя виртуального сервера к которому относится запись. Имя вирутального сервера – это то , что в настройках апача внесено в параметр ServerName.
А настройки rsyslog для виртуального сервера hilik.org.ua я использую такие:

if $hostname contains 'apacheserv' and ( $syslogfacility-text contains 'local2' and $msg contains 'hilik.org.ua') \
        then /var/log/hilik.org.ua.log;TraditionalFormat

Этот фильтр определяет, что все сообщения от сервера apacheserv c фасилити local2 и в сообщении содержащий строку hilik.org.ua будет записываться в /var/log/hilik.org.ua.log

На этом настройка закончена.

  MPMinus -- карта
23.08.2013 13:51
 
  Пофиксил баг с рекапчей!
11.08.2013 01:40

Опять же спасибо Илюхе за помощь, была проблема в добавлении комментов из-за неработающей рекапчи: Captcha::reCaptcha Input error: Invalid referer

Проблема в том что ключики - приватный и публичный - в гугле создаются только на конкретный домен по умолчанию, пришлось поставить галочку что использовать не только домен mnshome.info но и www.mnshome.info и вообще все *.mnshome.info... эээх... как же плохо что такоей прошлпил важный момеент hmmm

  Установка mnshome.info на новых модулях. Пример того как ставить проекты основанные на MPMinus
10.08.2013 13:48

Задача была в переписании текущего сайта блога таким образом, чтобы убить двух зайцев: перевести сайт на использование нового модуля MPMinus и исправить найденные за время работы баги и недочеты. Помимо этого - убить зайченка в виде улудшения юзабилити админской части сайта (блога) okularnik

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

Далее обновил порты FreeBSD и обновил программу cpan до второй версии.

После этих подготовительных операции установил сам MPMinus:

cpan> install MPMinus
cpan> install MPMinusX::AuthSsn

При установке все зависимые пакеты подтянулись и установились сами... нужно было немного подождать и попить любимый кофе Starbucks из серии Medium (Organic ethiopia) kawa -- спасибо Илюшке за столь вкусненький подарочек przytul

Далее нужно поставить несколько пакетов нужных для самого сайта mnshome.info:

cpan> install Captcha::reCAPTCHA
cpan> install XML::Simple

Последний, кстати сказать, пакет нужный не только для нужд сайта, а вообще!

Далее перехожу в каталог с извлеченным проектом и выполняю магический набор команд:

#> perl Makefile.PL
#> make
#> make test
#> make install
#> make clean

Проект (сайт) интегрировался в систему! Ура... 

Далее копирую конфиг апача куда следует, все основные настройки по mod_perl2 уже были выполнены совсем давно, и в доработках не нуждаются... делаем команду рестарта апача:

#> /usr/local/etc/rc.d/apache22 restart

Вуаля! Блог работает и процветает hura

 

 

  Первый «тест» в блоге, написанный с использованием обновленного CKEditor!
08.08.2013 20:02

Блог претерпел изменения, особенно админская его часть! Теперь добавлять новые посты стало намного проще cwaniak В ближайшее время проанонсирую новую версию блога... ничего кардинального не поменяется, дизайн останется тем-же, т.к. все к нему уже привыкли :) добавились мелочи но приятные мелочи zacieszacz

 
 

 

  Грядущие изменения в блоге!
26.07.2013 17:11

Сегодня начал процесс переписывания блога на MPMinus 1.17 что окончательно отделяет проект от своего фрейм-ворка. Процесс перехода не простой и потребует некоторого времени. При переходе некоторые функции будут недоступны, например, на некоторое время отключится возможность оставлять комменты к постам всвязи с переходом на reCaptcha

  Вышла в сеть обновленная версия share-сервера, встречайте!
22.07.2013 16:27

Было еще сегодня утром так:

В дождливые выходные от нечего делать созрел план сделать так:

Ну и теперь получилось так:

Новый сайт построен полностью на MPMinus и размещен на двух апстримах моей фермы :) 

Доступен сайт по ссылке http://share.mnshome.info

  Выпутил Latest версию MPMinus 1.16
18.07.2013 20:45

Выпустил и опубликовал финальную версию фреймворка MPMinus.

Немного отличительных особенностей фреймворка:

- Работа только с web-сервером Apache 2 и выше

- Работа только в режиме mod_perl2, никаких cgi/fastcgi и никаких старых версий софта, обратной поддержки нет и не будет :)

- Никакого Moose (за исключением хелперов где скорость не имеет значений)

- Имеется хелпер, позволяющий "разворачивать" новые проекты за 3 минуты :)

- Протестировано на: Windows32/64, CygWin, FreeBSD, Centos, Ubuntu, Debian, GNU Linux, Suse

- Выдерживает нагрузку в сотни, а может быть и тысячи обращений в секунду, все завсисит от того насколько много модулей Apache подключено и насколько сложен проект. Производительность увеличивается путем использования proxy сервера nginx

- Проекты под MPMinus встраиваются как модули и ими можно управлять через программу cpan

- Нет ничего лишнего, а то что считается лишним можно не испольовать :)

- Привязка к шаблонизатору TemplateM условна, от нее можно отказаться в любой момент времени, не нравится - не используй :)

- Оттестировано и применяется на проекте платежных систем Cyberplat/OSMP, работает настолько хорошо, что о проекте платежных систем мы не вспоминали пару лет как точно... и то, вспоминали только когда нужно было что-то добавить в XML ответов :)

- Поддерживается гибкое конфигурирование проектов, а также быстрый способ добавления новых контроллеров

- Поддерживаются два базовых подхода в реализации процессов Запрос-Обработка-Ответ: Simple и MVC Skel Transaction. О последнем говорить можно долго но он описан пдробно в моих ранних топиках. Мы работаем так: сложный проект - MVC Skel Transaction; простые с максимальной производительностью - Simple -- и все летает!

- Для создания проектов используется набор скелетов, доступных на сайте CPAN или на сайте dist.suffit.org. Скелеты можно использовать и свои, используя ключик mpm -s ПАПКА

Теперь что касается того как все установить и как работать, рассмотрю типовой вариант установки на базе настроенного Apache в связке с mod_perl2 желательно всех свеженьких модулей :)

- Делаемся рутом любым способом

# su -

- Идем в команду cpan

# cpan> install MPMinus

оно все поставится само со всеми зависмостями

- После того как поставилось, нужно проверить что mod_perl2 настроен и работает правильно, для работы нужно чтобы были подгружены освновыне mod_perl2 модули, мы делаем это с помощью скрипта startup.pl который вызывается такой строчкой конфига:

PerlSwitches -w
PerlRequire startup.pl

В самом файле startup.pl нужно чтобы было ПРИМЕРНО вот так:

use ModPerl::Util (); #for CORE::GLOBAL::exit
use Apache2::Filter ();
use Apache2::FilterRec ();
use Apache2::Const qw(-compile :common);
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUtil ();
use Apache2::ServerRec ();
use Apache2::ServerUtil ();
use Apache2::Connection ();
use Apache2::Log ();
use APR::Const qw(-compile :common);
use APR::Table ();
use APR::Bucket ();
use APR::Brigade ();
use ModPerl::Registry ();
use Apache2::Status;
use Apache::DBI;
use CGI qw(-compile :all);

Тут нет ничего нестандартного, все пакеты ставились Вами при установке MPMinus :) сам файлик есть ваших созданных проектах в каталоге src :)

- Далее запускаем хелпер с целью конфигурирования:

# mpm config

Он запросит сам все что нужно, запустит приложения используя переменную окружения PATH ну и определит все пути по возможности тоже сам.

Если все пройдет без запинок но благополучно завершится :)

- далее приступаем к созданию самого проекта, Например проект Foo, для этого вводим:

# mpm create Foo

Аналогично хелпер сам все запросит и предложить выбрать то или иное... Особое внимание отнеситесь к путям, потому как проект развернется именно в них,
учтите, что если папка названная именем сайта нового проекта уже была создана ранее и содержала какие-то файлы, то она будет затерта... отнеситесь к таким вещам серьезно.

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

- Далее перезагружаем Apache и наслаждаемся сайтом в базовой комплектации :))

  MPMinus в новом обличае :)
15.07.2013 20:24

Создал хелперы для написания сайтов под управлением MPMinus. Как это работает?!

- устанавливаем модуль через CPAN: cpan install MPMinus

- настраиваем его: mpm config

- вводим команду под рутом: mpm create mpm

- выполняем первоначальные действия опичанные в отображаемой на экране инструкции

- перезагружаем Apache и радуемся :) вот пример:

THUD XYZZY PLUGH FRED WALDO GARPLY
GRAULT CORGE QUUZ QUX BAZ BAR FOO

День памяти перевода часов на летнее время

0
0
0
days
:
0
0
hrs
:
0
0
min
:
0
0
sec

поиск по дате...
поиск по содержимому...
GGCzat 1.00
Tagi
Artefakty
28.12.2015 13:09:22
MDScore: Marionette.js
06.05.2016 13:07:16
Создать RESTfull обработчик как модуль
01.12.2017 22:56:38
SubProject: static-site
24.06.2017 17:34:47
MNSHOME: Переходить на Centos!
30.10.2017 13:05:21
Создать функционал 2 в 1: mod_perl библиотеку для получения отчета по бэкапам за последние сутки
19.08.2015 11:35:42
Переезд разработчиков на тестовый MySQL сервере
02.03.2016 18:20:19
По вёрстке - loftblog
02.06.2015 13:52:56
С Даши за ECB/VTB24
29.11.2017 18:05:16
Создать простые функции криптования AES256+Blowfish+base64
Tue, 16 Oct 2018 13:09:22 +0400

Linki zewnętrzne

#OPERA
Czytam
GRY
MnshomeInfo
Monitoring
Photo
Przyjaciele
Serwisy
fla-master

IP

Valid XHTML 1.0 Transitional

Valid CSS!


Copyright © 1998-2017 Serż Minus. All rights reserved


do góry