10

OpenBSDのchrootされたデフォルトのApacheでxincを正しく実行できる人はいますか?コードが正常にchrootされて実行されるように、開発サーバーを本番サーバーと同じように完全にchrootされた状態で実行し続けたいと思います。

4

4 に答える 4

3

問題を Xincバグ トラッカーに投稿しましたか? Xinc 自体はデーモンとしても Web アプリとしても動作するため、問題なく動作するはずです。ほのめかしたように、問題は、デーモンがchrootされた環境で実行されていない可能性があります.Webインターフェイスは、どちらの側でもファイルを取得しないことにつながります。

于 2008-09-22T08:26:34.580 に答える
2

@ドラゴンマンタンク

Xinc の場合は、PEAR を使用してインストールしていただければ幸いです。

pear list-files xinc/Xinc

これで問題は解決し、Xinc インストールがそのファイルをどこに置いたかがわかります。したがって、Xinc は「単なる」1 つの大きな PHP スクリプトにすぎませんが、rc スクリプトや、アプリケーションを実行するために必要なその他すべてのものに分散しています。そこにリストされているすべてのパスを追加する必要はないと確信していますが、おそらく実行するためにいくつか追加する必要があります。

Xinc 自体とは別に、phpUnit やその他の PEAR ライブラリも実行する必要があると思うので、私が提案するのは次のとおりです。

pear config-get php_dir

そして、そのパスを (Henrik が提案したように) chroot 環境に追加する必要があります。

于 2008-08-31T17:04:16.047 に答える
1

自分でxincを使用したことがないので、私は通常どのようにしてアプリをchrootするかについてしかヒントを得ることができません。

最初のステップは、アプリを実行するために必要なすべての情報を収集することです。これは通常、systrace(1)ldd(1)を実行して、ソフトウェアの実行に必要なものを見つけることで実現します。

の出力を確認します

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

そして、アプリが触れて必要とするすべてのもの(実際には必要のないものに触れるアプリのかなりの数)がchroot環境で利用可能であることを確認してください。構成と環境変数を少し調整する必要があるかもしれません。また、アプリがsyslogにログを記録するオプションがある場合は、通常、アプリが書き込みアクセスを必要とする場所を減らすために、それを実行してsyslogソケットを作成します( syslogd(8)の-aオプションを参照)。

私が今説明したのは、chroot環境でほぼすべてのプログラムを実行する一般的な方法です(ただし、ユーザーランドの半分といくつかのsuidコマンドをインポートする必要がある場合は、chrootを実行しないことをお勧めします:)。Apacheで実行されているアプリの場合(OpenBSD httpd(8)が少し異なることをご存知だと思います)、(プログラムが開始されると、ダイナミックライブラリはまだjailに存在する必要があります)使用するオプションがあります。 apacheがファイルにアクセスし、httpd.confを使用して、実際にファイルをコピーせずにchroot環境にリソースをインポートできるようにします。

また、OpenBSD上のchrootされたPHPのいくつかの落とし穴を概説したこのリンクも役立ちます(少し古くなっている場合) 。

于 2008-08-24T11:57:21.160 に答える
1

最初のステップは、アプリを実行するために必要なすべての情報を収集することです。これは通常、systrace(1) と ldd(1) を実行して、ソフトウェアを実行するために何が必要かを調べることによって実現します。

これを試してみます。私が xinc で見つけた大きな問題は、それが PHP アプリケーションでありながら、アプリケーションのインストール パスを知りたがっていて (それでもなお、他のフォルダーに何かを広げている)、いくつかの PHP スクリプトをデーモン モードで実行していることです (これらのスクリプトは、実行が最も困難です)。走ってください)。したがって、たとえば、/var/www/xinc にインストールするように指示し、シンボリック リンクを作成しました。

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

そしてそれは部分的に機能しました。私が設定したプロジェクトを認識することを拒否した GUI を少しだけ表示させました。最大の問題は、その一部が chroot を実行しており、残りの半分が外部で実行されていることだと思います。

他のすべてが失敗した場合、私たちのプロダクションはchrootされているため、chrootされた環境内でプログラムするときに何かを構築する必要があります。chroot の外でコードを書いた後、chroot 内で動作させるために必要なものを見つけるために遡らなければならないという問題に遭遇しました。

于 2008-08-24T15:21:50.247 に答える