Сведения о вопросе

Getthesound

23:05, 5th August, 2020

Теги

apache   unix   httpserver    

Можно ли скомпилировать сервер Apache HTTP и повторно развернуть его двоичные файлы в другое место?

Просмотров: 569   Ответов: 4

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

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

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

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

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



  Сведения об ответе

piter

22:20, 14th August, 2020

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


  Сведения об ответе

fo_I_K

20:22, 22nd August, 2020

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

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

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

  2. Побежал потом sudo сделать установить на самой машине.

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

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

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

  6. Я пропустил всю эту халтуру и просто побежал ./bin/httpd-f / opt/mynewdir/dan/conf/httpd.conf :-)

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


  Сведения об ответе

$DOLLAR

04:20, 4th August, 2020

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

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


  Сведения об ответе

SEEYOU

21:06, 1st October, 2020

@Hissohathair

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться