Можете ли вы скомпилировать Apache HTTP Server и повторно развернуть его двоичные файлы в другое место? - PullRequest
1 голос
/ 22 августа 2008

В рамках выпуска нашего продукта мы поставляем двоичные файлы Apache HTTP Server, которые мы скомпилировали на нашей машине разработки (UNIX).

Мы говорим нашим клиентам устанавливать двоичные файлы (на их серверах UNIX) в той же структуре каталогов, в которой мы их скомпилировали. Для некоторых клиентов это не подходит, например, где существуют ограничения на то, где они могут устанавливать программное обеспечение на своих серверах, и они не хотят сами компилировать Apache.

Существует ли способ компиляции HTTP-сервера Apache, чтобы динамически определять его место установки с помощью переменных среды?

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

Кому-нибудь удалось это сделать?

Ответы [ 4 ]

1 голос
/ 26 августа 2008

Если вы компилируете Apache2 для определенного местоположения, но хотите, чтобы ваши клиенты могли установить его где-то еще (и я предполагаю, что они имеют ту же архитектуру и ОС, что и ваша сборочная машина), тогда вы можете сделать это, но apachectl скрипту понадобится взлом после продажи.

Я только что проверил эти шаги:

  1. Распаковал исходник Apache2 (хотя это должно работать и с Apache 1.3) и запустил . / Configure --prefix = / opt / apache2

  2. Ран make затем sudo make install для установки на сборочный компьютер.

  3. Переключитесь в каталог установки (/ opt / apache2) и tar и распакуйте двоичные файлы и файлы конфигурации. Я использовал cd / opt / apache2; Судо Тар cf - apache2 | gzip -c> ~ / apache2.tar.gz

  4. Переместить файл tar на целевой компьютер. Я решил установить в / opt / mynewdir / dan / apache2 для тестирования. Так что, в основном, ваши клиенты не могут использовать rpm или что-то подобное - если вы не знаете, как сделать это перемещаемым (я не :-)).

  5. В любом случае, файл conf / httpd.conf вашего клиента будет заполнен жестко заданными абсолютными путями - они могут просто изменить их на все, что им нужно. Скрипт apachectl также имеет жестко закодированные пути. Это всего лишь сценарий оболочки, так что вы можете взломать его или дать им сценарий sed для преобразования старых путей с вашего компьютера сборки в новый путь ваших клиентов.

  6. Я пропустил все эти хакерские атаки и просто запустил . / Bin / httpd -f /opt/mynewdir/dan/conf/httpd.conf: -)

Надеюсь, это поможет. Сообщите нам о любых сообщениях об ошибках, которые вы получите, если он не работает для вас.

1 голос
/ 22 августа 2008

Я думаю, что способ решить эту проблему - разработать сценарий "./configure && make", который ваш клиент использует для установки, указания и компиляции двоичных файлов. Это, конечно, потребовало бы, чтобы у клиента был установлен весь исходный код на его сервере, или вы можете сделать его доступным на общем ресурсе NFS.

0 голосов
/ 06 сентября 2008

@ Hissohathair

Я предлагаю 1 изменить ответ @ Hissohathair.

6). ./bin/httpd -d <server path> (although it can be overridden in the config file) 

В apacheclt есть переменная для HTTPD, где вы можете переопределить ее для использования.

0 голосов
/ 26 августа 2008

Я думаю, что способ решить эту проблему - разработать сценарий "./configure && make", который ваш клиент использует для установки, указания и компиляции двоичных файлов. Это, конечно, потребовало бы, чтобы у клиента был весь исходный код, установленный на его сервере, или вы можете сделать его доступным на общем ресурсе NFS.

Не говоря уже о полном наборе инструментов для сборки. В наши дни GCC не поставляется по умолчанию с большинством основных дистрибутивов. Разве не было бы разумно заставить клиента установить его на /opt/my_apache2/ или что-то в этом роде?

...