GIT e Django Projects

2

Eu tenho dois servidores, um Dev server e um Production server. O servidor Production executa um site do Django ao vivo, enquanto o servidor Dev tem uma cópia do projeto Django. Eu uso o servidor Dev para trabalhar no site do Django, fazer melhorias, corrigir bugs, etc. Quando estou satisfeito com a forma como a versão Dev está funcionando, movo todo o diretório do Django do Dev server e substituo o mesmo diretório no servidor Production . Os dois servidores não estão na mesma LAN, então o processo não é direto.

Existem alguns problemas com isso que estou tendo até agora.

  1. Mover o diretório inteiro é trabalhoso e consome tempo
  2. Se eu apenas mudo alguns arquivos, é até mesmo mover entediante substituir alguns arquivos do que o diretório inteiro, já que o projeto está ficando bastante grande e eu me preocupo com a falta de algo
  3. Muitas vezes me deparo com problemas de permissão depois que mudoi as coisas
  4. É super ineficiente e, devido à falta de tempo, não me incomodei em descobrir um novo método. Agora está ficando fora de controle e eu preciso resolver a situação.

Estou pensando em mudar para um repositório GIT para esse processo. Mas a minha pergunta é como eu configuraria tudo isso?

  • Eu hospedo o repositório no servidor Production , pego do servidor Dev , trabalho, então confirmo? Então eu puxaria do servidor Production (mesmo servidor em que o repo está hospedado) para executar a versão atual de trabalho?
  • Eu hospedo o repositório no Dev Server, puxo do mesmo servidor para fazer o trabalho no repositório, depois puxo uma versão de trabalho para o servidor Production ?
  • Devo hospedar o repo em um servidor diferente do servidor Production e o servidor Dev (um terceiro servidor)?
  • Há alguma consideração especial com o Django e repos com os quais eu preciso me preocupar?

Obrigado pela ajuda:)

    
por Garfonzo 29.10.2012 / 16:37

2 respostas

2

Eu trabalho com o desenvolvimento do Django e com o GIT por 18 meses. Durante esse período, tentei hospedar um repositório git e hoje uso o GITHUB para o trabalho. É mais fácil e economiza tempo por um pequeno custo. Veja minhas considerações:

  • A menos que você seja um especialista em Linux com experiência em GIT, é mais barato (considere que tempo é dinheiro) para hospedar seu projeto no GITHUB. Eles têm hospedagem GIT gratuita para projetos públicos (qualquer um pode clonar / separar). Eles também têm uma hospedagem GIT paga (barata) se você quiser ter um repositório privado.

  • GITHUB (ou outra empresa de hospedagem GIT) facilitará a configuração de repositórios para que você possa aprender a trabalhar com o GIT à medida que você o utiliza (em outras palavras, devido à interface da Web você não precisa aprender mais do que a sintaxe de linha de comando do GIG basig antes de usar o GIT)

  • O GIT é um sistema de versão de controle distribuído. Isto significa que todo lugar onde você coloca uma cópia do seu repositório terá o histórico completo de todo o seu código, então caso você escolha hospedar seu próprio servidor GIT, é irrelevante colocar um servidor DEV ou PRD. Na verdade, você pode colocá-lo em seu próprio notebook sem medo de perder dados, porque você também tem uma cópia em DEV e PRD. Tenha em mente que você tem que fazer PULLs em seu DEV e em seu servidor PRD do seu servidor GIT.

  • É fácil fazer scripts em TECIDO para atualizar o servidor DEV ou PRD da sua própria máquina. Tudo o que você precisa fazer é ter algo assim em seu fabfile.py:

    def deploy_production():
        with cd('/home/my_user/my_project'):
            run("git pull") # update to the newest version
            with prefix('source ~/.virtualenvs/my_env/bin/activate'):
                run('./manage.py collectstatic --noinput')
    def production():
        """
        Sets environment to production
        """
        continue = confirm('Updating the production environment, continue?', default=False)
        if not continue:
            abort('Good bye - thanks for doing nothing on production!')
        env.hosts = ['my_server.my_domain.com.br']
        env.key_filename = ['~/amazon/my_ssh_key.pem']
        env.user = 'ubuntu'

    # Use this to run fabric update procedure:
    fab production deploy_production
  • Use virtualenv e virtualenvwrapper
  • crie um arquivo na raiz do projeto chamado '.gitignore' e coloque o arquivo (ou padrões de arquivo) que você não deseja gerenciar através do GIT, como: * .pyc, .idea, .DS_Store (um por linha)

Espero que ajude, boa aparência!

Se você achar útil essa resposta, atribua pontos.

    
por 30.10.2012 / 14:12
0

Eu sugiro que você use um sistema de controle de código-fonte, como o git, como você mencionou, faça seu trabalho localmente e dê uma olhada em Fabric para desdobramento, desenvolvimento. Você pode usar git checkout-index para exportar o código localmente (via código no arquivo de fichas) antes de enviá-lo ao servidor por meio de um comando como fab dev deploy . Quando você estiver pronto para implantar para a produção fab prod deploy . Você pode colocar o código no fabfile para mover o código-fonte para o local correto, atualizar dependências como o Django (via pip, por exemplo), reiniciar o uwsgi, etc.

    
por 29.10.2012 / 17:42

Tags