Читая документацию модуля Mod_Perl, можем ли мы настроить его для каждого домена, что я имею в виду, можем ли мы настроить его для работы только в каждом домене или конкретном домене.
Что я вижу в документации:
Сценарии реестра
Чтобы включить скрипты реестра, добавьте в httpd.conf:
Alias /perl/ /home/httpd/2.0/perl/ <Location /perl/> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI </Location>
и теперь предположим, что у нас есть следующий сценарий:
#!/usr/bin/perl print "Content-type: text/plain\n\n"; print "mod_perl 2.0 rocks!\n";
сохранен в /home/httpd/httpd-2.0/perl/rock.pl. Сделайте скрипт исполняемым и доступным для чтения всем:
% chmod a+rx /home/httpd/httpd-2.0/perl/rock.pl
Конечно, путь к скрипту также должен быть доступен для чтения сервером. В реальном мире вы, вероятно, захотите иметь более жесткие разрешения, но для целей тестирования, что все работает, это нормально.
Насколько я понимаю выше, мы можем запускать сценарии Perl только из одной конкретной папки, в которую мы поместили указанную выше директиву. Итак, снова вопрос, можем ли мы сделать эту директиву для каждого домена для всех доменов или для определенного количества доменов?
После поиска, копания, вот краткие и понятные шаги для установки и настройки mod_perl для каждого домена.
установите mod_perl с помощью cpan из вашей оболочки:
%cpan
cpan> install mod_perl
cpan>exit
Войдите в свой WHM, затем:
*)- WHM: Main >> Service Configuration >> Apache Configuration >> Include Editor
under Pre Main Include:
LoadModule perl_module modules/mod_perl.so
then click "Update"
*) - Login as root from telnet.
*) - % mkdir - p /usr/local/apache/conf/userdata/std/2/username/domain.com
*)- cd /usr/local/apache/conf/userdata/std/2/username/domain.com
*)- % pico custom.conf
*)- put this code in the file custom.conf:
Alias /apps/ /home/username/public_html/apps/
<Location /apps/>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Location>
*)- % /scripts/ensure_vhost_includes --all-users
*)- create the folder mkdir -p /home/username/public_html/apps/
*)- put a test script in the /home/username/public_html/apps/ folder
*)- call the test script: http://domain.com/apps/test.cgi
*)- the output should be:
mod_perl 2.0 rocks!
MOD_PERL: mod_perl/2.0.7
*)- replace username by the domain username, domain.com with the actual domain name. Also rename the apps folder to anything you want to run mod_perl scripts direct.
код тестового скрипта test.cgi:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "mod_perl 2.0 rocks!\n";
#my $q = $ENV{MOD_PERL} ? CGI->new(shift @_) : CGI->new();
print "MOD_PERL: " . $ENV{MOD_PERL},"\n";
cpanel в httpd.conf говорит:
# To customize this VirtualHost use an include file at the following location
# Include "/usr/local/apache/conf/userdata/std/2/gamept/domain.com/*.conf"
Спасибо всем
Приведенная вами документация является лишь примером. Вы можете включить реестр mod_perl для запуска сценариев Perl с <Location>
или даже <LocationMatch>
директива где угодно. Если вы хотите, чтобы они были только в определенных доменах, поместите их в <VirtualHost>
директивы, а не за пределами VirtualHost.