envvars - apache2ctl のデフォルトの環境変数

envvars - apache2ctl のデフォルトの環境変数

Ubuntu 16.04 アルファリリースの再起動時に k=10 Apache2 サーバープロセスを起動する方法を知りたいです。昨日、この URL を読みました。[[https://rudd-o.com/linux-and-free-software/tuning-an-apache-server-in-5-minutes]これは、prefork.cモジュールでApache2を使用し、StartServersを10に設定することを示しています。

<IfModule prefork.c>
StartServers       4
MinSpareServers    3
MaxSpareServers   10
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  10000
</IfModule>

残念ながら、私の apache2 には event.c モジュールしかありません。sudo apt-get install apache-mtm-prefork を使用して apache2 を prefork.c モジュールにアップグレードしようとしましたが、インストール エラーで、古いか廃止されている可能性があるため、そのようなパッケージは利用できないというメッセージが表示されました。次に、sudo apt-get update を試しましたが、同じエラー メッセージが表示されました。

次のステップでは、/etc/httpd.conf を変更して StartServers = 5 で apache2 イベント モジュールを構成し、systemd apache.service ファイルを再起動しました。ps -ef | grep -in "apache2" では 2 つの www-data apache2 プロセスのみが表示され、ps-ef | grep -in "mod" では mod-mono-server4 プロセスは表示されませんでした。

さらに、bash シェルのコマンド プロンプトで apache2 を実行すると、構文エラー APACHE2_LOCK_FILE 環境変数が見つからないというメッセージが表示されました。APACHE2_LOCK_FILE が /etc/apache2/envvars ファイルで定義されていることがわかりました。

Ubuntu 16.04 apache2 のマニュアル ページには、「一般に、apache2 は直接呼び出すのではなく、/etc/init.d/apache2 または apache2ctl 経由で呼び出す必要があります。デフォルトの Debian 構成では、/etc/apache2/envvars で定義されている環境変数が必要ですが、apache2 を直接起動した場合は利用できません。ただし、apache2ctl を使用すると、任意の引数を apache2 に渡すことができます。」と記載されています。

そこで、 /etc/apache2/envars を使用できるように、systemd apache.service ファイルを編集して ExecStart = /etc/init.d/apache2 start を使用し、Lenovo ThinkStation Ubuntu 16.04 デスクトップを再起動しましたが、効果はありませんでした。依然として、www-data apache2 プロセスは 2 つしか取得されず、ps -ef | grep -in "apache2" を実行しても、ps-ef | grep -in "mod" には mod-mono-server4 プロセスが表示されません。

何を間違えたのか、またそれをどう修正すればよいのか教えていただけますか? 実行できるテストを提案してください。

多くの Ubuntu 16.04 アルファリリース ユーザーが、私が経験したのと同じ問題についてすぐに不満を言うだろうと私は知っています。

答え1

まず、16.04 のパッケージに含まれている mpm_prefork モジュールがすでにインストールされているかどうかを確認しますapache2。次のようにすると、いくつかの結果が表示されます。

 dpkg -L apache2 | grep fork

 /etc/apache2/mods-available/mpm_prefork.conf
 /etc/apache2/mods-available/mpm_prefork.load

次に、どの MPM モジュールが有効になっているか確認します。Event MPM モジュールは有効になっていますが、Prefork モジュールは有効になっていないことがわかります。

  ls /etc/apache2/mods-enabled/mpm*

Event MPM モジュールを無効にして Prefork MPM モジュールを有効にしたいようですが、これはシンボリックリンクを使用して実行でき、その後 Apache を再起動します。

sudo rm /etc/apache2/mods-enabled/mpm*
sudo ln -s /etc/apache2/mods-available/*fork* /etc/apache2/mods-enabled/

おそらく、"StartServer" ディレクティブは期待どおりに動作するでしょう。イベント MPM サーバーは単一のプロセスでイベント ループを実行するため、余分なプロセスは実行されません。

Apache と systemd の起動についても言及されています。Apache の http を直接起動したり、apache2ctl を使用して起動したりしないことをお勧めします。一貫性を保つために、systemd 経由でのみ制御してください。

関連する systemd 制御コマンドの例を以下に示します。

 sudo systemctl start   apache2
 sudo systemctl stop    apache2
 sudo systemctl restart apache2

コメントには、Mono、ASPX、および複数のアプリの設定に関する質問がさらにありました。これらの質問は別々に行い、単一のドメインで複数のアプリを提供するのか、複数のドメインで複数のアプリを提供するのかを明確にする必要があります。

起動時に Apache2 サービスを開始するには、次のコマンドを実行します。

sudo systemctl enable apache2

答え2

異なるルート ディレクトリにある aspx コンテンツを提供するように Ubuntu 16.04 を設定するには、さらに 3 つの手順があります。

  1. これをapache2.coonfの最後に追加します

    エイリアス /test "/usr/share/doc/xsp/test" エイリアス /personal "/home/user/mypages" AddMonoApplications デフォルト "/test:/usr/share/doc/xsp/test,/personal:/home/user/mypages" SetHandler mono SetHandler mono

    1. 以下のように変更した後、source /etc/apache2/envvars を実行します。

      envvars - apache2ctl のデフォルトの環境変数

      uidを変更するとこれは正しくなくなります

      HOMEの設定を解除

      複数のapache2インスタンスをサポートするため

      if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then SU​​FFIX="-${APACHE_CONFDIR##/etc/apache2-}" else SUFFIX= fi

      スクリプトで解析されたapache2の設定を取得する適切な方法がないため、

      設定は環境変数で定義され、apache2ctlで使用されます。

      /etc/init.d/apache2、/etc/logrotate.d/apache2 など。

      APACHE_RUN_USER=venkat をエクスポートします。APACHE_RUN_GROUP=venkat をエクスポートします。

      一時状態ファイルの場所。Wheezy+1では/runに変更される可能性があります。

      エクスポート APACHE_PID_FILE=/var/run/apache2/apache2.pid エクスポート APACHE_RUN_DIR=/var/run/apache2 エクスポート APACHE_LOCK_DIR=/var/lock/apache2

      /etc/logrotate.d/apache2 によって処理されるのは /var/log/apache2 のみです。

      エクスポート APACHE_LOG_DIR=/var/log/apache2

      mod_davのようなモジュールで使用されるロケール

      エクスポートLANG=C

      代わりにシステムのデフォルト ロケールを使用するには、次の行のコメントを解除します。

      . /etc/default/ロケール

      エクスポートLANG

      「apache2ctl status」のステータスを取得するコマンド。

      「www-browser」を提供する一部のパッケージでは、「-dump」ではなく「--dump」が必要です。

      エクスポート APACHE_LYNX='www-browser -dump'

      ファイル記述子の制限をさらに高くする必要がある場合は、コメントを解除して調整してください。

      次の行(デフォルトは 8192):

      APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

      ウェブサーバーに引数を渡したい場合は、以下に引数を追加してください。

      APACHE_ARGUMENTS 環境に追加します。

      エクスポート APACHE_ARGUMENTS=''

      メンテナー スクリプトのデバッグ モードを有効にします。

      これにより、WebサーバーモジュールとWebアプリケーションのパッケージインストールに関する詳細な出力が生成されます。

      Apacheとやりとりするインストール

      エクスポート APACHE2_MAINTSCRIPT_DEBUG=1

      1. apache2.conf の先頭に、 LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so という行を追加します。

      2. これをテストするには、http://127.0.0.1/test/Default.csそして、置きますhttp://127.0.0.1/パーソナル/デフォルト.csFirefox ウェブブラウザで。

関連情報