Apache2 will nicht starten...

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo zusammen!
    Das ist mein erster Beitrag hier.

    Bin seit ein paar Tagen Besitzer des Raspberry Pi 4B (4GB) und hab schon einiges am Start, unter anderem auch die NextCloud-Applikation.


    Daneben läuft auch schon (wenn auch nur lokal und noch nicht via Internet erreichbar) die RocketChat-Applikation.

    Gestern wollte ich mit Hilfe dieses Videos einen ReverseProxy erstellen - genau für den besagten RocketChat:

    https://www.youtube.com/watch?v=yPwTbW-gxJk


    Ebenso wird in diesem Video auch gezeigt, wie man mit Hilfe von LET'S-ENCRYPT auch ein gescheites SSL-Zertifkat dafür bekommt.


    Aber ich scheitere schon beim Starten des Apache:



    Momentan stehe ich echt auf'm Schlauch und finde den Fehler nicht.

    Es scheint ja das Binden an Port 80 fehlerhaft zu sein (siehe oben!)


    Ganz allgemein kommt immer das hier:


    Code
    root@raspberrypi:/home/pi# /etc/init.d/apache2 restart
    [....] Restarting apache2 (via systemctl): apache2.serviceJob for apache2.service failed because the control process exited with error code.
    See "systemctl status apache2.service" and "journalctl -xe" for details.
     failed!
    root@raspberrypi:/home/pi# 


    Auf Port 80 läuft ja auch immer noch was:


    root@raspberrypi:/home/pi# netstat -lnp | grep :80
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2876/httpd


    Wenn ich den Prozess kille, ist sofort wieder ein neuer da:


    root@raspberrypi:/home/pi# kill -9 2876

    root@raspberrypi:/home/pi# netstat -lnp | grep :80

    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2877/httpd


    Ich kann wohl etwas stoppen:


    root@raspberrypi:/home/pi# /etc/init.d/apache2 stop
    [ ok ] Stopping apache2 (via systemctl): apache2.service.


    Aber beim Start kommt immer wieder das hier:


    root@raspberrypi:/home/pi# /etc/init.d/apache2 start

    [....] Starting apache2 (via systemctl): apache2.serviceJob for apache2.service failed because the control process exited with error code.

    See "systemctl status apache2.service" and "journalctl -xe" for details.

    failed!


    Via "apt-get --purge remove apache2" und "apt autoremove" ging auch alles weg.

    Danach Neuinstallation mit "apt-get install apache2 -y" war alles wieder da.


    Daher gehe ich mal davon aus, dass es nicht so viel sein kann.

    Jedoch bin in Sachen Linux nicht so fit und bin auf Eure Hilfe angewiesen.


    Danke schon jetzt an alle, die helfen möchten hier.


    LG ARTsoft

  • sudo systemctl stop apache2

    Dann wieder ein netstat, wie

    netstat -lnp | grep :80
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2876/httpd

    Was sagt dann ein "ps -p 2876" (PID, die Zahl vor dem /httpd, bitte anpassen)?


    Da läuft sicher ein anderer httpd und belegt den Port.


    ls -l /proc/<PID von oben>/exe sagt dir welcher.

    dpkg -S $(readlink -f /proc/<PID von oben>/exe) gibt dir das Paket dazu aus.

    Die Frage "warum" der installiert ist, musst du dir allerdings selbst beantworten.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Edited 3 times, last by llutz ().

  • Danke für Deine Antwort.


    Bei "ps -p ..". kommt raus:

    Code
    root@raspberrypi:/home/pi# netstat -lnp | grep :80
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19936/httpd
    root@raspberrypi:/home/pi# ps -p 19936
    PID TTY TIME CMD
    19936 ? 00:00:01 httpd


    Und wie erwartet war es die Nextcloud:

    Code
    root@raspberrypi:/home/pi# ls -l /proc/19936/exe
    lrwxrwxrwx 1 root root 0 Dez  3 23:18 /proc/19936/exe -> /snap/nextcloud/16740/bin/httpd


    dpkg-query findet da aber nix:

    Code
    root@raspberrypi:/home/pi# dpkg -S $(readlink -f /proc/19936/exe)
    dpkg-query: Kein Pfad gefunden, der auf Muster /snap/nextcloud/16740/bin/httpd passt


    Fazit: Jetzt haben wir erst mal den Übeltäter.

    Allerdings würde ich die Nextcloud schon gerne behalten.


    Frage ist jetzt:
    Wie kann ich den Apache jetzt dazu bringen, dass er nicht auf Port 80 hören soll, sondern auf irgendeinen anderen Port?

  • Unter /etc/apache2/sites-enabled/ habe ich eine eigene .conf-Datei mit folgendem Inhalt:


    <VirtualHost *:3000>

    ServerName meinesubdomain.meinedomain.de

    ProxyPreserveHost On

    DocumentRoot /var/www/html

    ProxyPass /.well-known !

    ProxyPass / http://192.168.1.103:3000/

    ProxyPassReverse / http://192.168.1.103:3000/

    </VirtualHost>


    Und dann ist noch solche eine da mit dem Namen: !000-default.conf mit folgendem Inhalt:


    <VirtualHost *:80>

    # The ServerName directive sets the request scheme, hostname and port that

    # the server uses to identify itself. This is used when creating

    # redirection URLs. In the context of virtual hosts, the ServerName

    # specifies what hostname must appear in the request's Host: header to

    # match this virtual host. For the default virtual host (this file) this

    # value is not decisive as it is used as a last resort host regardless.

    # However, you must set it for any further virtual host explicitly.

    #ServerName http://www.example.com


    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html


    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,

    # error, crit, alert, emerg.

    # It is also possible to configure the loglevel for particular

    # modules, e.g.

    #LogLevel info ssl:warn


    ErrorLog ${APACHE_LOG_DIR}/error.log

    CustomLog ${APACHE_LOG_DIR}/access.log combined


    # For most configuration files from conf-available/, which are

    # enabled or disabled at a global level, it is possible to

    # include a line for only one particular virtual host. For example the

    # following line enables the CGI configuration for this host only

    # after it has been globally disabled with "a2disconf".

    #Include conf-available/serve-cgi-bin.conf

    </VirtualHost>

    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet


    ___________________________________________________________________________


    Port 3000 ist der Default-Port vom RocketChat. Wie gesagt: Rocket-Chat läuft lokal prima auf obiger lokaler Adresse.

    Ich will ihn nur ins Internet kriegen. Auf'm Router lasse ich ja schon 3000 durch bzw. mache ein Port-Forwarding auf 3000. Aber das ganze soll ja via Apache gehen mit einem gescheiten Zertifikat. Momentan ist der Rocket-Chat noch ungeschützt - so lasse ich den "Hund" nicht vor die Tür ;)


    LG ARTsoft

  • Hab eine ports.conf unter /etc/apache2/ gefunden.

    Dort steht auch Port 80 drin als Default.


    Trage ich dort Port 3000 ein, dann kollidiert es mit dem Rocket-Chat-Port ... der ist ja auch auf 3000 ... logisch!

    Trage ich 3001 ein als Port, dann startet auch der Apache ohne Fehlemeldung. Aha...


    Die Frage ist jetzt nur noch, wie kriege den inhalt dieses Videos (Reverse-Proxy) mit dem Rocket-Chat ans Laufen:

    https://www.youtube.com/watch?v=yPwTbW-gxJk


    Main question: Brauche ich überhaupt noch diesen Reverse-Proxy? Und wenn nein, wie kann ich denn dann den Rocket-Chat mit seinem Port 3000 mit SSL ausstatten, um ihn mit HTTPS ohne Probleme aufrufen zu können?


    Ich probiere mal weiter. Es bleibt spannend...

    Bin dankbar für alle Hinweise :)


    LG ARTsoft

  • Ich kenne Nextcloud nur als PHP-Anwendung ohne eigenen Webserver, deshalb kann ich dazu wenig sagen.

    Ich würde versuchen den

    - Nextcloud-httpd zu deaktivieren oder wenigstens diesen von Port 80 weg zu bekommen

    - Apache2 Port 80/443 konfigurieren

    - Apache2 vhost für nextcloud konfigurieren

    - Apache2 als reverse Proxy für alle anderen (auch für nextcloud, wenn dessen httpd sich nicht abschalten lassen sollte, aber auf anderem Port lauscht)


    jm2c

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Versuch's einfach mal mit https://docs.nextcloud.com/ser…dmin_manual/installation/

    Ums Lesen kommst du über kurz oder lang eh nicht herum.


    Vermeide die "snapd" Methode, sonst landest du anscheinend wieder dort, wo du warst. Das snapd-Paket (der Container) erklärt allerdings, warum dein nextcloud einen eigenen httpd mitbringt. Dort wird die komplette Laufumgebung in einem snap-Container installiert, nicht nur die Nextcloud-Anwendung.


    Ich habe keine Erfahrung mit snap, aber du solltest auch dort irgendwo die Möglichkeit haben, an die entspr. Configs zu kommen.


    https://github.com/nextcloud/nextcloud-snap ("Configuration") klingt nach einem Ansatz.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Edited 3 times, last by llutz ().

  • Ja, ich muss mal schauen, ob ich nicht alles über den Apache machen kann. Diese Nextcloud drängelt sich ganz schön in den Vordergrund. Ich muss mir das Video zur Nextcloud nochmal anschauen:


    Vermeide die "snapd" Methode, sonst landest du anscheinend wieder dort, wo du warst.

    Genauso siehts aus. Ich hatte Nextcloud auch mal per snapd installiert. Hatte da auch nur Probleme. Das kannst du machen, wenn du außer Nextcloud nichts anderes installierst, was einen Webserver verwendet.

    War übrigens nach der gleichen Anleitung von "Apfelcast"

    Installiere den apache2 mit php und Nextcloud einzeln. Dann läufts auch.

    Versuchs mal mit einer Anleitung von mir.

    Installation apache2, php, Nextcloud.....

    Dann funktionierts auch.

    Rocket Chat mußt du allerdings selbst installieren. Das kenne ich nicht.


    Nachtrag

    Die Installation von Nextcloud mit snapd ist zwar eine sehr einfache Methode, aber da alles (Apache2, php, mariadb, Nextcloud) in einem Container installiert wird wirst du damit immer wieder Probleme bekpmmen wenn du weitere Anwendungen installierst. Des Weiteren wirst du immer wieder Probleme bekommen, wenn du irgendwelche Dateien bearbeiten willst, weil du sie erst suchen musst und die Dateistruktur bzw die Dateinamen nicht kennst.

  • Hallo FranjoG!


    Danke Dir. Schaue mir Deine Anleitung morgen mal an.

    Ich bin schon so dermaßen gefrustet von dieser Nextcloud. Ich hab sie daher mal vorerst komplett deinstalliert. Was nicht heißen soll, dass sie nie mehr auf den R-Pi drauf kommen wird.


    Momentan läuft nur ein nackter Apache2-Server mit seiner DefaultPage auf Port 80.


    ____________________________________________________________________


    Momentan doktere ich aber grade am Rocket-Chat rum.

    Der ist mir momentan wichtiger als die NextCloud.



    Die Installation ist wirklich super easy. Die hab ich von hier:


    https://github.com/RocketChat/Rocket.Chat.RaspberryPi


    Allerdings läuft danach das Teil halt nur auf localhost:3000.

    Für einen Chat von Wohnzimmer zum Schlafzimmer komplett ausreichend ;) LOL ...


    Das Teil soll aber geschützt ins Internet via SSL zusammen mit einem gescheiten Zertifikat.

    Und da hänge ich grade...


    Angeblich soll das so gehen:


    https://rocket.chat/docs/insta…s/autossl/#enabling-caddy


    Und siehe da - es kommt schon wieder dieses Snap ins Spiel - gepaart noch dazu mit 'caddy' und seinem berühmten "Caddyfile". Also alles in allem ein richtiges "Gewurschtel" wie ich finde. Aber ohne Snap wird es wohl nicht gehen - zumal es ja auch ganz gut läuft ... na ja ... lokal .... !


    Falls Du Lust hast und mal schauen möchtest:


    Auf dieser Seite gibt es oben den folgenden Befehl:

    Code
    sudo snap set rocketchat-server https=enable


    Wenn ich den Befehl auf die Reise schicke, dann kommt sofort das hier:

    Code
    root@raspberrypi:/var/snap/rocketchat-server/current# sudo snap set rocketchat-server https=enable
    
    error: cannot perform the following tasks:
    - Run configure hook of "rocketchat-server" snap (run hook "configure": 
    -----
    dig: error while loading shared libraries: libdns.so.162: cannot open shared object file: No such file or directory
    Error: Can't resove DNS query for XXXXXXXX.spdns.de, check your DNS configuration, disabling https ...
    -----)
    
    [Hinweis: XXXXXXXX.spdns.de (abgeändert) ist mein DynDNS-Host bei SPDNS.de und den kann ich auch anpingen.]


    Wenn ich diesen DynDNS-Host aufrufe mit Port 80, dann kommt die Standard-Apache2-Default-Seite.


    Mit 443 SSL kommt leider nix:

    Code
    Diese Website kann keine sichere Verbindung bereitstellen XXXXXXXX.spdns.de hat eine ungültige Antwort gesendet.
    ERR_SSL_PROTOCOL_ERROR


    In meinem Router sind 80 und 443 freigegeben.


    Und da der erste Befehl auf der Seite (siehe oben) so lautet (halt eben die besagte DynDNS-URL mit HTTPS) ...

    Code
    sudo snap set rocketchat-server caddy-url=https://XXXXXXXX.spdns.de


    ... wird bestimmt der DNS-Fehler oben kommen. Eigentlich logisch!


    Jetzt hab ich schon wieder so viel geschrieben ... sorry.



    Daher meine abschließende Frage für diesen Post:


    Wo liegen denn normalerweise die Standard-Startseiten beim Apache2 (also die index.html Files z. B.) - sprich unter welchem Pfad.


    Ich denke mal: All zu weit bin ich ja nicht weg von der SSL-RocketChat-Lösung jetzt.


    Danke und Gruß

    ARTsoft

  • Daher meine abschließende Frage für diesen Post:


    Wo liegen denn normalerweise die Standard-Startseiten beim Apache2 (also die index.html Files z. B.) - sprich unter welchem Pfad.

    Bei einer "normalen" Apache2-Installation (ohne snap) liegt die Standard-Startseite unter /var/www/html


    Die Config-Dateien

    /etc/apache2/sites available/000-default-le-ssl.conf

    /etc/apache2/sites available/000-default.conf
    /etc/apache2/sites available/default-ssl.conf

    /etc/apache2/apache2.conf

    /etc/apache2/ports.conf

    /etc/php/7.x/apache2/php.ini


    Bei einer snap-Installation liegen diese so weit ich das in Erinnerung habe unter /var/snap/..... oder /var/www/snap......

    Die Config-Dateien unterscheiden sich allerdings in Namen und Inhalt.

  • morgen lasse ich mir mit Hilfe von Let's encrypt mal ein geschietes Zertifikat erstellen.

    Ein Letsencrypt Zertifikat installierst du einfach mit 2 Befehlen. (Port 80 und 443 müssen erreichbar sein).

    Code
    sudo apt install python-certbot-apache
    Code
    sudo certbot --apache

    * Emailadresse eingeben

    * DynDns-Adresse eingeben die zertifiziert werden soll

    * Dann eine Auswahl treffen ob der Server nur per https erreicht werden soll 1=nein 2=ja


    Dauert nur 2 Minuten und das Zertifikat ist aktiv

    Gültigkeitsdauer 3 Monate,.

    Aktualisierung rechtzeitig automatisch.