Executando Gitlab 6.8 no Rubinius 2

EDIT: Atualizado para GitLab 6.8!

Rubinius é uma implementação de Ruby de alto desempenho. Recentemente a equipe do Rubinius lançou a versão 2.0. Muito esforço foi colocado nisso, especialmente no ano passado. É muito maduro e funciona muito bem com Rails.

GitLab é um “software de código aberto para colaborar no código”, escrito usando Rails 3 e muitas outras ferramentas incríveis do mundo Ruby.

Executar o GitLab é uma boa maneira de mostrar os recursos do Rubinius 2 quando combinado com um servidor Web que tira proveito de threads nativos e nenhum bloqueio de interpretador global. Neste caso, vamos usar o Puma.

Este guia se destina a pessoas que já estão familiarizadas com a instalação do GitLab em uma máquina Ubuntu / Debian. Para se familiarizar com ele primeiro, siga o guia oficial do GitLab, que usa a implementação canônica de Ruby (MRI).

Também é necessária alguma familiaridade com o Linux e como ele lida com os usuários e alternando entre eles.

Ferramentas em uso

  • Ubuntu 12.04.3 LTS, mas as versões mais recentes também funcionam bem.
  • chrubye ruby-installerduas incríveis ferramentas pós-modernas .
  • GitLab 6.8, vou atualizá-lo sempre que os lançamentos do GitLab podem quebrar isso.

Vamos!

Seguiremos o guia oficial de instalação do GitLab , fazendo desvios quando necessário.

Se um capítulo não tiver conteúdo, significa que você deve seguir as etapas do guia oficial sem alterações.

Vamos sujar as mãos!

1. Pacotes / Dependências

2. Ruby

Primeiro desvio completo aqui.

Vamos instalar o Rubinius usando .ruby-install

wget -O ruby-install-0.4.2.tar.gz https://github.com/postmodern/ruby-install/archive/v0.4.2.tar.gz
tar
-xzvf ruby-install-0.4.2.tar.gz
cd ruby
-install-0.4.2/
sudo make install

Então

ruby-install rbx 2.2.6

Isso vai instalar llvm, bisone sem surpresa também conhecido como Ruby 1.9.3, que é realmente necessário para construir o próprio Rubinius.ruby1.9.1

Não tenha medo: o GitLab será executado pelo Rubinius, enquanto o GitLab shell pelo Ruby 1.9.3: ele tem um tempo de inicialização muito menor e os processos do shell do GitLab têm vida tão curta que o JIT de alto desempenho do Rubinius seria totalmente desperdiçado ali.

Agora vamos instalar o chruby, que será usado pelo usuário git(criado posteriormente) para usar o Rubinius ao invés do sistema instalado Ruby 1.9.3.

wget -O chruby-0.3.8.tar.gz https://github.com/postmodern/chruby/archive/v0.3.8.tar.gz
tar
-xzvf chruby-0.3.8.tar.gz
cd chruby
-0.3.8/
sudo make install

3. Usuários do sistema

4. Shell do GitLab

5. Banco de dados

6. GitLab

Clone a fonte

Configure-o

Basta pular as etapas relacionadas ao Unicórnio.

Definir as configurações do GitLab DB

Ao editar a configuração do banco de dados, defina o pool como 16. Você verá o porquê mais tarde.

Instale joias

Agora temos que dizer ao gitusuário criado no parágrafo “Usuários do Sistema” para usar o Rubinius:

echo 'source "/usr/local/share/chruby/chruby.sh"' >> /home/git/.profile
echo
'chruby "rbx"' >> /home/git/.profile

Todas as outras etapas nesta seção devem ser digitadas após

su -l git

E sem ou na frente deles. Caso contrário , não pegaria as duas linhas que adicionamos , fazendo com que o sistema instalado Ruby 1.9.3 seja usado em seu lugar.sudo -u git -Hsudosudo/home/git/.profile

Ainda existem alguns comandos do guia que devem ser digitados com sudo, você saberá quais. Para alternar entre gite rootdigite exite su gitrespectivamente.

Vamos instalar o Bundler.

gem install bundler --no-rdoc --no-ri

Agora temos que ajustar Gemfileum pouco.

Adicione no final:

platform :rbx do
gem
"puma", "~> 2.8"
gem
"psych", "~> 2.0"
end

Ao executar bundle installremove the flag, alteramos o sem atualizar em desenvolvimento, portanto, não vamos usá-lo. Também adicione à lista de .--deploymentGemfileGemfile.lockunicorn--without

Nossa configuração Gitlab Puma personalizada:

wget -O "config/puma.rb" "https://gist.githubusercontent.com/razielgn/7055468/raw/4a06e860396d06c67e3f05264a38d311d746e249/puma.rb"

Por último, mas não menos importante, o arquivo personalizado :script/web

wget -O "script/web" "https://gist.githubusercontent.com/razielgn/7055468/raw/6228802bf83ae0d1a3a4522d01a609aea8497074/web"

Inicializar banco de dados e ativar recursos avançados

Instale o script de inicialização

Vamos instalar um script de inicialização diferente, editado para funcionar com o Puma:

sudo wget -O "/etc/init.d/gitlab" "https://gist.githubusercontent.com/razielgn/7055468/raw/e20d78ffc67a17fc99b8dc4f7142c422c1ebd925/gitlab"

Execute o restante das etapas para fazer o Gitlab iniciar na inicialização.

Configurar logrotate

Verifique o status do aplicativo

Compilar ativos

Inicie sua instância GitLab

Antes de iniciar o GitLab, recompile os ativos. É a melhor coisa a fazer e não sei porque não o fazem no Guia oficial.

bundle exec rake assets:precompile RAILS_ENV=production

Verifique novamente o status do aplicativo

Erros que você obterá:

  • Sidekiq não está sendo executado pelos mesmos motivos acima.
  • O script init não está atualizado, porque é personalizado.

É isso aí!

Siga o resto das etapas (Nginx, …) e pronto!
Relate quaisquer problemas que você encontrou seguindo este guia. Terei todo o gosto em ajudá-lo.

Personalizações

Eu configurei o Puma para executar 16 threads (igual à configuração do pool de conexões de banco de dados). Se você precisar de mais unidades de simultaneidade, fique à vontade para aumentá-las, apenas lembre-se de aumentar o poolparâmetro do banco de dados também.