Aqui está um esboço da situação:
Estou rodando um nginx
servidor (máquina 2) que disponibiliza o trabalho dos nossos alunos. O trabalho do aluno está em outra máquina (máquina 1): nosso gitolite
servidor.
Para minimizar git clone
a transferência de dados e (e por conveniência), estou montando os repositórios dos alunos (que residem na máquina 1) como diretórios no servidor nginx (máquina 2) por meio sshfs
de entradas correspondentes fstab
.
Esta é uma das fstab
entradas na máquina 2:
[email protected]:/path/to/student/work/on/machine1 /path/to/mount/point/on/machine2
fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,
identityfile=/path/to/rsa-key/of/ssh-user/key_rsa,allow_other,default_permissions,
reconnect 0 0
(nota: no arquivo fstab isso é composto como uma única linha, mas para facilitar a leitura, adicionei novas linhas acima)
Esta configuração funciona em princípio, ou seja, os trabalhos dos alunos podem ser acessados através do site fornecido pela nginx.
Mas quando um usuário tenta ver o trabalho do aluno. Na maioria das vezes, o usuário receberá um erro 404 do nginx. Este erro pode ser corrigido simplesmente recarregando a página. Mas a maioria dos usuários (obviamente) não fará isso (eles simplesmente presumem que o URL está com defeito).
Vejo duas soluções possíveis:
- (preferencial :) corrigindo o 404 por meio de alguma modificação na entrada fstab, por exemplo, corrigindo a causa do erro 404
- (se 1. falhar:) configurar o nginx para recarregar (atualizar) automaticamente a página, se ocorrer um erro 404.
Responder1
Eu acho que nginx
está sendo executado como um usuário diferente. E por padrão sshfs
as montagens são visíveis apenas para o usuário que as monta.
Portanto (por padrão) nginx
não é possível ver os arquivos.
Existem opções para sshfs
/ fuse
( sshfs
é um fuse
sistema de arquivos). para torná-los mais visíveis. (não me lembro, mas está no manual).