Pergunta

Estou começando como um desenvolvedor web independente e recentemente assustei um cliente, dando uma cotação para um bastante simples site que foi um pouco mais alto do que o esperado. Foi basicamente brochureware que eles poderiam ter feito em uma solução hospedada como wordpress.com ou sites do Google. Exceto para um recurso crítico, que me fez pensar que Django seria um bom ajuste, e que alguma sede adequada O desenvolvimento pode ser motivado.

Ao olhar para as tarefas, listei na minha estimativa aproximada, é bonita óbvio para mim que a maioria das horas existem coisas que não são específico para este site de clientes. Isso me fez pensar que deveria tem um script para automatizar o processo de configuração e implantação de novos Projetos Django.

Algumas coisas ainda teriam que ser feitas manualmente como:

  • Configure um novo VPS (ou na maioria dos casos, basta ir com virtualhosts em um VPS existente).

  • Editar configurações de DNS para apontar clientsdomain.com e test.clientsdomain.com para os novos vps.

  • Configurar ssh-teclas

  • Edite um arquivo de configuração.

    O script faria coisas como:

    • Instale alguns pacotes necessários no novo VPS

    • Instale o padrão iptables firewall no novo VPS

    • adicionar nginx / apache config para clientsdomain.com e test.clientsdomain.com

    • Configure novos bancos de dados para produção e teste no VPS e para o desenvolvimento na minha máquina local.

    • Crie um novo projeto Django e coloque-o no Bitbucket.

    • configurar configurações.py e local_settings.py para produção, teste e desenvolvimento

    • Configure os backuprouts para o banco de dados de produção e o diretório de arquivos enviados.

    • Ativar alguns aplicativos padrão: Flatpages, admin

    • Adicione alguns modelos de boilerplate, um par de pás de caldeira e um Navbar.

    • Adicione o 960.gs CSS-Framework

    • Adicionar jQuery

    • Configure Djapian ou Haystack (incluindo o trabalho do cron para atualização automática) para pesquisa.

    • Configure um novo perfil do Google Analytics.

    • Inclua possibilidade de replicar bancos de dados entre produção, teste e desenvolvimento

    • Configure o monitoramento pingdom

      Eu usei Rake e Tecido Para algo semelhante (mas menos ambicioso) no passado e estou pensando que o tecido pode ser um bom ajuste para esta tarefa também, mas eu ainda gosto da sua contribuição. Existem outras ferramentas que devo investigar? Eu ouvi bem coisas sobre fantoche mas apenas olhando para o site deles (contém a palavra empresa) me dá a sensação de que pode ser Overkill para uma operação de um homem.

Foi útil?

Solução

Atualmente, fazemos isso com tecido + buildout.Outros dizem que o Chef ou o fantoche é mais adequado (e provavelmente é, se você quiser fazer coisas de nível de servidor, não apenas no nível do aplicativo).

Também para Django Há alguns hosters dedicados que recebem muita carga de você, eu gosto especialmente http://ep.io que usamos para alimentar nossas implantações totalmente automatizadas para as demos do django-cms , então talvez você olhe para aqueles provedores de hospedagem, em vez de se limitar a VPSs que são mais sobrecarregados para você.

Outras dicas

Fantoche pode parecer assustador e exagero de pequenos projetos, pois é tão usado para implantações enormes, mas eu uso para gerenciar apenas uma máquina em modo autônomo Sem uma configuração do servidor de cliente para que não precise lidar com Certs SSL e várias máquinas , que mantém as coisas muito mais simples, mas ainda me dá o benefício que posso fazer uma rápida recuperação de desastres ou mover minha hospedagem sem muito esforço. Há alguns Grandes razões (idempotência, suporte de plataforma cruzada, Gerenciamento de ciclo de vida completo, abstração, DSLs concisos) para usar sistemas modernos de gerenciamento de configuração sobre sistemas que são essencialmente scripts que fazem ssh em um loop ou confiar em plataformas que trancam você.

Check-out fantoche de aprendizado Para uma rápida rampa, incluindo exemplos e um playground de VM. Você pode obter coisas muito úteis feitas com scripts simples de fantoches (manifestos) que executam autônomos e, em seguida, começam a aprender todos os recursos avançados depois de precisar deles.

Outra coisa legal é que muitos manifestos e módulos de fantoches já foram escritos pelos outros, e eles são compartilhados no Fantect Forge e por muitos outros Usuários de fantoches avançados .

Eu tenho considerado muito disso recentemente como alguém em posição semelhante.

Muito do que você mencionou pode ser ajudado, configurando algum bom código de esqueleto que pode ser retirado do Git para cada novo projeto.

Dê uma olhada nisso para um bom ponto de partida para um código de esqueleto do projeto Django genérico

http://blog.zacharyvoase.com/2010/02 / 03 / django-project-convenções /

Eu montei algo semelhante que me permite se levantar e funcionar rapidamente, mas também para separar as coisas do servidor a partir do material do projeto. Isso é muito importante, pois permite controlar a versão todos os projetos sem incluir arquivos do sistema / servidor. Está aqui (ainda muito em andamento). Isso cuida do layout de pastas, CSS extra, material HTML de caldeira, grade / 960 coisas, jquery, desenvolvimento vs configurações de produção, configurações de banco de dados (principalmente), aplicativos instalados padrão, etc. Aqui é o layout explicado

Usando virtualenv , virtualenvwrapper e pip permite que você Configurar Standalone, enviroments Python encapsulados que são ótimos para executar vários projetos em um VPS. Pip permite instalar pacotes para um determinado virualenv e também para produzir todos os pacotes para um diploma de texto que pode ser importado posteriormente. Isso faz redesplando o código do desenvolvimento para a produção muito rápido. Também permite que você escreva um arquivo de requisitos genéricos em seu código de esqueleto que automaticamente instala todos os seus aplicativos django normais I.E. django-marcador etc.

Em termos de bancos de dados, parei de tentar ter bancos de dados de desenvolvimento e bancos de dados de produção em máquinas diferentes, é muito difícil de importar / exportar acessórios. Agora eu só tenho bancos de dados de produção e desenvolvimento separados no VPS e nos conectar remotamente (sobre ssh) ao desenvolvimento ao desenvolver. Você pode facilmente copiar um para outro que é bom também.

Quando tudo estiver pronto, você pode implantar de desenvolvimento para produção usando tecido (ainda estou preso a isso, então não tenho certeza de sua facilidade de uso)

Eu ficaria muito interessado em ouvir os pensamentos de outros povos sobre isso como eu estava prestes a postar algo Simliar!

Confira a implantação de seda, que é baseada no tecido e é usada para implantar Django (ou qualquer WSGI) + NginX + Gunicorn:

http://pypi.python.org/pypi/silk-deployment/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top