OpenSuse 12.1: Apache PassEnv werden beim Start nicht gelesen
Hallo, ich habe ein weiteres Problem mit dem Apache nach dem Übergang von 11.4 auf 12.1: alle Umgebungsvariablen aus dem Abschnitt PassEnv LD_LIBRARY_PATH PassEnv INFORMIXDIR PassEnv INFORMIXSERVER PassEnv INFORMIXSQLHOSTS PassEnv ONCONFIG PassEnv PYTHONPATH PassEnv DBDATE der /etc/apache2/default-server.conf werden nicht mehr eingelesen, wenn man (wie noch unter 11.4) den Apache-Server mit dem Kommando rcapache2 start hochfährt. Leider stehen die entsprechenden Fehlermeldungen auch nicht mehr unter /var/log/apache2/error.log, sondern in der /var/log/messages (darauf muß man auch erst mal kommen). Dort findet man bei jedem Start dann die Meldung: Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable LD_LIBRARY_PATH was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable INFORMIXDIR was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable INFORMIXSERVER was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable INFORMIXSQLHOSTS was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable ONCONFIG was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable PYTHONPATH was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable DBDATE was undefined Mar 11 18:23:19 stieff systemd[1]: Failed to read PID file /var/run/httpd2.pid after start. The service might be broken. Der root-Prozess, der den Apache mit dem Kommando rcapache2 start hochfährt, hat allerdings diese U-Varablen. Auch ein Starten mittels systemctl start apache.service bewirkt keine Änderung. Lediglich dann, wenn man den httpd-Dämon von Hand aus startet, werden die U-Variablen gelesen. Bei Google habe ich bisher keine Aufklärung bekommen. Weiß jemand etwas zu diesem Porblem? Gruß Christian Winterhager -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 11.03.2012 18:40, schrieb Christian Winterhager:
Hallo,
ich habe ein weiteres Problem mit dem Apache nach dem Übergang von 11.4 auf 12.1:
alle Umgebungsvariablen aus dem Abschnitt
PassEnv LD_LIBRARY_PATH PassEnv INFORMIXDIR PassEnv INFORMIXSERVER PassEnv INFORMIXSQLHOSTS PassEnv ONCONFIG PassEnv PYTHONPATH PassEnv DBDATE
der /etc/apache2/default-server.conf werden nicht mehr eingelesen, wenn man (wie noch unter 11.4) den Apache-Server mit dem Kommando
rcapache2 start
hochfährt. Leider stehen die entsprechenden Fehlermeldungen auch nicht mehr unter /var/log/apache2/error.log, sondern in der /var/log/messages (darauf muß man auch erst mal kommen). Dort findet man bei jedem Start dann die Meldung:
Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable LD_LIBRARY_PATH was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable INFORMIXDIR was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable INFORMIXSERVER was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable INFORMIXSQLHOSTS was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable ONCONFIG was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable PYTHONPATH was undefined Mar 11 18:23:19 stieff start_apache2[30985]: [Sun Mar 11 18:23:19 2012] [warn] PassEnv variable DBDATE was undefined Mar 11 18:23:19 stieff systemd[1]: Failed to read PID file /var/run/httpd2.pid after start. The service might be broken.
Der root-Prozess, der den Apache mit dem Kommando rcapache2 start hochfährt, hat allerdings diese U-Varablen. Auch ein Starten mittels
systemctl start apache.service
bewirkt keine Änderung. Lediglich dann, wenn man den httpd-Dämon von Hand aus startet, werden die U-Variablen gelesen.
[...]
Nach dem du offensichtlich den Apachen per systemd startest, wirst du mit PassEnv allein keinen Erfolg haben. Der systemd stattet einen von ihm gestarteten Prozess nur mit einer minimalen Umgebung aus. Wenn du dir aber mal das zugehörige UnitFile /lib/systemd/system/apache2.service ansiehst, dann findest du dort den Eintrag EnvironmentFile=/etc/sysconfig/apache2 Beschrieben ist diese Option in der Manpage systemd.exec(5): Sämtliche in /etc/sysconfig/apache2 enthaltenen Variablenzuweisungen werden der Umgebung vom Apache hinzugefügt. Also musst du deine "Wunsch-Umgebung" nur in die /etc/sysconfig/apache2 eintragen, dann klappt's auch mit PassEnv. Gruß Mike -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
On Sunday, 11 March 2012 18:40:49 Christian Winterhager wrote:
alle Umgebungsvariablen aus dem Abschnitt
PassEnv LD_LIBRARY_PATH ...
der /etc/apache2/default-server.conf werden nicht mehr eingelesen
Das bedeutet nur, dass im startenden Prozess (wohl systemd) diese Variablen nicht gesetzt sind. Wo hast Du sie denn früher gesetzt? Ich sehe 3 Wege, wie Du mit dem Problem umgehen kannst: 1) Umstellung auf SysV Init Damit wird der Start des Systems dem von 11.4 sehr viel ähnlicher. Während des Bootens kannst Du das mittels F3 oder so manuell einstellen. Oder Du installierst sysvinit-init. Das wird einen Konflikt melden, den Du löst, indem Du systemd-sysvinit deinstallieren lässt. 2) Ersetzen der PassEnv Anweisungen durch SetEnv Wenn das Problem nur den Apache betrifft, dürfte das die einfachste Variante sein. 3) Herausfinden, wie Du mit systemd Umgebungsvariablen setzen kannst Irgendwie kann der systemd bestimmt auch Umgebungsvariablen setzen. Ich habe aber keine Ahnung wie, da ich sysvinit-init benutze. Torsten Förtsch -- Need professional modperl support? Hire me! (http://foertsch.name) Like fantasy? http://kabatinte.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Torsten Förtsch schrieb:
On Sunday, 11 March 2012 18:40:49 Christian Winterhager wrote:
alle Umgebungsvariablen aus dem Abschnitt
PassEnv LD_LIBRARY_PATH ... der /etc/apache2/default-server.conf werden nicht mehr eingelesen Das bedeutet nur, dass im startenden Prozess (wohl systemd) diese Variablen nicht gesetzt sind. Wo hast Du sie denn früher gesetzt? Ich sehe 3 Wege, wie Du mit dem Problem umgehen kannst:
1) Umstellung auf SysV Init
Damit wird der Start des Systems dem von 11.4 sehr viel ähnlicher. Während des Bootens kannst Du das mittels F3 oder so manuell einstellen. Oder Du installierst sysvinit-init. Das wird einen Konflikt melden, den Du löst, indem Du systemd-sysvinit deinstallieren lässt.
das ist die F5 Taste Gruss Josef
2) Ersetzen der PassEnv Anweisungen durch SetEnv
Wenn das Problem nur den Apache betrifft, dürfte das die einfachste Variante sein.
3) Herausfinden, wie Du mit systemd Umgebungsvariablen setzen kannst
Irgendwie kann der systemd bestimmt auch Umgebungsvariablen setzen. Ich habe aber keine Ahnung wie, da ich sysvinit-init benutze.
Torsten Förtsch
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Das Ersetzen der PassEnv Anweisungen durch SetEnv (wie von Torsten Förtsch vorgeschlagen) hat nichts gebracht. Die Umgebungsvariablen, die im .profile und .bashrc des Users root sowie desjenigen Users, der den Apache2 startet, gesetzt werden, sind nach wie vor nicht vorhanden bzw. auf die richtigen Werte eingestellt. Den Vorschlag "1) Umstellung auf SysV Init" wollte ich nicht angehen, weil ansonsten auf der 12.1 alles hervorragend funktioniert. Den von Michael Buchau erwähnten Tip: Also musst du deine "Wunsch-Umgebung" nur in die /etc/sysconfig/apache2 eintragen, dann klappt's auch mit PassEnv. konnte ich leider auch nicht durchführen, da trotz Manpage für den systemd.exec (5) keine Information darüber herauszubekommen war, wie man eine einfache U-Variable in der Datei /etc/sysconfig/apache2 deklariert. Statt dessen habe ich die Hilfe für das Kommando systemctl bemüht und herausbekommen, daß der Apache2 durch die folgenden Kommandos fehlerfrei gestartet wird und vor allen Dingen alle CGI-Programme für MySQL und Informix funktionieren: # --------------------------------------------------------------------------------------------------------------------- # setzen des Environment fuer systemctl: systemctl set-environment DBDATE=Y4MD- systemctl set-environment LD_LIBRARY_PATH=/home/informix11_70/lib:/home/informix11_70/lib/esql systemctl set-environment ONCONFIG=onconfig.stieff.cfg systemctl set-environment PYTHONPATH=/usr/local/bin:/home/cw/Entwicklung/python_moduls systemctl set-environment INFORMIXSQLHOSTS=/home/informix11_70/etc/sqlhosts.stieff.cfg systemctl set-environment INFORMIXSERVER=stieff systemctl set-environment INFORMIXDIR=/home/informix11_70 echo "Start des Apache2 Servers" systemctl start apache2.service # --------------------------------------------------------------------------------------------------------------------- Nach wie vor ist auch unter diesen Umständen die Anweisung PassEnv in der /etc/apache2/default-server.conf notwendig, sie kann auch nicht durch SetEnv ersetzt werden. Vielen dank für die Unterstützung! Gruß Christian Winterhager Am 11.03.2012 19:56, schrieb Torsten Förtsch:
On Sunday, 11 March 2012 18:40:49 Christian Winterhager wrote:
alle Umgebungsvariablen aus dem Abschnitt
PassEnv LD_LIBRARY_PATH ... der /etc/apache2/default-server.conf werden nicht mehr eingelesen Das bedeutet nur, dass im startenden Prozess (wohl systemd) diese Variablen nicht gesetzt sind. Wo hast Du sie denn früher gesetzt? Ich sehe 3 Wege, wie Du mit dem Problem umgehen kannst:
1) Umstellung auf SysV Init
Damit wird der Start des Systems dem von 11.4 sehr viel ähnlicher. Während des Bootens kannst Du das mittels F3 oder so manuell einstellen. Oder Du installierst sysvinit-init. Das wird einen Konflikt melden, den Du löst, indem Du systemd-sysvinit deinstallieren lässt.
2) Ersetzen der PassEnv Anweisungen durch SetEnv
Wenn das Problem nur den Apache betrifft, dürfte das die einfachste Variante sein.
3) Herausfinden, wie Du mit systemd Umgebungsvariablen setzen kannst
Irgendwie kann der systemd bestimmt auch Umgebungsvariablen setzen. Ich habe aber keine Ahnung wie, da ich sysvinit-init benutze.
Torsten Förtsch
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
On Mon, 12 Mar 2012 10:42:25 +0100, Christian Winterhager <christian.winterhager@onlinehome.de> wrote:
konnte ich leider auch nicht durchführen, da trotz Manpage für den systemd.exec (5) keine Information darüber herauszubekommen war, wie man eine einfache U-Variable in der Datei /etc/sysconfig/apache2 deklariert.
Das funktioniert wie in einem Skript, also mittels 'VAR=WERT" . Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo, Am Mon, 12 Mar 2012, Philipp Thomas schrieb:
On Mon, 12 Mar 2012 10:42:25 +0100, Christian Winterhager <christian.winterhager@onlinehome.de> wrote:
konnte ich leider auch nicht durchführen, da trotz Manpage für den systemd.exec (5) keine Information darüber herauszubekommen war, wie man eine einfache U-Variable in der Datei /etc/sysconfig/apache2 deklariert.
Das funktioniert wie in einem Skript, also mittels 'VAR=WERT" .
Weil's Scriptfragmente sind, oder gibt es ein init-scripte/systemd units (oder wie sich die nennen), das nicht die sysconfig-Datei sourced? Beim Apache (unter oS 11.4) z.B. seltsamerweise noch über nen Umweg über /usr/share/apache2/load_configuration, warum auch immer: ==== /etc/init.d/apache2 ==== : ${sysconfig_apache:=/etc/sysconfig/$pname} . /usr/share/$pname/load_configuration ==== ==== /usr/share/apache2/load_configuration ==== : ${sysconfig_apache:=/etc/sysconfig/apache2} if [ -z "$APACHE_MODULES" ]; then . $sysconfig_apache fi ==== Letztlich wird also /etc/sysconfig/apache2 vom init-scripte gesourced, d.h. wie als würde man es statt dem source-Befehl ins init-script einfügen. Somit muß man die sysconfig-Datei genau wie ein Shell-script schreiben. HTH, -dnh -- Wußten sie, daß Frau Merkel seit Jahren ein Spenderhirn sucht? -- Hagen Rether -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (6)
-
Christian Winterhager
-
David Haller
-
Josef Kämpf
-
Michael Buchau
-
Philipp Thomas
-
Torsten Förtsch