Как установить мод perl 2.0.9 в Apache 2.4 на OS X Yosemite?
с выпуском OS X 10.10 Yosemite Apple обновила свой сервер Apache до версии 2.4.
во время выпуска mod_perl 2.0.8 был несовместим с Apache 2.4, А mod_perl 2.0.9 еще не был официально выпущен (подробнее).
Итак, Apache был включен без него.
Я работаю локально на веб-сайте, используя perl и нужно установить него.
Я опытный программист, но я никогда не делал ничего подобного раньше, и только моя основная машина для работы. Я не против потратить некоторое время, чтобы понять это, но я не могу позволить себе Борк моего локального сервера.
Как установить mod_perl на OS X Yosemite?
подвопросы:
- какую версию лучше устанавливать?
- загрузить его в место установки или в другое место?
- где я могу установить его?
- несколько есть другие зависимости, которые необходимо установить заранее?
- должен ли я повторно создать установку apache или установка mod_perl автономна?
Я опытен в bash и очень удобен в использовании терминала.
4 ответов
mod_perl 2.0.8 (последняя стабильная) не сократит его-он не знает об устаревании MPM_NAME в apache 2.4.икс Загрузите последнюю версию dev через svn:
svn checkout https://svn.apache.org/repos/asf/perl/modperl/trunk/ mod_perl-2.0
в файле изменений эта версия указана как 2.0.9-dev
Xcode 6.01 не будет вырезать его-это заголовки apache заставит mod_perl думать, что вы используете apache 2.2.26; получить Xcode 6.1 (выпущен 20 октября).
Makefile.PL по-прежнему будет трудно найти ap_release.h (чтобы получить версию apache). Это здесь:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apache2/ap_release.h
Makefile.PL будет выглядеть по умолчанию в /usr/include/apache2
. Он также будет искать заголовки apr в /usr/include/apr-1
потому что Йосемити-включен /usr/bin/apr-1-config
скажет ему, что они там (они на самом деле в /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apr-1
)
/usr/bin/apr-1-config --includedir
/usr/include/apr-1
я попытался установить env vars MP_AP_PREFIX
и MP_APR_CONFIG
соответствующим образом, но эти значения, казалось, игнорировались. Поэтому я облегчил себе задачу:--17-->
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apache2 /usr/include/apache2
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apr-1 /usr/include/apr-1
(спасибо Шону Койну)в блог Джейсона А. Кроума пост "llvm / clang на OS X по умолчанию C99, но mod_perl ожидает 89 "standard"
$ perl Makefile.PL MP_CCOPTS=-std=gnu89; make ; sudo make install
на LoadModule
линия для mod_perl
был удален из Йосемити .
Добавить
LoadModule perl_module libexec/apache2/mod_perl.so
в раздел модуль /etc/apache2/httpd.conf
дополнительное завинчивание требуется в El Capitan!
в El Capitan Apple запрещает пользователям писать в любом месте под /usr / кроме / usr/local/
ссылаясь на ответы Дэна Дила и Эндрю Свифта выше, и предполагая, что у вас установлен Xcode 7 и El Capitan (10.11) SDK:
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/apache2 /usr/local/include/apache2
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/apr-1 /usr/local/include/apr-1
будет мягкой связью заголовков Xcode с /usr/местные/включать.
Далее, мы должны сказать Makefile.PL где найти заголовки (поскольку по умолчанию предполагается /usr/include).
sudo cp /usr/sbin/apxs /usr/local/bin
сделать копию инструмента APXS, который Makefile.PL используется для поиска заголовков apache. Теперь отредактируйте его:
sudo vi /usr/local/bin/apxs (or)
sudo nano /usr/local/bin/apxs
найдите строку, которая говорит:
my $prefix = get_vars("prefix");
и замените его на:
my $prefix = "/usr/local";
убедитесь, что /usr / local / bin находится на вашем пути перед /usr / sbin, чтобы он взял тот, который вы только что изменили:
export PATH=/usr/local/bin:$PATH
теперь вы можете идти вперед и строить него:
perl Makefile.PL MP_CCOPTS=-std=gnu89; make ; sudo make install
наконец, при редактировании httpd.conf, вам нужно явно передать полный путь к mod_perl.Итак, поскольку это не в каталоге, который apache ожидает найти:
LoadModule perl_module /usr/local/libexec/apache2/mod_perl.so
это упрощенная версия ответа Dan Deal, с несколькими заметками для менее опытных разработчиков.
вам потребуется установить Xcode 6.1 из Mac App Store. Xcode-это набор инструментов, разработанных Apple для разработки программного обеспечения iOS и OS X. Он занимает почти 6gb, но можно удалить после этой установки.
запустите Xcode один раз, чтобы согласиться с условиями Apple.
В Терминале, перейдите в любой временный каталог, затем загрузите mod_perl 2.0.9-dev: (Внимание - "любой временный каталог" должен быть на корневом Томе и не должен иметь любые символы пробела в имени каталога; в противном случае скрипты make потерпят неудачу позже)
svn checkout https://svn.apache.org/repos/asf/perl/modperl/trunk/ mod_perl-2.0
перейдите во вновь созданный каталог mod_perl:
cd mod_perl-2.0
скажите установщику, где искать детали:
/usr/bin/apr-1-config --includedir /usr/include/apr-1
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apache2 /usr/include/apache2
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apr-1 /usr/include/apr-1
(ln-s делает символическую ссылку, а apr-1-config программа используется для получения информации о библиотеке apr и обычно используется для компиляции и ссылки на библиотеку.)
(внимание-на некоторых установках Yosemite каталог /usr/include не существует; вы возможно, придется создать его с помощью cd/usr; mkdir include)
принять от него:
perl Makefile.PL MP_CCOPTS=-std=gnu89; make ; sudo make install
удалить временную папку mod_perl-2.0.
скажите apache включить mod_perl в apache файл httpd.conf:
sudo vi /etc/apache2/httpd.conf (or)
sudo nano /etc/apache2/httpd.conf
добавить следующую строку в конце списка включает, около строки 170:
LoadModule perl_module libexec/apache2/mod_perl.so
сохранить, выйти и перезапустить apache:
sudo apachectl restart
Спасибо за все выше указателей. Вот решение / receipe, строящееся из источника без символической ссылки на нечетные файлы в Xcode и избегающее ошибки "ожидаемое в: плоское пространство имен".
(edit:) к моему большому удивлению, httpd, который предоставляет Apple (2.4.16), теперь способен работать с мой от него!
0 Xcode 7.3 (beta) и utils командной строки, OS X 10.11.3 El Capitan
1 установить perl,С темы:
perlbrew install -f -Dusethreads perl-stable;
я поставил perl в /usr / local / perl5/
2 получить apr-1.5.2
3 получить apr-util-1.5.4
4 получить pcre-8.38 (./ configure --prefix= / usr / local/pcre; make; make install)
5 получить httpd-2.4.9
6 скопируйте (cp-r-p) dirs apr-1.5.2 и apr-util-1.5.4 в httpd-2.4.9/srclib/ as " apr " и "apr-util" соответственно, чтобы иметь возможность использовать --with-included-apr при создании httpd.
7 компакт-диск файл httpd-2.4.9
export CC=/usr/bin/gcc
export CPP=/usr/bin/cpp
./configure --prefix=/usr/local/apache2/ --enable-mods=most --enable-auth-basic --enable-rewrite --with-included-apr --with-pcre=/usr/local/pcre
make clean
make
make install
8 него-2.0.9
perl Makefile.PL MP_CCOPTS=-std=gnu89 MP_APXS=/usr/local/apache2/bin/apxs
(MP_COPTS=-std=gnu89 жизненно важно здесь)
make
make install
информация о сборке и загруженных модулей:
# httpd -V
Server version: Apache/2.4.16 (Unix)
Server built: Jul 31 2015 15:53:26
Server's Module Magic Number: 20120211:47
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr"
-D SUEXEC_BIN="/usr/bin/suexec"
-D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
# httpd -D DUMP_MODULES
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_prefork_module (static)
authn_file_module (shared)
authn_core_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_user_module (shared)
authz_core_module (shared)
access_compat_module (shared)
auth_basic_module (shared)
reqtimeout_module (shared)
filter_module (shared)
mime_module (shared)
log_config_module (shared)
env_module (shared)
headers_module (shared)
setenvif_module (shared)
version_module (shared)
proxy_module (shared)
proxy_connect_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_fcgi_module (shared)
proxy_scgi_module (shared)
proxy_wstunnel_module (shared)
proxy_ajp_module (shared)
proxy_balancer_module (shared)
proxy_express_module (shared)
slotmem_shm_module (shared)
lbmethod_byrequests_module (shared)
lbmethod_bytraffic_module (shared)
lbmethod_bybusyness_module (shared)
unixd_module (shared)
status_module (shared)
autoindex_module (shared)
negotiation_module (shared)
dir_module (shared)
alias_module (shared)
rewrite_module (shared)
perl_module (shared)