web-dev-qa-db-fra.com

Problèmes de configuration Gitlab :: NGINX Unicorn Port Conflict

J'ai réussi à installer partiellement Gitlab sur un serveur Linux CentOS avec Apache, Git, PHP, PostGreSQL et MySQL. J'utilise la version Chef Cookbook version . J'ai eu le régime de ici . Je voulais l'utiliser pour gérer mon dépôt Git mieux et plus visuellement et cela semblait être un bon choix. Mais maintenant, je rencontre des problèmes pour le faire fonctionner.

Pour que cela fonctionne vraiment et que tous les fichiers soient mis à jour, j'ai décidé de réexécuter la configuration à l'aide de gitlab-ctl reconfigure. La deuxième manche a fonctionné:

Chef Client finished, 4 resources updated
gitlab Reconfigured!

Voir Journal complet

L'hébergeur avait déjà mis NGINX sur 8080 et ne s'est pas disputé avec Apache sur le port 80 sur lequel un projet LAMP est en cours d'exécution. Mais maintenant, le serveur Web Unicorn de Ruby semble être en conflit avec NGINX. J'ai un peu travaillé avec NGINX, pas beaucoup, et c'est ma première tentative avec Gitlab. Quoi qu'il en soit, c'est ce que j'ai découvert avec l'aide de mon hébergeur.

Lorsque je me connecte à testserver.domain.net et passe la commande suivante:

netstat -ln |grep 8080 je vois

tcp        0      0 127.0.0.1:8080              0.0.0.0:*                   LISTEN      

Donc quelque chose tourne sur 8080 Selon mon hébergeur, il devrait fonctionner sous 0.0.0.0:8080. Et lorsque nous vérifions ce qui fonctionne sur ce port, nous voyons

netstat -tupln |grep 8080
tcp        0      0 127.0.0.1:8080              0.0.0.0:*                   LISTEN      21627/Unicorn maste 

Lorsque nous vérifions l'identifiant de processus 21627, nous voyons

cat /proc/21627/cmdline 
Unicorn master -E production -c /var/opt/gitlab/gitlab-Rails/etc/Unicorn.rb /opt/gitlab/embedded/service/gitlab-Rails/config.ru

Il s’agit d’un processus Ruby et non d’un processus NGINX.

Donc, NGINX semble être en conflit avec Unicorn.

Et lorsque nous vérifions les journaux de nginx, nous constatons que nginx ne peut pas y aller pour cette raison:

tail -f /var/log/gitlab/nginx/error.log 
2014/07/28 09:43:10 [emerg] 23122#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:10 [emerg] 23122#0: still could not bind()
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: still could not bind()

J'ai googlé Unicorn.rb et trouvé ce link . J'ai aussi lu que:

Unicorn est un serveur HTTP pour applications Rack conçu pour servir uniquement Clients rapides sur des connexions à faible latence et bande passante élevée et tirer parti Des fonctionnalités des noyaux Unix/Unix. Les clients lents ne devraient être servis aux Qu'en plaçant un proxy inverse capable de mettre en mémoire tampon À la fois la demande et la réponse entre les clients Unicorn et lents.

Lorsque je vérifie le fichier /var/opt/gitlab/gitlab-Rails/etc/Unicorn.rb, je constate qu’il utilise 8080. Le problème est qu’il semble que Unicorn devrait fonctionner avec NGINX. Par conséquent, je ne devrais peut-être pas changer le port. 

Quelle mesure dois-je prendre pour que Gitlab fonctionne? Gitlab peut-il fonctionner sans Licorne? Je penserais pas. Dois-je alors choisir un autre port pour celui-ci ou peut-être pour NGINX?

8
rhand

Vous devez remplacer les ports dans /etc/gitlab/gitlab.rb. Ne jouez pas avec /var/opt/gitlab/... car toute configuration manuelle sera perdue après une reconfiguration. Lisez en particulier sur Configuration du port d’écoute NGINX }. Dans la page des téléchargements, il y a une phrase: Pour connaître les options de dépannage et de configuration, veuillez consulter le fichier Lisez-moi de Omnibus GitLab . Je me demande si cela n’est pas perçu par les gens:/Sinon, nous devrions le préciser.

9
axil

Ajouter aux commentaires d'Axil. Je devais aussi le changer dans le fichier /var/opt/gitlab/gitlab-Rails/etc/Unicorn.rb. Un redémarrage après que cela a fonctionné, je n'ai pas perdu mes configs. Le maître de la Licorne ne prenait pas mes modifications dans le fichier /etc/gitlab/gitlab.rb, même après plusieurs redémarrages.

8
Akarsh

Vous devez mettre à jour le fichier /etc/gitlab/gitlab.rb.

Lorsque vous modifiez le fichier, assurez-vous de ne pas commenter la ligne que vous modifiez. Il utilise chef, donc si le fichier gitlab.rb est correctement configuré lorsque vous exécutez Sudo gitlab-ctl reconfigure;, il mettra à jour correctement le fichier correspondant. Puis Sudo gitlab-ctl restart pour redémarrer les services.

Sudo lsof -Pni |grep <port number> est votre ami lors de la détermination des conflits de ports

2
zeusAlmighty

La documentation suggère de paramétrer 'nginx [' listen_port '] = 8080' mais lorsque j'ai fait cela, Unicorn n'a pas réussi à lier le port 8080. J'ai défini le port nginx sur 8888 à la place et cela a fonctionné. Cela suggère que, pour définir le port nginx sur 8080, il est nécessaire de remplacer Unicorn du port par défaut de 8080 par un autre, mais je n’ai pas exploré cette possibilité. Ce serait bien si l'exemple de configuration du port nginx était un paramètre qui fonctionnerait dans la configuration par défaut, ce qui est le mien, comme je le sais, je ne l'ai installé que ce matin.

0
Ian