シェルスクリプトを使用してApacheドキュメントルートをインポートする

シェルスクリプトを使用してApacheドキュメントルートをインポートする

私はRPMを作成しており、初期段階でWebアプリケーションファイルをそこにコピーできるようにApacheのドキュメントルートを決定したいと思います。

まず、Apacheがインストールされていることを確認してください。 Apacheがインストールされている場合、スクリプトはドキュメントのルートパラメータを含むhttpd.confファイルの場所を見つけます。しかし、コマンドの返却を処理する方法がわかりませんfind / -name httpd.conf。私はシェルスクリプトとRPMを初めて使用します。また、これが可能かどうか疑問に思います。目的は、多くの手動介入なしにすべてのシステムに展開できるRPMを持つことです。以下は私の計画のコードです。まだ機能していません

if [ "$(expr substr $(httpd -v) 17 6)" == "Apache"]; then
    echo "Apache is installed";
    find / -name httpd.conf
    //need to handle the return of find and store to a location var to be used on the next line
    grep -i 'DocumentRoot' $location/httpd.conf
    //need to store the return document root to a var
el
    echo "Apache is not installed";
fi

答え1

他のファイルを含む複数の.confファイルがある可能性があるため、作業は思ったよりも難しいです。

出力を確認すると、マイルを取得できます。

httpd -Sまたはapachectl -Sまたはapache2ctl -S(配布板によって異なります)

現在定義されている仮想ホストの名前とそのホストが定義されている場所に関する情報を印刷します。

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443          a.example.com (/etc/httpd/conf.d/ssl.conf:74)
*:80                   is a NameVirtualHost
         default server b.example.com (/etc/httpd/conf/httpd.conf:1010)
         port 80 namevhost b.example.com (/etc/httpd/conf/httpd.conf:1010)

これは仮想ホスト/etc/httpd/conf.d/ssl.confです。/etc/httpd/conf/httpd.conf

答え2

そんなことはありませんapache's document root。構成ファイルには、複数のサイトの複数のルートを含めることができます。

さらに、特にデフォルトのapache2が変更されている場合は、データをコピーして既存の設定を破ることができるため、コピーする場所と内容には非常に注意する必要があります。

とにかくこのシナリオを続行するには、利用a2query -s可能なサイトを確認し、それを使用して文書を配置するサイトを見つけることができます。使用できない場合は、a2queryapache2がインストールされていない可能性があります。

ドキュメントルートのいずれかにコンテンツをコピーする場合は、ドキュメントルート内の特定のディレクトリ名の下にすべてのコンテンツを配置します。そして何も書き込む前にディレクトリが存在しないことを確認してください。


既存のApache設定に挿入できるHTMLベースのドキュメントを提供する他のパッケージを調べることもできます。私はこれを行うことができるものがわかりませんが、あなたはそうかもしれません。

RPM をインストールするシステムの apache2 環境設定が「ユーザー・ページ」にアクセスするメカニズムをサポートしている場合は、パッケージの新規ユーザーを作成してそこに文書を置くことができます。もちろん、管理者はこのメカニズムをオフにすることができますが、そうでない場合は設定を妨げません。また、これを行うために記録する文書のルートを見つける必要はありません(ユーザーが1つnginxまたは別のサーバーをインストールした場合は、幸運にも同じユーザーページメカニズムを使用できます)。

答え3

OpenSuseとUbuntuで正常に使用されました。

find /etc/apache2 -name '*default*' -exec grep -sHin "documentroot.*www" {} \; | grep -v available

答え4

  1. MainDocumentRootは、多くの(おそらくほとんどの)Apache管理者がホスティングにVirtualHostsを使用するWebページの場所にすぎません。

例をご覧ください。https://httpd.apache.org/docs/2.2/vhosts/index.html

または:https://httpd.apache.org/docs/2.4/vhosts/index.html

  1. ルート()から始めてシステムファイル全体を検索するのは/時間がかかりすぎて本当に悪い考えです。特にサーバーに他のリソースがインストールされている場合(最悪の場合は接続が遅く、ファイルが多いネットワークインストールです)。

一部の非標準位置に対して設定httpd.conf(または未設定)が必要になる場合があります。apache2.conf

関連情報