Using uWSGI for the Smart HTTP protocol caused some issues, see e.g. FS#45428. Suggest using fcgiwrap instead which is more lightweight, has better documentation and is easier to debug. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org> --- INSTALL | 27 ++++++++++----------------- conf/fcgiwrap.service.proto | 11 +++++++++++ conf/fcgiwrap.socket.proto | 11 +++++++++++ 3 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 conf/fcgiwrap.service.proto create mode 100644 conf/fcgiwrap.socket.proto diff --git a/INSTALL b/INSTALL index b090789..d68fa26 100644 --- a/INSTALL +++ b/INSTALL @@ -63,24 +63,17 @@ Setup on Arch Linux AuthorizedKeysCommand /usr/local/bin/aur-git-auth "%t" "%k" AuthorizedKeysCommandUser aur -9) If you want to enable smart HTTP support with nginx and uWSGI, you can use - the following directives: +9) If you want to enable smart HTTP support with nginx and fcgiwrap, you can + use the following directives: location ~ "^/([a-z0-9][a-z0-9.+_-]*?)(\.git)?/(git-(receive|upload)-pack|HEAD|info/refs|objects/(info/(http-)?alternates|packs)|[0-9a-f]{2}/[0-9a-f]{38}|pack/pack-[0-9a-f]{40}\.(pack|idx))$" { - include uwsgi_params; - uwsgi_modifier1 9; - uwsgi_param PATH_INFO /aur.git/$2; - uwsgi_param GIT_NAMESPACE $1; - uwsgi_pass unix:/run/uwsgi/smarthttp/aurweb.sock; + fastcgi_pass unix:/run/fcgiwrap.sock; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; + fastcgi_param PATH_INFO /aur.git/$3; + fastcgi_param GIT_HTTP_EXPORT_ALL ""; + fastcgi_param GIT_NAMESPACE $1; + fastcgi_param GIT_PROJECT_ROOT /srv/http/aurweb/; } - For the uWSGI configuration, the following template can be used: - - [uwsgi] - plugins = cgi - uid = aur - processes = 1 - threads = 8 - env = GIT_HTTP_EXPORT_ALL= - env = GIT_PROJECT_ROOT=/srv/http/aurweb - cgi = /usr/lib/git-core/git-http-backend + Sample systemd unit files for fcgiwrap can be found under conf/. diff --git a/conf/fcgiwrap.service.proto b/conf/fcgiwrap.service.proto new file mode 100644 index 0000000..c4e8544 --- /dev/null +++ b/conf/fcgiwrap.service.proto @@ -0,0 +1,11 @@ +[Unit] +Description=Simple CGI Server +After=nss-user-lookup.target + +[Service] +ExecStart=/usr/sbin/fcgiwrap +User=aur +Group=aur + +[Install] +Also=fcgiwrap.socket diff --git a/conf/fcgiwrap.socket.proto b/conf/fcgiwrap.socket.proto new file mode 100644 index 0000000..a1bc826 --- /dev/null +++ b/conf/fcgiwrap.socket.proto @@ -0,0 +1,11 @@ +[Unit] +Description=fcgiwrap Socket + +[Socket] +ListenStream=/run/fcgiwrap.sock +SocketUser=http +SocketGroup=http +SocketMode=0700 + +[Install] +WantedBy=sockets.target -- 2.4.4