envvars – Standardumgebungsvariablen für apache2ctl

envvars – Standardumgebungsvariablen für apache2ctl

Ich möchte wissen, wie man k=10 Apache2-Serverprozesse beim Neustart der Ubuntu 16.04 Alpha-Version startet. Gestern habe ich diese URL gelesen, [https://rudd-o.com/linux-und-freie-software/tuning-an-apache-server-in-5-minutes], das besagt, dass Apache2 mit dem Modul prefork.c verwendet und StartServers auf 10 gesetzt werden soll.

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

Leider hat mein Apache2 nur das Modul event.c. Ich habe versucht, Apache2 mit sudo apt-get install apache-mtm-prefork auf das Modul prefork.c zu aktualisieren, und der Installationsfehler besagte, dass kein solches Paket verfügbar ist, da es möglicherweise veraltet oder überholt ist. Dann habe ich sudo apt-get update versucht und dieselbe Fehlermeldung erhalten.

Mein nächster Schritt bestand darin, zu versuchen, das Apache2-Ereignismodul mit StartServers = 5 zu konfigurieren, indem ich /etc/httpd.conf geändert und dann meine systemd apache.service-Datei neu gestartet habe. Mein ps -ef | grep -in "apache2" zeigt nur 2 www-data apache2-Prozesse und ps-ef | grep -in "mod" zeigt keinen mod-mono-server4-Prozess.

Außerdem wurde beim Ausführen von Apache2 in der Eingabeaufforderung der Bash-Shell der Syntaxfehler „Umgebungsvariable APACHE2_LOCK_FILE fehlt“ angezeigt. Ich habe festgestellt, dass APACHE2_LOCK_FILE in meiner Datei /etc/apache2/envvars definiert ist.

Auf der Manpage zu Apache2 für Ubuntu 16.04 heißt es: „Im Allgemeinen sollte Apache2 nicht direkt aufgerufen werden, sondern über /etc/init.d/apache2 oder apache2ctl. Die Standardkonfiguration von Debian erfordert Umgebungsvariablen, die in /etc/apache2/envvars definiert sind und nicht verfügbar sind, wenn Apache2 direkt gestartet wird. Apache2ctl kann jedoch verwendet werden, um beliebige Argumente an Apache2 zu übergeben.“

Damit ich /etc/apache2/envars verwenden konnte, habe ich meine systemd apache.service-Datei bearbeitet, um ExecStart = /etc/init.d/apache2 start zu verwenden und meinen Lenovo ThinkStation Ubuntu 16.04-Desktop neu gestartet und ohne Erfolg, ich habe immer noch nur 2 www-data apache2-Prozesse und ps-ef | grep -in "mod" zeigt keinen mod-mono-server4-Prozess, als ich ps -ef | grep -in "apache2" ausführte.

Darf ich fragen, was ich falsch gemacht habe und wie ich es beheben kann? Bitte schlagen Sie Tests vor, die ich durchführen kann.

Ich weiß, dass sich viele Benutzer der Alpha-Version von Ubuntu 16.04 bald über dasselbe Problem beschweren werden, das ich erlebt habe.

Antwort1

Zunächst können Sie bestätigen, dass Sie das Modul mpm_prefork bereits haben, indem Sie nachsehen, ob es im apache2Paket 16.04 enthalten ist. Wenn Sie dies tun, werden Ihnen einige Ergebnisse angezeigt:

 dpkg -L apache2 | grep fork

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

Überprüfen Sie nun, welches MPM-Modul aktiviert ist. Sie werden sehen, dass das Event-MPM-Modul aktiviert ist, das Prefork-Modul jedoch nicht:

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

Es hört sich so an, als ob Sie das Event MPM-Modul deaktivieren und das Prefork MPM-Modul aktivieren möchten, was Sie mit symbolischen Links tun können, und dann Apache neu starten möchten:

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

Vielleicht funktioniert dann Ihre Anweisung „StartServer“ wie gewünscht. Der Event MPM-Server führt eine Ereignisschleife in einem einzigen Prozess aus, sodass er nicht alle zusätzlichen Prozesse benötigt.

Sie haben auch das Starten von Apache und systemd erwähnt. Ich empfehle, Apaches http NICHT direkt oder mit apache2ctl zu starten. Steuern Sie es aus Konsistenzgründen NUR über systemd.

Hier sind einige zugehörige systemd-Steuerbefehle als Beispiele:

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

In Ihren Kommentaren hatten Sie weitere Fragen zum Einrichten von Mono, ASPX und mehreren Apps. Sie sollten diese Fragen separat stellen und klarstellen, ob Sie mehrere Apps in einer einzigen Domäne oder mehrere Apps in mehreren Domänen bereitstellen möchten.

Um den Apache2-Dienst beim Booten zu starten, führen Sie Folgendes aus:

sudo systemctl enable apache2

Antwort2

Beim Einrichten von Ubuntu 16.04 sind drei weitere Schritte erforderlich, um ASPX-Inhalte bereitzustellen, die in verschiedenen Stammverzeichnissen liegen.

  1. Fügen Sie dies am Ende von apache2.coonf ein

    Alias ​​/test "/usr/share/doc/xsp/test" Alias ​​/personal "/home/user/mypages" AddMonoApplications Standard "/test:/usr/share/doc/xsp/test,/personal:/home/user/mypages" SetHandler mono SetHandler mono

    1. Quelle /etc/apache2/envvars, nachdem Sie sie wie folgt geändert haben:

      envvars – Standardumgebungsvariablen für apache2ctl

      dies wird nach der Änderung der UID nicht mehr korrekt sein

      HOME aufheben

      zur Unterstützung mehrerer Apache2-Instanzen

      wenn [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; dann SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}" sonst SUFFIX= fi

      Da es keine vernünftige Möglichkeit gibt, die analysierte Apache2-Konfiguration in Skripten abzurufen,

      Einstellungen werden über Umgebungsvariablen definiert und dann in apache2ctl verwendet,

      /etc/init.d/apache2, /etc/logrotate.d/apache2 usw.

      export APACHE_RUN_USER=venkat export APACHE_RUN_GROUP=venkat

      temporärer Speicherort der Statusdatei. Dies kann in Wheezy+1 in /run geändert werden.

      exportiere APACHE_PID_FILE=/var/run/apache2/apache2.pid exportiere APACHE_RUN_DIR=/var/run/apache2 exportiere APACHE_LOCK_DIR=/var/lock/apache2

      Nur /var/log/apache2 wird von /etc/logrotate.d/apache2 verwaltet.

      export APACHE_LOG_DIR=/var/log/apache2

      Das von einigen Modulen wie mod_dav verwendete Gebietsschema

      export LANG=C

      Entfernen Sie die Kommentarzeichen aus der folgenden Zeile, um stattdessen das Standardgebietsschema des Systems zu verwenden:

      . /etc/Standard/Gebietsschema

      export LANG

      Der Befehl zum Abrufen des Status für „apache2ctl status“.

      Einige Pakete, die „www-browser“ bereitstellen, benötigen „--dump“ statt „-dump“.

      exportiere APACHE_LYNX='www-browser -dump'

      Wenn Sie eine höhere Dateideskriptorgrenze benötigen, heben Sie die Auskommentierung auf und passen Sie die

      folgende Zeile (Standard ist 8192):

      APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

      Wenn Sie Argumente an den Webserver übergeben möchten, fügen Sie diese unten hinzu

      zur APACHE_ARGUMENTS-Umgebung.

      export APACHE_ARGUMENTS=''

      Aktivieren Sie den Debug-Modus für Maintainer-Skripte.

      Dies erzeugt eine ausführliche Ausgabe über Paketinstallationen von Webservermodulen und Webanwendungen

      Installationen, die mit Apache interagieren

      export APACHE2_MAINTSCRIPT_DEBUG=1

      1. Fügen Sie oben in apache2.conf die folgende Zeile ein: LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so.

      2. Um dies zu testen, setzen Siehttp://127.0.0.1/test/Default.csund legenhttp://127.0.0.1/personal/Default.csim Firefox-Webbrowser.

verwandte Informationen