Le serveur vient de passer de Squeeze à Wheezy. Après le redémarrage, j'ai constaté qu'apache2 ne démarrait pas. J'ai donc installé bootlogd pour inspecter la sortie des scripts d'initialisation.
La sortie d'erreur d'apache start était,
Tue Feb 3 08:49:55 2015: [....] Starting web server: apache2(99)Cannot assign requested address: make_sock: could not bind to address [0123:4567:890:abc::d]:80
Tue Feb 3 08:49:55 2015: no listening sockets available, shutting down
Tue Feb 3 08:49:55 2015: Unable to open logs
Tue Feb 3 08:49:55 2015: Action 'start' failed.
Tue Feb 3 08:49:55 2015: The Apache error log may have more information.
Les horodatages dans la sortie de démarrage indiquent 4 s entre "Configuration des interfaces réseau" (08:49:51) et le démarrage d'apache.
J'ai travaillé autour de cela en insérant un sleep 5
dans /etc/init.d/apache2
après quoi apache2 démarre correctement, je le lis donc comme une initialisation réseau lente (éventuellement propre au réseau IPv6). Le serveur fonctionne sur VMWare et je n’ai accès qu’à la machine virtuelle.
- Quelles meilleures méthodes puis-je utiliser pour faire en sorte qu'Apache attende quelques secondes et vérifie que ses adresses sont actives avant de commencer?
- Ou pour que le script d'initialisation réseau ne se ferme pas tant que les adresses ne sont pas prêtes?
linux
networking
debian
apache-http-server
Chris Burgess
la source
la source
init.d
pirater. Je viens de poster une réponse complète. J'espère que ça aide!Réponses:
Eh bien, la méthode que je décris ne résout évidemment pas le problème sous-jacent. Mais je crois qu’en utilisant un outil de surveillance autonome capable de gérer la tâche consistant à «remettre Apache au service» sans avoir à pirater
init.d
Le script est une solution plus stable. La clé est d'utilisermonit
qui se décrit comme:Pour l'installer dans Ubuntu, faites ceci: j'utilise
aptitude
et c'est sur Ubuntu 12.04 FWIW:Une fois installé, j'aime bien configurer le serveur de messagerie par défaut pour l'envoi d'alertes. Cela suppose que vous avez
postfix
ousendmail
actif sur votre serveur. Ouvrez lemonit
fichier de contrôle avec votre éditeur de texte préféré; J'aime utilisernano
:Cherchez le
set mailserver
lignes et définir cette ligne et enregistrer lemonit
fichier de contrôle:Maintenant, vérifiez et assurez-vous qu'il y a un
monit
conf.d
configuration du répertoire; c'est là individuelmonit
les tâches sont configurées:Si en quelque sorte ça
/etc/monit/conf.d
n'a pas été configuré, créez-le comme ceci:Maintenant que cela est fait, créons un
monit
Règles Apache. Tout d'abord, trouver où l'Apache.pid
Le fichier est défini et vérifiez qu'il est défini. C’est généralement là où il est défini sur Ubuntu 12.04 à l’aide de l’installation par défaut du paquet Apache:Si ce
.pid
chemin du fichier est correct, créons lemonit
Règles Apache avecnano
comme ça:Et placez ce code dans ce fichier et enregistrez-le:
La logique du script est assez simple: le
monit
Apache ruleset vérifiera la/var/run/apache2.pid
fichier et il sait utiliser spécifiqueinit.d
directives pourstart
etstop
logique. La magie vient duif
/then
bloquer qui surveille essentiellement le port Apache80
sur localhost127.0.0.1
et prendra des mesures pour récupérer Apache s’il ya un délai d’attente de 15 secondes ou plus. Et lealert
Cette ligne enverra des alertes par e-mail à une adresse e-mail spécifiée si les conditions dutimeout
ounonexist
sont remplies; C’est une option, alors n'hésitez pas à la commenter si vous n’avez pas besoin d’être inondé par des alertes par e-mail.Maintenant redémarrer
monit
:Et vous pouvez suivre le
monit
connectez-vous ici pour le voir faire le travail et le déboguer si quelque chose ne fonctionne pas comme prévu:Alors, quand la poussière s’installera sur ce serveur, vous aurez
monit
configuration pour vous assurer qu'Apache est en cours d'exécution. Très utile comme outil général «Gardez le serveur Web Apache actif», mais dans votre casmonit
peut s’assurer que Apache est lancé au redémarrage / au démarrage afin que vous n’ayez pas à vous perdre avec le noyau Apacheinit.d
script qui est vraiment un peu en désordre et est facilement oublié à l'avenir lors d'une mise à niveau.Notez également que je lie Apache explicitement à IPv6, mais ce script de surveillance suppose que s’il ne parvient pas à
127.0.0.1
alors il faut agir. Peut-être devez-vous changer l'adresse IPv4 localhost de127.0.0.1
en équivalent IPv6 d'adresse de::1
. Expérimentez et voyez ce qui fonctionne.la source