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
    }
  Связка nginx + Apache2.4
13.11.2016 17:42

Были времена когда мы пользовались Apache2.2... Но пришли времена другие, времена Apache 2.4 drink

Для Apache 2.4 нет никакого стороннего mod_rpaf2! А есть новый, встроенный в сам Apache: mod_remoteip

Ставить ничего не надо, и даже, скорее всего, ничего подключать не надо... просто надо прописть в конфиге знакомые строки:

#LoadModule remoteip_module modules/mod_remoteip.so
<IfModule mod_remoteip.c>
    RemoteIPHeader X-Real-IP
    RemoteIPInternalProxy 10.197.80.121
    RemoteIPInternalProxy 192.168.92.110
</IfModule>

И вуаля! Profit!

 

  Centos 6.7 + PHP 5.6 + OCI8 + Oracle Client + Apache22
27.04.2016 19:20

Краткая статья про установку системы, с учетом бага OCI8

Базовая система: Centos 6.7

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
yum update -y

/etc/yum.repos.d/remi.repo
Поставить "enabled=1" в секциях [remi-php56] и [remi-php56-debuginfo]

yum install mc
yum install subversion

php -v
yum list
yum list | grep php

yum install php
yum install php-devel
yum install php-pear
yum install php-mysql
yum install php-mbstring
yum install php-pecl-memcache
yum install php-intl

yum -y install memcached
chkconfig memcached on
service memcached start
chkconfig httpd on
service httpd restart

Делаем все как в посте http://www.mnshome.info/?id=336

yum install gcc
yum install libaio

rpm -i oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm
rpm -i oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm
rpm -i oracle-instantclient11.2-sqlplus-11.2.0.2.0.x86_64.rpm

reboot

# Установка OCI8

/usr/include/php/main/php_config.h
Коментируем строку:
/* #define HAVE_OCI8_DTRACE 1 */

pecl download oci8-2.0.8
phpize
./configure --disable-dtrace --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib/
make
make install

/etc/php.d/20-oci8.ini
Вставляем строку:
extension=oci8.so

service httpd restart

  Логи 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 и появились новые плюшки любезно предоставленные нам Google :)
12.08.2013 17:07

Вот и готова новая редакция блога, переехав на свое законное место и подпилив разные косяки «неровности» мягкими напильничками и надфилечками он перед вами :)

Главной особенностью данной версии является переход на самые последние версии библиотек MPMinus, jQuery и jQueryUI. Помимо этого сайт блога стал более портабельным, и устанавливается как системный модуль Perl. Более подробную информацию о модуле MPMinus можно увидеть на странице проекта http://search.cpan.org/search?query=MPMinus

Стоит отметить, что блог по-прежнему работает в тесной связке с Apache и mod_perl2

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

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

 
 

 

  Выпутил 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 и наслаждаемся сайтом в базовой комплектации :))

  HTTP 1.1 Status Codes
29.05.2013 10:41
  • Informational 1xx:

     100 HTTP_CONTINUE                        Continue
     101 HTTP_SWITCHING_PROTOCOLS             Switching Protocols
  • Successful 2xx:

     200 HTTP_OK                              OK
     201 HTTP_CREATED                         Created
     202 HTTP_ACCEPTED                        Accepted
     203 HTTP_NON_AUTHORITATIVE               Non-Authoritative Information
     204 HTTP_NO_CONTENT                      No Content
     205 HTTP_RESET_CONTENT                   Reset Content
     206 HTTP_PARTIAL_CONTENT                 Partial Content
  • Redirection 3xx:

     300 HTTP_MULTIPLE_CHOICES                Multiple Choices
     301 HTTP_MOVED_PERMANENTLY               Moved Permanently
     302 HTTP_MOVED_TEMPORARILY               Found
     303 HTTP_SEE_OTHER                       See Other
     304 HTTP_NOT_MODIFIED                    Not Modified
     305 HTTP_USE_PROXY                       Use Proxy
     306                                      (Unused)
     307 HTTP_TEMPORARY_REDIRECT              Temporary Redirect
  • Client Error 4xx:

     400 HTTP_BAD_REQUEST                     Bad Request
     401 HTTP_UNAUTHORIZED                    Unauthorized
     402 HTTP_PAYMENT_REQUIRED                Payment Required
     403 HTTP_FORBIDDEN                       Forbidden
     404 HTTP_NOT_FOUND                       Not Found
     405 HTTP_METHOD_NOT_ALLOWED              Method Not Allowed
     406 HTTP_NOT_ACCEPTABLE                  Not Acceptable
     407 HTTP_PROXY_AUTHENTICATION_REQUIRED   Proxy Authentication Required
     408 HTTP_REQUEST_TIMEOUT                 Request Timeout
     409 HTTP_CONFLICT                        Conflict
     410 HTTP_GONE                            Gone
     411 HTTP_LENGTH REQUIRED                 Length Required
     412 HTTP_PRECONDITION_FAILED             Precondition Failed
     413 HTTP_REQUEST_ENTITY_TOO_LARGE        Request Entity Too Large
     414 HTTP_REQUEST_URI_TOO_LARGE           Request-URI Too Long
     415 HTTP_UNSUPPORTED_MEDIA_TYPE          Unsupported Media Type
     416 HTTP_RANGE_NOT_SATISFIABLE           Requested Range Not Satisfiable
     417 HTTP_EXPECTATION_FAILED              Expectation Failed
  • Server Error 5xx:

     500 HTTP_INTERNAL_SERVER_ERROR           Internal Server Error
     501 HTTP_NOT IMPLEMENTED                 Not Implemented
     502 HTTP_BAD_GATEWAY                     Bad Gateway
     503 HTTP_SERVICE_UNAVAILABLE             Service Unavailable
     504 HTTP_GATEWAY_TIME_OUT                Gateway Timeout
     505 HTTP_VERSION_NOT_SUPPORTED           HTTP Version Not Supported

 

  Установка проекта SUFFIT на новом оборудовании
10.12.2011 22:24

Самое главное - нормально поставить модули через cpan! Вот они:

(Ставить нужно в объявленном порядке)

TemplateM 3.00
File::Copy::Recursive
Config::General
YAML
Moose
namespace::autoclean
MIME::Lite
Term::ReadKey
Text::SimpleTable
Apache::Session
Captcha::reCAPTCHA
XML::RSS
XML::Simple
File::Spec
Sys::SigAction
Time::HiRes
Text::CSV
CGI::Session

 

  apache virtualhost or .htaccess redirect
10.12.2011 21:27

<VirtualHost *:80>
    ServerName www.foo.com
    ServerAlias www.bar.com
    RedirectMatch /(.*) http://www.baz.com
</VirtualHost>

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
06.05.2016 10:42:36
Создать RESTfull обработчик как модуль
24.06.2017 17:34:47
MNSHOME: Переходить на Centos!
19.08.2015 11:35:42
Переезд разработчиков на тестовый MySQL сервере
28.12.2015 10:44:39
MDScore: Marionette.js
02.06.2015 13:52:56
С Даши за ECB/VTB24
30.10.2017 10:40:53
Создать функционал 2 в 1: mod_perl библиотеку для получения отчета по бэкапам за последние сутки
29.11.2017 10:38:08
Создать простые функции криптования AES256+Blowfish+base64
01.12.2017 10:37:43
SubProject: static-site
Thu, 28 Feb 2019 10:44:39 +0400

Linki zewnętrzne

Elsewhere
Media
Resources
See Also
Tools

IP

Valid XHTML 1.0 Transitional

Valid CSS!


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


do góry