Пожалуйста, порекомендуйте способ развертывания в Linux-боксе в среде локальной сети. - PullRequest
3 голосов
/ 03 февраля 2010

боролись ли вы с развертыванием Linux раньше?

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

Что бы вы посоветовали как лучший способ развертывания?У меня есть некоторые идеи, но я не уверен, что лучше.

  • Я могу использовать Java
    • Мне нужно будет установить JDK, и это решает в основном все
    • Еще одна большая проблема заключается в том, что код, который мы в настоящее время имеем на Java, плохо написан и работает медленно.
    • Я не уверен, нужно ли мне устанавливать Instantclient для подключения к Oracle под linux
  • Я могу использовать C (у меня есть исходный код для очень хорошо написанной программы LGPL)
    1. И использовать dpkg для развертывания
      • Linux box, скорее всего, сервер Ubuntu,но я не уверен, какая версия установлена ​​
      • Я не могу использовать apt-get, но я могу скопировать все нужные мне пакеты
      • Я знаю, что могу использовать dpkg -s для проверкикакими пакетами они являются, но я действительно не уверен, что могу пропустить зависимости.
      • Думаю, мне понадобятся build-essentials и pcap или что-то подобное
    2. И используйтестатическое связывание
      • Я настроил его на ./configure LDFLAGS=-static без ошибок, и теперь он работает на моем компьютере
      • У меня есть chroot в этом каталоге и без проблем запускаю, значит ли это, что все в порядке?
      • Мне действительно нужно проверить это на новом Linux-боксе, чтобы убедиться, что
    3. И использовать Statifier
      • Я просмотрел stackoverflow и нашел это приложение, еще не пробовал его.
      • Похоже, что люди использовали его с переменным успехом.
    4. И создать среду сборки и сделать
      • Я не уверен, что это сработает
  • Использование C оставляет некоторые проблемы
    • Но программа не завершена, я должен обработать эти данные, предпочтительно не в C.
    • Я должен установить Instantclient, который трудно развернуть
  • Я могу использовать Perl
    • Я не могу использовать CPAN
    • Я уже загрузил библиотеки, так что, возможно, я мог бы просто скопировать их на развернутую машину, яЯ не уверен, как или работает ли это
    • Perl работает медленно
    • Я должен установить Instanyclient anyways

Пожалуйста, поделитесь подобным опытом.

1 Ответ

1 голос
/ 03 февраля 2010

C со статическим связыванием решает множество проблем переносимости за счет большего исполняемого файла. Чтобы убедиться, что все действительно статически связано и не зависит тайно от каких-либо внешних библиотек, запустите ldd на своем исполняемом файле и убедитесь, что он не загружает все динамически. Обратите внимание, что он не будет на 100% переносимым среди различных машин Linux, потому что Oracle InstantClient имеет некоторые зависимости от версий ядра, но он должен работать на любом достаточно новом ядре.

Редактировать: Если у коробки есть доступ к локальной сети и просто нет доступа к Интернету, почему бы не запустить свой собственный репозиторий apt в локальной сети. Вы могли бы даже создать .deb для своего приложения и поместить его на тот же сервер, чем на этом компьютере, вам просто нужно выполнить apt-get myApplication, и он также будет сбрасывать ваше приложение и любые неустановленные зависимости. Настроить подходящее зеркало на самом деле довольно легко, и это было бы довольно гладко. Если сетевой доступ отсутствует полностью, вы все равно можете создать установочный DVD-диск, на котором есть все библиотеки, включая ваше приложение, и настроить apt-get для извлечения оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...