/etc/rc3.d
サーバーの再起動時に実行されないApacheを起動するコマンドがあります。このスクリプトはと呼ばれますS75Apache2
。一部の人はリンク名に大文字の「A」が含まれているため、これをに変更すると機能できると推測していますS75apache2
。
誰でもこれを確認できますか?文書を検索しましたが、答えが見つかりませんでした。サーバーを再起動しないと実際にこれをテストすることはできません(私はそうしたくありません)。
答え1
Solaris 初期化スクリプトは面倒です。大文字Aは重要ではありません。/etc/rc.d
「S」で始まるすべてのファイルを検索し、/etc/rc3.d
数値順に実行するスクリプトがあります。
これにより、基本から始めることができます。
/etc/rc3.d/S75Apache2
設定は実行可能ですか?スクリプトに「#!」行がありますか?行は正しいですか(印刷されないバイトがないなど)。
bash または ksh スクリプトの場合、 と入力すると構文エラーがあるかどうかが表示され
ksh -n /etc/rc3.d/S75Apache2 start
ます。スクリプトをrootとして実行できる場合は、試してみてスクリプトが起動して停止するかどうかを
/etc/rc3.d/S75Apache2 start
確認/etc/rc3.d/S75Apache2 stop
しhttpd
てくださいhttpd
。少なくとも「start」および「stop」パラメーターを使用してスクリプトを直接実行してください。set -x
スクリプトの実行時に実行される操作を確認するために使用されます。あなたが思うように動作することを確認してください。注意深くお読みください
/etc/rc3.d/S75Apache2
。PATH
起動時にリーンパディングを使用すると、スクリプトは起動時に特定の実行可能ファイルの場所を知ることはできませんが、起動後に実行されるタイミングはわかります。あまりにも多くの仮定をしないでください。存在すると思うファイルが存在しない可能性があります。KnnApache2
にスクリプトがないことを確認してください/etc/rc3.d
。私はinit
(たとえば)ランレベル3からランレベル5に切り替えるとSolarisが機能すると思います。K76Apache2 stop
スクリプトがユーザーIDを正しく変更していることを確認してください。一部のプロローグコマンドを使用してスクリプトを
apachectl start
呼び出すことができるため、Apacheでは問題にならない可能性がありますが、直接実行している場合は、生成されたプロセスに正しいユーザーIDがあることをhttp
確認してください。スクリプトの内容または内容をhttpd
使用してsudo
正しく作成してください。
答え2
起動スクリプトにバグがあることがわかりました。 LD_LIBRARY_PATH変数が正しく設定されていません。スクリプトでこれを定義すると問題が解決します。
後で参照できるように、トラブルシューティングの原因となったエラーを含む開始メッセージを含むログファイルがあります。ファイルは次のとおりです
/var/svc/log/milestone-multi-user-server:default.log
/etc/rc3.d/README ファイルでこれへの参照が見つかりました。別の日、別の知識ポイント!
答え3
独自のApacheをリリースしましたか(つまり、ソースからコンパイルしましたか?)、またはプリインストールされたSolaris 10 Apacheを使用していますか?
まあ、あなたが言ったようにSolaris 10(またはそれ以上)を使っているなら、それは問題ではありません。Solaris初期化スクリプトをまったく使用しないでください。、SMFを使用する必要があります。 (はい、技術的にinitスクリプトはまだサポートされていますが、指摘したように、これは痛みを伴い、SMFははるかに優れています。)
Solaris 10 と一緒にプレインストールされた Apache 2.2 Web サーバーを起動するには(今すぐ再起動後に自動的に)、次の手順を実行します。
svcadm 有効/ネットワーク/http:apache2
独自のApacheをすでにリリースしている場合は、SMFマニフェストを作成してマニフェストをインポートする必要があります。 「SMF Solaris」をGoogleで検索すると、数多くのレシピを見つけることができます。