BaikalAnleitung
BaikalAnleitung copied to clipboard
Kein Zugriff auf Server: 403 Forbidden
Nach dem erfolgreichen nginx Start, scheitert der Zugriff auf baikal im lokalen Netzwerk für die Ersteinrichtung:
http://192.168.1.14:9999/
403 Forbidden
/var/log/nginx/error.log
2023/10/17 22:06:34 [error] 14433#14433: *3 "/home/stefan/Services/Baikal/html/index.php" is forbidden (13: Permission denied), client: 192.168.1.9, server: _, request: "GET / HTTP/1.1", host: "192.168.1.14:9999"
2023/10/17 22:06:34 [error] 14433#14433: *3 open() "/home/stefan/Services/Baikal/html/favicon.ico" failed (13: Permission denied), client: 192.168.1.9, server: _, request: "GET /favicon.ico HTTP/1.1", host: "192.168.1.14:9999">
stefan@pical:~/Services/Baikal/html $ ls -la
total 36
...
2023/10/17 22:06:34 [error] 14433#14433: *3 open() "/home/stefan/Services/Baikal/html/favicon.ico" failed (13: Permission denied), client: 192.168.1.9, server: _, request: "GET /favicon.ico HTTP/1.1", host: "192.168.1.14:9999">
2023/10/17 22:06:34 [error] 14433#14433: *3 "/home/stefan/Services/Baikal/html/index.php" is forbidden (13: Permission denied), client: 192.168.1.9, server: _, request: "GET / HTTP/1.1", host: "192.168.1.14:9999"
Wie ist die Fehlermeldung im Log genau zu interpretieren? Gibt sie Aufschluss für eine mögliche Behebung?
viele Dank für die Hilfe!
Hallo Stefan,
schau dir nochmal den Abschnitt zur Webserverkonfiguration an https://github.com/JsBergbau/BaikalAnleitung#webserver-konfiguration, insbesondere die beiden Zeilen
cd /home/pi/DiensteUndProgramme/Baikal #eigentlich sollten wir schon in diesem Verezeichnis sein, nur zur Sicherheit
sudo chown -R www-data:www-data . #Man beachte den Punkt „."
Hallo!
Die Schritte habe ich nochmal überprüft und genauso durchgeführt. Ebenso anschließend baikal-nginx.site zurück an root gegeben ( sudo chown root:root baikal-nginx.site
) .Bekomme aber leider immer noch Fehler 403.
Könnte es daher rühren, dass ich die aktuellere PHP-Version 8 installiert habe (anstatt wie in der Anleitung vorgeschlagen PHP7.x.)?
stefan@pical:~/Services/Baikal $ php -version
PHP 8.2.7 (cli) (built: Jul 20 2023 18:02:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies
Er kann nichtmal auf die PHP und die ico-Datei zugreifen. PHP 8 könnte später ein Problem werden, aber das gibt dann andere Fehlermeldungen.
Führe mal bitte ps aux | grep nginx
aus poste die Ausgabe hier.
stefan@pical:~ $ ps aux | grep nginx
root 1122 0.0 0.1 8488 1532 ? Ss 19:34 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 1123 0.0 0.1 8488 1768 ? S 19:34 0:00 nginx: worker process
www-data 1124 0.0 0.1 8488 1768 ? S 19:34 0:00 nginx: worker process
www-data 1125 0.0 0.1 8488 1768 ? S 19:34 0:00 nginx: worker process
www-data 1126 0.0 0.1 8488 1768 ? S 19:34 0:00 nginx: worker process
stefan 1905 0.0 0.2 7532 1908 pts/0 S+ 19:38 0:00 grep --color=auto nginx
Sehr merkwürdig. Meine Vermutung war, dass er vielleicht unter einen anderen Benutzer läuft. Mach mal
cd /home/stefan/Services/Baikal/html/
sudo su -s /bin/bash www-data
ls -l
cat index.php
und schreibe hier, welche Ausgabe du erhältst.
Poste bitte auch noch den Inhalt von cat /lib/systemd/system/nginx.service
stefan@pical:~/Services/Baikal/html $ sudo su -s /bin/bash www-data
www-data@pical:/home/stefan/Services/Baikal/html$ ls -l
total 24
drwxr-xr-x 3 www-data www-data 4096 Oct 17 21:01 admin
-rw-r--r-- 1 www-data www-data 2643 Oct 17 21:01 cal.php
-rw-r--r-- 1 www-data www-data 2647 Oct 17 21:01 card.php
-rw-r--r-- 1 www-data www-data 2458 Oct 17 21:01 dav.php
lrwxrwxrwx 1 www-data www-data 43 Oct 17 21:01 index.php -> ../Core/Frameworks/Baikal/WWWRoot/index.php
drwxr-xr-x 2 www-data www-data 4096 Oct 17 21:01 res
-rw-r--r-- 1 www-data www-data 26 Oct 17 21:01 robots.txt
www-data@pical:/home/stefan/Services/Baikal/html$ cat index.php
<?php
/***************************************************************
* Copyright notice
*
* (c) 2013 Jérôme Schneider <[email protected]>
* All rights reserved
*
* http://sabre.io/baikal
*
* This script is part of the Baïkal Server project. The Baïkal
* Server project is free software; you can redistribute it
* and/or modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
ini_set("session.cookie_httponly", 1);
ini_set("display_errors", 0);
ini_set("log_errors", 1);
define("BAIKAL_CONTEXT", true);
define("PROJECT_CONTEXT_BASEURI", "/");
if (file_exists(getcwd() . "/Core")) {
# Flat FTP mode
define("PROJECT_PATH_ROOT", getcwd() . "/"); #./
} else {
# Dedicated server mode
define("PROJECT_PATH_ROOT", dirname(getcwd()) . "/"); #../
}
if (!file_exists(PROJECT_PATH_ROOT . 'vendor/')) {
exit('<h1>Incomplete installation</h1><p>Baïkal dependencies have not been installed. If you are a regular user, this means that you probably downloaded the wrong zip file.</p><p>To install the dependencies manually, execute "<strong>composer install</strong>" in the Baïkal root folder.</p>');
}
require PROJECT_PATH_ROOT . 'vendor/autoload.php';
# Bootstrapping Flake
\Flake\Framework::bootstrap();
# Bootstrapping Baïkal
\BaikalAdmin\Framework::bootstrap();
# Create and setup a page object
$oPage = new \Flake\Controller\Page(PROJECT_PATH_ROOT . "Core/Resources/Web/Baikal/Templates/Page/index.html");
$oPage->injectHTTPHeaders();
$oPage->setTitle("Baïkal server");
$oPage->setBaseUrl(PROJECT_URI);
# Draw page
$oPage->zone("navbar")->addBlock(new \Baikal\Controller\Navigation\Topbar\Anonymous());
$oPage->zone("Payload")->addBlock(new \Baikal\Controller\Main());
# Render the page
echo $oPage->render();
www-data@pical:/home/stefan/Services/Baikal/html$
Sehr merkwürdig. Der Benutzer www-data hat offensichtlich Zugriff darauf.
Poste bitte auch noch den Inhalt von cat /lib/systemd/system/nginx.service
Es könnte daran liegen. Poste bitte noch den Inhalt dieser Datei.
stefan@pical:~ $ cat /lib/systemd/system/nginx.service
# Stop dance for nginx
# =======================
#
# ExecStop sends SIGQUIT (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
Lass uns noch etwas anderes probieren, ob es am ausführen durch systemd liegt.
bitte führe aus
sudo systemctl stop nginx
#Verifiziere bitte, dass nginx nicht mehr läuft via
ps aux | grep nginx
#es sollte eine einzige Zeile mit grep zu sehen sein
sudo /usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
sudo /usr/sbin/nginx -g 'daemon on; master_process on;'
Funktioniert jetzt der Zugriff?
Bei mir tritt exakt der gleiche Fehler auf. Habe aber rausbekommen, das bei Nutzung einer älteren raspios Version und gleicher Vorgehensweise der Fehler nicht auftritt. 2023-05-03-raspios-bullseye-armhf-lite.img > funktioniert 2023-10-10-raspios-bookworm-armhf.img > 403 Forbidden Ich bin verwirrt ....
Bei mir tritt exakt der gleiche Fehler auf.
Wenn der Fehler auch bei der manuellen Ausführung von nginx auftritt, dann liegt es nicht an systemd.
Weiterer Versuch. Poste bitte die Ausgabe von
ls -la /home | head -n 2
ls -la /home/stefan | head -n 2
ls -la /home/stefan/Services | head -n 2
ls -la /home/stefan/Services/Baikal | head -n 2
Solltest du beide Systeme zur Verfügung haben, kannst du ja auch mal vergleichen. Ich vermute, dass da irgendwo ein x
fehlt, weswegen es nicht klappt.
stefan@pical:~ $ sudo systemctl stop nginx
stefan@pical:~ $ ps aux | grep nginx
stefan 1827 0.0 0.2 7532 1908 pts/0 S+ 20:07 0:00 grep --color=auto nginx
stefan@pical:~ $ sudo /usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
stefan@pical:~ $ sudo /usr/sbin/nginx -g 'daemon on; master_process on;'
Das war leider nicht erfolgreich, weiterhin: 403 Forbidden
stefan@pical:~ $ ls -la /home | head -n 2
total 12
drwxr-xr-x 3 root root 4096 Oct 17 21:20 .
stefan@pical:~ $ ls -la /home/stefan | head -n 2
total 96
drwx------ 15 stefan stefan 4096 Oct 23 19:54 .
stefan@pical:~ $ ls -la /home/stefan/Services | head -n 2
total 12
drwxr-xr-x 3 stefan stefan 4096 Oct 17 21:01 .
stefan@pical:~ $ ls -la /home/stefan/Services/Baikal | head -n 2
total 208
drwxr-xr-x 9 www-data www-data 4096 Oct 18 20:07 .
ein x
könnte da ja nur für /home/stefan fehlen, welche Berechtigungen sollten hier sinnvollerweise gewährt werden?
Machmal bitte sudo chmod o+x /home/stefan
und probiere nochmal. Ich bin mir ziemlich sicher, dass es damit läuft. Mehr dazu unter https://superuser.com/questions/168578/why-must-a-folder-be-executable
Offensichtlich wurde bei Debian Bookworm (Version 12) die Standardberechtigung der Homeverzeichnisse geändert, denn bei mir ist das x Bit bei Verzeichnissen unter Home gesetzt, bei Version 12 nicht.
Success, endlich!!
Ein ganz großes Dankeschön für die Hilfe! 👍
Jetzt klappt es bei mir auch.
Normale Vorgehensweise wie in BaikalAnleitung beschrieben:
http://ipadr:9999
> 403 Forbidden
Nach Anpassung der Berechtigung des Nutzerverzeichnisses:
sudo chmod o+x /home/nutzer
http://ipadr:9999
> 502 Bad Gateway
Die nginx error.log brachte mich dann auf die Zeile in der baikal-nginx.site
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
Die Datei gibts nicht, aber einen link
php-fpm.sock -> /etc/alternatives/php-fpm.sock
Also Anpassung der baikal-nginx.site
fastcgi_pass unix:/run/php/php-fpm.sock;
Und so funktioniert es auch mit der bookworm Version. Vielleicht kann ja die Anleitung angepasst werden...
Das Ändern der Rechte fürs Benutzerverzeichnis habe ich schonmal hinzugefügt.
Bezüglich der php-Version, steht ja drinnen, dass man auf die installierte Version achten soll. Um das zu aktualisieren, poste bitte die Ausgabe von
cat /etc/nginx/sites-available/default
Wie gesagt. Nach der Anpassung der Zeile funktioniert es. Auch mit ssl:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /etc/nginx/certificate/nginx-certificate.crt;
ssl_certificate_key /etc/nginx/certificate/nginx.key;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
Der Post hat mir schon sehr weitergeholfen. Und Danke für die schnelle Reaktion !