So starten Sie einen Dienst (apache2) automatisch mit Linux Mint

11

(Strangley) Mein installierter Apache2 startet nicht, wenn ich mich bei Linux Mint anmelde.

Wenn Sie diesen Befehl ausführen, wird Folgendes ausgeführt:

sudo service apache2 start

Wie soll ich versuchen, diesen Dienst bei jeder Anmeldung zu starten?

eoinoc
quelle
Sie können diesen Befehl einfügen ~/.xinitrc, der beim Start ausgeführt wird.
n0pe
2
@MaxMackie Im Gegenteil, ~/.xinitrcwird zur Anmeldezeit ausgeführt , was nicht richtig ist. Apache muss beim Booten von root gestartet werden.
Gilles 'SO - hör auf böse zu sein'
@ Gilles, richtig, das habe ich vergessen, danke für die Korrektur. Warum muss Apache jedoch beim Booten gestartet werden? Würde die Anmeldung nicht ungefähr das Gleiche bewirken?
n0pe
@MaxMackie Natürlich nicht, wenn Sie sich nicht sofort nach dem Start anmelden. Außerdem wird Apache nicht wie Sie ausgeführt, sodass Sie ihm Berechtigungen erteilen müssen. Es sollte an einem Teil der Boot-Skripte beginnen und funktioniert normalerweise.
Gilles 'SO - hör auf böse zu sein'
@ Gilles richtig. Vielen Dank, dass Sie Licht ins Dunkel gebracht haben.
n0pe

Antworten:

12

Debian (Ubuntu / Linux Mint)

rcconf (CLI-GUI)

sudo apt-get install rcconf
sudo rcconf

update-rc.d

sudo update-rc.d -f apache2 add

oder

sudo update-rc.d apache2 defaults

RedHat / Fedora / CentOS

chkconfig

sudo chkconfig --add apache2

oder

sudo chkconfig -- level 35 apache2 on
ErdmeLon
quelle
Apache wurde bereits überprüft, als ich rcconf ausführte.
Eoinoc
Das Ausführen des update-rc.dBefehls führt zu einem Fehler : update-rc.d: warning: apache2 start runlevel arguments (none) do not match LSB Default-Start values (2 3 4 5).
Eoinoc
Haben Sie update-rc.d apache2 Standardeinstellungen oder update-rc.d -f apache2 gegeben add 3 5
earthmeLon
1
Danke, aber keiner hat funktioniert. Das erste führte zu einer Warnung "bereits vorhanden", das zweite führte zu warning: apache2 start runlevel arguments (none) do not batch LSB default-Start values (2 3 4 5).
Eoinoc
6

Da Mint auf Ubuntu basiert und Ubuntu auf Upstart umgestellt hat, enthält das Upstart-Kochbuch alle Informationen für den Start eines Dienstes beim Booten oder auf einem bestimmten Runlevel.

Diese Seite enthält ein detailliertes Kochbuch zum Starten von Apache beim Booten.

bsd
quelle
Auf dieser Seite wird über das Platzieren eines Bash-Skripts gesprochen /etc/init.d/apache2. Diese Datei enthält jedoch bereits ein viel komplizierteres Bash-Skript, das von Apache selbst dort abgelegt worden sein muss.
Eoinoc
3

Eine weitere Ursache für dasselbe Problem ist die Priorität der Apache-Links in rc [0-6] .d. Meine waren S90 und K09, und Apache würde beim Booten nicht starten. Das Setzen der Prioritäten auf ihre Standardeinstellungen (20) hat für mich funktioniert. Die vorhandenen Links müssen zuerst entfernt werden.

sudo update-rc.d -f apache2 remove
sudo update-rc.d apache2 defaults
htoip
quelle
2

Beim Herunterfahren wurde ein Fehler angezeigt:

Syntaxfehler in Zeile 230 von /etc/apach2/apache.conf .... / etc / apache / sites-enabled / mysite: Keine solche Datei oder kein solches Verzeichnis

Die Sache war, mysitewar mit einer Datei in meinem Home-Ordner verknüpft.

Das sollte normalerweise kein Problem sein, dachte ich.

Aber soweit ich weiß, ist meine Home-Partition verschlüsselt . Daher vermute ich, dass Apache die Datei der virtuellen Site beim Laden nicht lesen konnte. Auf die Datei konnte erst zugegriffen werden, als ich mein Passwort eingegeben habe.

Eine komplexe Situation, und es dauerte Monate, um sie zu klären :)

eoinoc
quelle
Wie hast du das herausgefunden?
Jonas Äppelgran
0

Eine neue Antwort, die 2019 aktualisiert wurde:

sudo systemctl start httpd

sudo systemctl enable httpd

Der Befehl systemctl ist ein neues Tool zur Steuerung des Systems und des Dienstes systemd. Dies ist der Ersatz für die alte SysV-Init-Systemverwaltung. Die meisten modernen Linux-Betriebssysteme verwenden dieses neue Tool. Wenn Sie mit CentOS 7, Ubuntu 16.04 oder höher oder Debian 9 arbeiten. Sie haben sich jetzt für systemd entschieden.

Der aktivierte Dienst wird beim Systemstart automatisch gestartet. Dies ist die ähnliche Option für systemd wie chkconfig für den SysV-Init.

rauldeng
quelle
1
Sie können die Bestellung umdrehen, damit sie aktiviert wird, bevor Sie sie zum Starten auffordern.
Jeff Schaller