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.
chruby
eruby-installer
duas 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
, bison
e 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 git
usuá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 -H
sudo
sudo
/home/git/.profile
Ainda existem alguns comandos do guia que devem ser digitados com sudo, você saberá quais. Para alternar entre git
e root
digite exit
e su git
respectivamente.
Vamos instalar o Bundler.
gem install bundler --no-rdoc --no-ri
Agora temos que ajustar Gemfile
um pouco.
Adicione no final:
platform :rbx do
gem "puma", "~> 2.8"
gem "psych", "~> 2.0"
end
Ao executar bundle install
remove the flag, alteramos o sem atualizar em desenvolvimento, portanto, não vamos usá-lo. Também adicione à lista de .--deployment
Gemfile
Gemfile.lock
unicorn
--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 pool
parâmetro do banco de dados também.