Запуск xinc на сервере Apache OpenBSD

Кто-нибудь смог заставить xinc корректно работать под управлением Apache в chroot по умолчанию в OpenBSD? Я хотел бы, чтобы наш сервер разработки работал полностью синхронизированным, точно так же, как и наш производственный сервер, чтобы мы могли убедиться, что наш код работает точно так же, как и синхронизированный.

4 ответа

Решение

Вы разместили проблему на трекере ошибок Xinc? Сам Xinc должен работать нормально, поскольку он работает как демон и как веб-приложение. Как вы уже упоминали, проблема может заключаться в том, что демон не работает в среде chroot, где, как и в веб-интерфейсе, приводят к тому, что обе стороны не захватывают файлы.

@dragonmantank

В случае с Xinc, я надеюсь, что вы использовали PEAR для его установки.

pear list-files xinc/Xinc

Это должно сделать это, и покажет вам, куда установил Xinc свои файлы. Таким образом, хотя Xinc "просто" один большой PHP-скрипт, он все еще распространяется на rc-скрипты и все те другие вещи, которые необходимы для запуска приложения. Я уверен, что вам не нужно добавлять все пути, перечисленные там, но, вероятно, некоторые из них, чтобы он работал.

Помимо самого Xinc, я думаю, что для работы ему также нужен phpUnit и куча других библиотек PEAR, поэтому я предлагаю следующее:

pear config-get php_dir

И затем вам нужно добавить этот путь (как предложил Хенрик) в среду chroot.

Никогда не использовав xinc самостоятельно, я могу только намекнуть, как обычно я получаю приложения для синхронизации.

Первым шагом будет сбор информации обо всем, что необходимо приложению для запуска; Обычно я выполняю это, запустив systrace(1) и ldd(1), чтобы выяснить, что нужно для запуска программного обеспечения.

Пройдите через вывод

systrace -A -d. <app>
ldd <app>

и убедитесь, что все, к чему приложение прикасается и что ему нужно (довольно много приложений касаются того, что на самом деле не нужно), доступно в среде chroot. Возможно, вам придется немного настроить конфиги и переменные окружения. Кроме того, если есть возможность иметь журнал приложения в системном журнале, я обычно делаю это и создаю сокет системного журнала (см. Параметр -a syslogd (8)), чтобы уменьшить места, к которым приложению необходим доступ для записи.

То, что я только что описал, - это общий способ запуска любой программы в среде chroot (однако, если вам нужно импортировать половину пользовательского пространства и некоторые команды suid, вы можете просто не выполнять chroot:). Для приложений, работающих под Apache (я уверен, что вы знаете, что OpenBSD httpd (8) немного отличается), у вас есть возможность (после запуска программы; любые динамические библиотеки все еще должны присутствовать в тюрьме) использования apache для доступа к файлам, что позволяет использовать httpd.conf для импорта ресурсов в среде chroot без их фактического копирования.

Также полезной (если немного устаревшей) является эта ссылка, в которой описаны некоторые ошибки в chrooted PHP на OpenBSD.

Первым шагом будет сбор информации обо всем, что необходимо приложению для запуска; Обычно я выполняю это, запустив systrace(1) и ldd(1), чтобы выяснить, что нужно для запуска программного обеспечения.

Я попробую. Большая проблема, с которой я столкнулся при работе с xinc, заключается в том, что, несмотря на то, что это приложение PHP, оно хочет знать пути установки приложения (но все же распространяет содержимое в другие папки) и запускает некоторые сценарии PHP в режиме демона (эти сценарии сложнее всего беги). Так, например, я сказал ему установить в /var/www/xinc, а затем сделал символическую ссылку

/var/www/var/www/xinc -> /var/www/xinc

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

Если все остальное терпит неудачу, мне просто нужно что-то построить, поскольку мы программируем внутри chrooted окружения, так как наше производство chroot. Мы столкнулись с проблемами, когда мы кодируем за пределами chroot, а затем вынуждены отслеживать, чтобы найти то, что нам нужно, чтобы он работал внутри chroot.

Другие вопросы по тегам