Compilando e mantendo aplicativos?

3
  1. Qual formato de configuração você usa para compilar e por quê?

    Exemplo (você não precisa responder como o exemplo, mas informe sua configuração de diretório):

    <Layout MyPersonalizedLayout>
        prefix:          /usr
        exec_prefix:     ${prefix}
        bindir:          ${prefix}/bin
        sbindir:         ${prefix}/sbin
        libdir:          ${prefix}/lib/application_name
        libexecdir:      ${prefix}/lib/application_name/modules
        installbuilddir: ${prefix}/lib/application_name/build
        mandir:          ${prefix}/man
        sysconfdir:      /etc/application_name
        includedir:      ${prefix}/include/application_name
        localstatedir:   /var
        runtimedir:      ${localstatedir}/run/application_name
        logfiledir:      ${localstatedir}/log/application_name
    </Layout>
    
  2. Quais etapas você considera e quais messures você faz antes de recompilar ou atualizar um aplicativo?

  3. Como você acompanha todos os configurar as opções usadas pela última vez para compilar uma aplicação?

  4. Você faz backups periodicamente dos arquivos de configuração? com que frequência?

  5. Você tem um especial / diferente sistema de atualização para que você possa manter a última aplicação de trabalho até o novo está pronto para rodar?

  6. Você geralmente testa uma compilação antes de colocá-lo para praticar em seu servidor de produção, o que você está considerações antes de fazer isso?

Eu não sou muito de uma pessoa que usa gerenciadores de instalação, como yum, apt-get e outros, enquanto acredito que eles são ótimos para algumas coisas. Eu prefiro ter meu próprio controle e possibilidades dentro dos aplicativos que preciso gerenciar então eu gostaria de saber como todos ameaçam isso.

Se esta pergunta obtiver mais do que 3 respostas, eu a transformarei em um wiki da comunidade até então, peço que não faça isso em um

    
por Prix 19.10.2010 / 19:32

3 respostas

4

Costumo preferir padronizar minhas compilações de sistema usando principalmente scripts e fontes. Outros frequentemente gostam de usar as ferramentas de gerenciamento de configuração e criar seus próprios pacotes a partir do código-fonte para o gerenciador de pacotes nativo de suas distribuições. Se você padronizar sua construção adequadamente, esses métodos fornecem os mesmos resultados e são simplesmente maneiras diferentes de fazer as coisas.

Ainda uso pacotes de sistema e utilitários de construção de sistema nativos. Com o RHEL, o Kickstart é absolutamente essencial para a construção inicial. Para os utilitários comuns do userland, tenho tendência a padronizar os pacotes. Eu apenas compilo da fonte para a função de servidor principal. Por exemplo: banco de dados, servidor da Web, servidor proxy, balanceador de carga e assim por diante.

A1: Eu prefiro seguir o Padrão de Hierarquia do Sistema de Arquivos sempre que possível.

A2: Este é um tópico complexo. Se a atualização exigir bibliotecas atualizadas, outro software também poderá exigir essas bibliotecas. Todos os requisitos essenciais de um papel de compilação tendem a compilar por fonte. Bibliotecas Freqüentemente compartilho entre compilações e recompilo qualquer software compilado contra elas, como eu raramente compilava estaticamente. Se suas alterações forem testadas e preparadas adequadamente para a produção, você poderá minimizar a maioria dos riscos.

A3: As opções de configuração são normalmente especificadas na compilação quando se aplicam em todos os servidores. No caso de configuração única, como um VirtualHost específico em um cluster de servidores Web, eu manterei esses arquivos de configuração dentro de um Sistema de Controle de Revisão . Depois que um servidor é construído de forma programática, uma lista de verificação do sistema é concluída para uma verificação de sanidade e configuração de quaisquer opções que sejam melhor tratadas manualmente. Você também pode usar um sistema de gerenciamento de configuração para ajudar aqui, mas dependendo de quão bem sua compilação é padronizada, ela pode se tornar obsoleta.

A4: sim. Backups noturnos de todos os arquivos de configuração que são exclusivos.

A5: O sistema de atualização é basicamente a lógica incorporada no script inicial, com um script de wrapper em torno dele. Isso permite que as atualizações sejam mantidas como parte da construção. Às vezes, um conjunto de scripts mais simples usando for faz loops em bash e as mudanças de tubulação através de ssh. A ideia é que todas as mudanças sejam adequadamente padronizadas acima de tudo.

A6: Todas as alterações são testadas e verificadas em um ambiente de teste antes de serem testadas para produção. Todas as funcionalidades esperadas devem ser verificadas para serem operáveis.

Honestamente, eu poderia escrever um livro sobre esse assunto com base em sua pergunta como ela é. Você está essencialmente perguntando como arquitetar, padronizar e manter adequadamente um ambiente de produção. Minha resposta não é exaustiva e existem padrões fundamentais que devem ser aplicados em todas as abordagens. Você provavelmente se beneficiaria da fundação estabelecida no livro da Prática de administração de sistemas e de rede .

Eu também escrevi outras respostas sobre este assunto. Veja também:

Gerenciando uma aplicação em vários servidores, ou PXE vs cfEngine / Chef / Puppet

automatize a configuração do servidor com as compilações de origem

    
por 19.10.2010 / 20:26
1

How do you keep track of all the configure options you last used to compile an application?

Depende de como estou construindo o aplicativo. Se eu estiver construindo um pacote Debian, eu armazenarei o conteúdo se a pasta debian / no SVN.

Se eu estiver construindo para instalar sem um gerenciador de pacotes, irei construir um script ou um makefile e armazená-lo no SVN.

Do you take periodically backups from the configuration files?

O backup do repositório SVN é feito diariamente.

Do you generally test a compilation before putting it to pratice on your production server, what are you considerations before doing so?

Eu quase sempre testo, mas exatamente como eu testo depende do aplicativo e de como ele é.

    
por 19.10.2010 / 20:20
0

Eu construo SRPMs para o software que eu uso e depois faço backup deles. Dessa forma, eu tenho um método infinitamente reproduzível de construir corretamente qualquer código que eu use em qualquer sistema que eu tenha.

    
por 19.10.2010 / 19:44