Eu estava pesquisando este site para uma boa resposta à minha pergunta, o melhor que pude encontrar foi this . (Eu acho que para colocar minha configuração em /etc
, aplicação em /usr/local/bin
e dados em /home/firda/.tunnel
ou em algum lugar em /var
ou /srv
ou /usr
.)
Prefácio:
Estou escrevendo aplicativo de servidor em C ++. Deve ficar no meio de outros servidores, aplicativos móveis e unidades (pequenos dispositivos, por exemplo, no carro). Geralmente, ele escutaria na porta TCP (para lidar com clientes = aplicativos e servidores móveis) e na porta UDP (onde os dados iriam de / para ipsec / racoon e / ou porta aberta - comunicação com dispositivos, protocolo personalizado). Ele não precisa de privilégios de root (porta > 1000, por exemplo, 11235), então, decidi definir o bit SUID e atribuir a propriedade à minha conta (para executá-lo na minha conta mesmo se eu iniciá-lo como root). É assim que eu implemento agora (do MAKEFILE)
deploy := /usr/local/bin
user := firda
name := tunnel
watchdog := tunnel-watchdog
names := $(name) $(watchdog)
deploy:
cp $(names) $(deploy)/
chown $(user):$(user) $(patsubst %,$(deploy)/%,$(names))
chmod a-rwx,u+xs $(patsubst %,$(deploy)/%,$(names))
$(deploy)/$(watchdog)
e adicionado /usr/local/bin/tunnel-watchdog
a /etc/rc.local
(o tet-watchdog apenas se bifurca para executar o túnel e reiniciá-lo se ele morrer). Quando eu quiser implantá-lo, copio as fontes para meu diretório pessoal ( /home/firda/tunnel
), digite make test
para criar e fazer o autoteste (em uma conta não raiz), então kill
desses dois processos em execução (depois ps -fu firda
para conhecer PIDs) e digite make deploy
para copiar novos executáveis para /usr/local/bin
e iniciá-lo novamente (na conta root).
Perguntas:
- Onde colocar a configuração básica? (
/etc/tunnel/config
now - especifica números de porta, mas agora também contém credenciais / configurações de usuário / unidade)
- Onde colocar dados básicos como configuração de tempo de execução (nomes de usuário, credenciais, senhas , chaves de cifra , IDs de dispositivos - tudo pode ser alterado remotamente por protocolo TCP personalizado). (por enquanto,
/etc/tunnel/config.tmp
é criado após algum tempo limite quando, por exemplo, usuário é adicionado, /etc/tunnel/config
- > /etc/tunnel/config.bak
e /etc/tunnel/config.tmp
- > /etc/tunnel/config
)
- Onde colocar grandes dados de leitura / gravação persistentes ? (isso é o que precisa ser feito - todos os dados de todas as unidades colocadas em algum arquivo grande, mas nenhum dBase, loja virtual customizada -
/home/firda/whatever
? /srv/something
?)
Eu sei que posso colocar todos os arquivos em meu diretório pessoal (é o meu próprio servidor, que provavelmente não será distribuído para ninguém, ... quem sabe), mas gostaria de conhecer a melhor prática conselhos para fazê-lo corretamente (não para cruzar habbits administrador como particionamento de disco e cotas - Eu gostaria de saber como é feito normalmente, como isso pode ser feito, quais pastas são boas para alguns sistema de backup ). Obrigado.
P.S .: Este não é um servidor web (até agora), mas eu acho que as respostas podem ser semelhantes. Essa pergunta pode parecer duplicada para a que eu criei, mas não fiquei satisfeito com a resposta, então, especifiquei meu próprio aplicativo e necessidades (a questão do particionamento, cotas e backups especialmente).
FEEDBACK:
Padrão de hierarquia do sistema de arquivos divide os diretórios de acordo com dois critérios: somente leitura ( /usr
, /etc
, /opt
e /boot
) - todos estes são para executáveis e configuração estável, não para dados. Segundo critério é compartilhável (independente de plataforma) e não compartilhável (dependente de plataforma). Os dados devem ir em /var
tree com uma exceção adicionada: /srv
pode ser usado para dados somente leitura e leitura / gravação (perfeito para serviços que desejam ambos os tipos de arquivos em um diretório).
Por enquanto, provavelmente usarei /etc
para configuração básica (incluindo parâmetros para alteração de diretórios), /usr/local/bin
para o aplicativo e /var/local
para meus dados. (Usando /srv
poderia ser a segunda opção.)
Algum comentário antes de fecharmos esta questão?