Uwsgi and Gitlab
Récemment j’ai du réinstaller Gitlab sur notre bien aimé serveur. Du coup je note ici les configurations pour remplacer Gunicorn par uWSGI pour faire marcher Gitlab.
Note : je suis sous une debian 7
avec uWSGI 1.9.20
, nginx 1.4.4
et Gitlab 6-3-stable
.
La configuration uWSGI :
[uwsgi]
# /home/git/gitlab/conf/gitlab.ini
app-root = /home/git/gitlab
pidfile = %(app-root)/tmp/pids/uwsgi.pid
socket = %(app-root)/tmp/sockets/gitlab.socket
logto = %(app-root)/log/uwsgi.log
log-date = true
# si uWSGI est en mode autload vous pouvez omettre de préciser rack
plugins = rack
uid = gitlab
gid = gitlab
chown-socket = gitlab:gitlab
chmod-socket = 660
master = true
processes = 4
# Rack à nécessite cette option pour fonctionner correctement
# (http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html)
post-buffering = 4096
chdir = %(app-root)
# Point d'entrée pour rack
rack = config.ru
env = RAILS_ENV=production
La configuration nginx :
# /etc/nginx/sites-availables/<domaine de gitlab>
server {
listen <ip>:<port>;
server_name <domaine de gitlab>;
root /home/git/gitlab/public;
access_log <access log>;
error_log <error log>;
location / {
# Le serveur tente d'abord de servir de façon statique le fichier,
# puis, à défaut, envois une requête à gitlab.
try_files $uri $uri/index.html $uri.html @gitlab;
}
location @gitlab {
include uwsgi_params;
# l'option uwsgi_modifier1 permet de préciser à uWSGI
# qu'il reçoit des requêtes pour une application rack
# (http://uwsgi-docs.readthedocs.org/en/latest/Protocol.html)
uwsgi_modifier1 7;
uwsgi_pass unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}
}