Comment démarrer automatiquement un service (apache2) avec Linux Mint

11

(Strangley) Mon Apache2 installé ne démarre pas lors de la connexion à Linux Mint.

L'exécution de cette commande le fait démarrer:

sudo service apache2 start

Comment dois-je tenter de démarrer ce service à chaque connexion?

eoinoc
la source
Vous pouvez placer cette commande dans ~/.xinitrc, qui sera exécutée au démarrage.
n0pe
2
@MaxMackie Au contraire, ~/.xinitrcest exécuté au moment de la connexion, ce qui n'est pas correct. Apache doit être démarré par root au démarrage.
Gilles 'SO- arrête d'être méchant'
@ Gilles, c'est vrai que j'ai oublié ça, merci d'avoir corrigé. Cependant, pourquoi apache doit-il être démarré au démarrage? La connexion n'accomplirait-elle pas à peu près la même chose?
n0pe
@MaxMackie Pas si vous ne vous connectez pas immédiatement après le démarrage, évidemment. De plus, Apache ne fonctionne pas comme vous, vous devez donc lui accorder des privilèges. Il devrait démarrer à une partie des scripts de démarrage, et le fait normalement.
Gilles 'SO- arrête d'être méchant'
@Gilles à droite. Merci d'avoir fait la lumière là-dessus.
n0pe

Réponses:

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

ou

sudo update-rc.d apache2 defaults

RedHat / Fedora / CentOS

chkconfig

sudo chkconfig --add apache2

ou

sudo chkconfig -- level 35 apache2 on
EarthmeLon
la source
Apache a déjà été vérifié lorsque j'ai exécuté rcconf.
eoinoc
L' exécution de la update-rc.dcommande conduisent à une erreur: update-rc.d: warning: apache2 start runlevel arguments (none) do not match LSB Default-Start values (2 3 4 5).
eoinoc
Avez-vous donné par défaut update-rc.d apache2 ou update-rc.d -f apache2 add 3 5
earthmeLon
1
Merci, mais ni l'un ni l'autre n'a fonctionné. Le premier a donné lieu à un avertissement "existe déjà", le second a abouti warning: apache2 start runlevel arguments (none) do not batch LSB default-Start values (2 3 4 5).
eoinoc
6

Étant donné que Mint est basé sur Ubuntu et qu'Ubuntu est passé à Upstart, le livre de recettes Upstart contient toutes les informations pour démarrer un service au démarrage ou à tout niveau d'exécution spécifié.

Ce site donne un livre de recettes détaillé pour démarrer Apache au démarrage.

bsd
la source
Cette page parle de placer un script bash dans /etc/init.d/apache2. Mais ce fichier est déjà plein d'un script bash beaucoup plus compliqué, qui doit avoir été placé là par Apache lui-même.
eoinoc
3

Une autre cause du même problème est la priorité des liens apache dans rc [0-6] .d. Les miens étaient S90 et K09, et Apache ne voulait pas démarrer au démarrage. Fixer les priorités à leurs valeurs par défaut, 20 ans, a fonctionné pour moi. Les liens existants doivent d'abord être supprimés.

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

À l'arrêt, j'ai vu une erreur:

Erreur de syntaxe sur la ligne 230 de /etc/apach2/apache.conf .... / etc / apache / sites-enabled / mysite: aucun fichier ou répertoire de ce type

Le truc, mysitec'était un lien symbolique vers un fichier dans mon dossier personnel.

Cela ne devrait normalement pas être un problème, pensai-je.

Mais pour autant que je sache, ma partition domestique est cryptée . Par conséquent, je suppose qu'Apache n'a pas pu lire le fichier de site virtuel lors du chargement. Le fichier n'était accessible que lorsque je saisis mon mot de passe.

Une situation complexe, et il a fallu des mois pour le résoudre :)

eoinoc
la source
Alors, comment avez-vous trouvé ça?
Jonas Äppelgran
0

Une nouvelle réponse mise à jour en 2019:

sudo systemctl start httpd

sudo systemctl activer httpd

La commande systemctl est un nouvel outil pour contrôler le système et le service systemd. Il s'agit du remplacement de l'ancienne gestion du système SysV init. La plupart des systèmes d'exploitation Linux modernes utilisent ce nouvel outil. Si vous travaillez avec CentOS 7, Ubuntu 16.04 ou version ultérieure ou le système Debian 9. Ils ont opté pour systemd maintenant.

Le service activé démarre automatiquement au démarrage du système. Il s'agit de l'option similaire pour systemd que chkconfig pour l'initialisation SysV.

rauldeng
la source
1
Vous pouvez envisager de retourner la commande afin qu'elle soit activée avant de lui demander de démarrer.
Jeff Schaller