
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 apache2
Paket 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.
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
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
Fügen Sie oben in apache2.conf die folgende Zeile ein: LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so.
Um dies zu testen, setzen Siehttp://127.0.0.1/test/Default.csund legenhttp://127.0.0.1/personal/Default.csim Firefox-Webbrowser.