httpd startet nicht mehr

berni51

OpenBSD user & NetBSD newbie
Hallo,
plötzlich und unerwartet hab ich ein Problem mit dem httpd auf einem OpenBSD 6.8. Seit mehreren Jahren und damit auch seit mehreren Versionen läuft auf dem Rechner der hauseigene Webserver und bedient ein Intranet mit statischen- und php-Seiten - alles OK, funktioniert einfach.

Jetzt hab ich dem Rechner eine neue SSD verpasst und bei der Gelegenheit OBSD 6.8 neu installiert. Vorher lief ebenfalls ein 6.8, aber das war über die Jahre immer hochgezogen und so aktuell behalten.

Die Konfigurationsdateien /etc/httpd.conf und die php.inis hab ich vom Altrechner übernommen.

Aber jetzt startet der httpd einfach nicht mehr aus der rc.conf heraus! In der rc.conf steht (wie auch schon vorher) einfach die Zeile "httpd_flags=".
Die httpd.conf sieht so aus:
server "default" {
listen on * port 80
directory index "index.php"
location "*.php" {
fastcgi socket "/run/php-fpm.sock"
}
root "/htdocs"
}

Völlig minimalistisch und ich sehe keinen Fehler darin.
Die Verweigerung des Starts des httpd erfplg völlig ohne Logeintrag - er startet einfach nicht. Starte ich einen Aufruf mit "rcctl start thhpd" gibt es lediglich die Meldung "failed".

Rufe ich aber als root ganz einfach den daemon auf, wird er gestartet und funktioniert auch einwandfrei.

Hat jemand den entscheidenden Hinweis für mich?

Berni
 

berni51

OpenBSD user & NetBSD newbie
rcctl -d start httpd sagt:
Code:
doing _rc_parse_conf
doing _rc_quirks
httpd_flags >YES<
doing rc_check
httpd
doing rc_pre
doing _rc_rm_runfile
(failed)

Der Code in der rc.conf steht (natürlich) nicht in Anführungszeichen, sonder als
httpd_flags=
Änderung in
httpd_flags=""
bringt keine Änderung, ist auch laut Doku gleichwertig.

Bin am Verzweifelln!

Könnte es mit der chroot-Umgebung des httpd zusammen hängen? Welche Besitzer und Rechte hat htdocs bei euch?
Bei mir gehört alles www:www
 

berni51

OpenBSD user & NetBSD newbie
Mist, auch die Änderung von Besitzern und Rechten hat nichts verändert.

Wenn /var/www das Wurzelverzeichnis der chroot-Umgebung ist, liegt htdocs ja innerhalb dessen und wird so auch gefunden. So versteh ich das zumindest.

Aber halt: Nach Änderung der Besitzverhältnisse hat sich die Ausgabe von rcctl -d start httpd leicht geändert:

Code:
doing _rc_parse_conf
doing _rc_quirks
httpd_flags >YES<
doing rc_check
httpd
doing rc_pre
usage: httpd [-dnv] [-D macro=value] [-f file]
doing _rc_rm_runfile
(failed)

Die drittletzte Zeile deutet doch wohl auf einen nicht korrekten Aufruf hin. Oder was meint ihr?
 

Nonpareille

Well-Known Member
Ich würd eher sagen, dass er wissen will, wo das Konfigurationsfile liegt bzw. auf /var/www/conf/httpd.conf nicht zugreifen kann, evtl auch das nicht korrekt ist.

Edit: Typo
 

CommanderZed

OpenBSD User
Teammitglied
Ich seh da auch kein Problem, das ist fast alles so wie bei mir (Aber auch von 5.5 oder so über 2 Jahre o.ä. hochgezogen), sehr merkwürdig.

Ich hab noch ein "prefork 2" am anfang der config.

Kannst du mal mit httpd -d -v starten?

Ansonsten halte ich die Idee das mal ohne php zu probieren für sehr sinnvoll.

@Nonpareille, @andy> Der chrooted doch erst nach der config, und auch nicht für den php-sock und auch nicht für die SSL-Config z.B. oder seh ich das falsch?
Das einzige was bei mir neben den verzeichnissen auch gechrooted wird ist der mysql.sock.
 

berni51

OpenBSD user & NetBSD newbie
Der Hinweis, den php-Kram mal wegzulassen, war sehr gut. Damit startet der httpd automatisch via rc und bedient die statischen html-Seiten schon mal wieder.
Jetzt muss ich mich Stück für Stück herantasten und sehen, wo und warum es hakt - kann ja jetzt nicht mehr so viel sein. Danke für eure Hilfe. :rolleyes:
 

midnight

OpenBSD & FreeBSD
Vermutlich hast Du einfach nur vergessen, die Schritte der entsprechenden ``/usr/local/share/doc/pkg-readmes'' zu befolgen, wie z.B.

Code:
# install -d -m 0711 -o _mysql -g _mysql /var/www/var/run/mysql

und

Code:
# cd /etc/php-7.4.sample
# for i in *; do ln -sf ../php-7.4.sample/$i ../php-7.4/; done

usw. usw. Einfach mal die entsprechenden pkg-readmes durchlesen. :-)
 

berni51

OpenBSD user & NetBSD newbie
Nein, daran liegts leider nicht. Aber selbst wenn - das würde den httpd doch nicht am Starten hindern. Oder etwa doch?
 

midnight

OpenBSD & FreeBSD
Als Beispiel: Wenn php nicht startet, findet der httpd auch kein ``/run/php-fpm.sock'', welches im chroot unter ``/var/www/run/php-fpm.sock'' liegt.
 

berni51

OpenBSD user & NetBSD newbie
Ja, stimmt natürlich. Allerdings ist php_fpm die ganze Zeit zuverlässig gestartet und der socket war auch immer am richtigen Ort. Deshalb würde ich sagen, dass PHP an der Misere unschuldig ist.
 

midnight

OpenBSD & FreeBSD
Ok, dann weiss ich leider auch nicht weiter. Bei mir laeuft das problemlos unter OpenBSD 6.8.

Code:
# rcctl check php74_fpm
php74_fpm(ok)

# rcctl check mysqld
mysqld(ok)

# ls -l /var/www/run/
total 16
drwxr-xr-x  2 _gitea  _gitea  512 Nov 28 18:59 gitea
srw-rw----  1 www     www       0 Nov 27 11:35 php-fpm.sock

# ls -l /var/www/var/run/mysql/
total 0
srwxrwxrwx  1 _mysql  _mysql  0 Nov 26 13:44 mysql.sock

# ls -l /etc/php-7.4
total 0
lrwxr-xr-x  1 root  wheel  26 May 18  2020 curl.ini -> ../php-7.4.sample/curl.ini
lrwxr-xr-x  1 root  wheel  28 May 18  2020 mysqli.ini -> ../php-7.4.sample/mysqli.ini
lrwxr-xr-x  1 root  wheel  29 May 18  2020 opcache.ini -> ../php-7.4.sample/opcache.ini
lrwxr-xr-x  1 root  wheel  31 May 18  2020 pdo_mysql.ini -> ../php-7.4.sample/pdo_mysql.ini

Werden die o.g. checks bei dir ok anzeigt, sind php und mysql gestartet. Wenn die sockets (php-fpm.sock und mysql.sock) vorhanden sind, sollte alles soweit passen.
 

berni51

OpenBSD user & NetBSD newbie
Bis auf mysql (was ich nicht brauche) sieht bei mir alles genau so aus. Daemons, Module, sockets - alles.
Ich hab jetzt in der httpd.conf den php-Teil wieder aktiviert - und jetzt startet der httpd auch damit.
Ob ich irgendwo Leerzeichen hatte, die nicht zu sehen waren, aber gestört haben?
Mir fällt kein vernünftiger Grund ein, warum es jetzt läuft.

Halt: Was ich gestern noch gemacht habe, war, eine jungfräuliche rc.conf zu nehmen und alle Aktionen darin mit rcctl durchzuführen.. Vorher hatte ich auch schon mal darin herum editiert. Dachte aber, alles korrekt gemacht zu haben. War aber wohl nicht so :mad:
 
Oben