# Etapa 8

```
# Instalaremos o GitLab no diretório inicial do usuário "git"
cd /home/git
```

### Clonar o source

Clone Community Edition:

```
# Clonar repositório do GitLab
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-foss.git -b <X-Y-stable> gitlab
```

Clone Enterprise Edition:

```
# Clone GitLab repository
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab.git -b <X-Y-stable-ee> gitlab
```

Certifique-se de substituir \<X-Y-stable> pela ramificação estável que corresponde à versão que você deseja instalar. Por exemplo, se você quiser instalar o 15.10, use o nome da ramificação 15-10-stable.

Você pode mudar `<X-Y-stable>` master se você quiser a versão de ponta, mas nunca instale o master em um servidor de produção!

### Configurar

```
# Vá para a pasta de instalação do GitLab
cd /home/git/gitlab

# Copie o exemplo de configuração do GitLab
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# Atualize o arquivo de configuração do GitLab, siga as instruções na parte superior do arquivo
sudo -u git -H editor config/gitlab.yml

# Copie o arquivo de segredos de exemplo
sudo -u git -H cp config/secrets.yml.example config/secrets.yml
sudo -u git -H chmod 0600 config/secrets.yml

# Certifique-se de que o GitLab pode gravar nos diretórios log/ e tmp/
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/

# Certifique-se de que o GitLab pode gravar nos diretórios tmp/pids/ e tmp/sockets/
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/

# Crie o diretório public/uploads/
sudo -u git -H mkdir -p public/uploads/

# Certifique-se de que apenas o usuário do GitLab tenha acesso ao diretório public/uploads/
# agora que os arquivos em public/uploads são servidos pelo gitlab-workhorse
sudo chmod 0700 public/uploads

# Altere as permissões do diretório onde os logs de trabalho CI são armazenados
sudo chmod -R u+rwX builds/

# Altere as permissões do diretório onde os artefatos de CI são armazenados
sudo chmod -R u+rwX shared/artifacts/

# Altere as permissões do diretório onde as páginas do GitLab estão armazenadas
sudo chmod -R ug+rwX shared/pages/

# Copie o exemplo de configuração do Puma
sudo -u git -H cp config/puma.rb.example config/puma.rb

# Consulte https://github.com/puma/puma#configuration para obter mais informações.
# Você deve dimensionar os trabalhadores e threads do Puma com base no número de CPU
# núcleos que você tem disponível. Você pode obter esse número através do comando `nproc`.
sudo -u git -H editor config/puma.rb

# Definir configurações de conexão Redis
sudo -u git -H cp config/resque.yml.example config/resque.yml
sudo -u git -H cp config/cable.yml.example config/cable.yml

# Altere o caminho do soquete Redis se você não estiver usando a configuração padrão do Debian/Ubuntu
sudo -u git -H editor config/resque.yml config/cable.yml
```

Certifique-se de editar gitlab.yml e puma.rb para corresponder à sua configuração.

Se você quiser usar HTTPS, consulte[ ](https://docs.gitlab.com/ee/install/installation.html#using-https)<https://docs.gitlab.com/ee/install/installation.html#using-https> para as etapas adicionais.

### Definir configurações do banco de dados do GitLab

```
sudo -u git cp config/database.yml.postgresql config/database.yml

# Remova as linhas de host, nome de usuário e senha de config/database.yml.
# Depois de modificadas, as configurações de `produção` serão as seguintes:
#
#   production:
#     main:
#       adapter: postgresql
#       encoding: unicode
#       database: gitlabhq_production
#
sudo -u git -H editor config/database.yml

# Somente PostgreSQL remoto:
# Atualize o nome de usuário/senha em config/database.yml.
# Você só precisa adaptar as configurações de produção (primeira parte).
# Se você seguiu o guia do banco de dados, siga as instruções a seguir:
# Substitua 'senha segura' pelo valor que você atribuiu à variável $password.
# Você pode manter as aspas duplas ao redor da senha.
sudo -u git -H editor config/database.yml

# Descomente as seções `ci:` em config/database.yml.
# Certifique-se de que o valor `database` em `ci:`  corresponda ao valor do banco de dados em `main:`.

# Tornar config/database.yml legível apenas para git
sudo -u git -H chmod o-rwx config/database.yml
```

A partir do GitLab 15.9, database.yml com apenas uma seção: main: está obsoleto. No GitLab 15.10 e posterior, você deve ter duas seções em seu database.yml, main: e ci:. o ci: <https://docs.gitlab.com/ee/administration/postgresql/multiple_databases.html>. No GitLab 17.0 e posterior, você deve ter as duas seções main: e ci: em seu database.yml.

### Install Gems

{% hint style="info" %}
A partir do Bundler 1.5.2, você pode chamar bundle install -jN (onde N é o número de núcleos do seu processador) e aproveitar a instalação paralela de gems com diferença mensurável no tempo de conclusão (\~ 60% mais rápido). Verifique o número de seus núcleos com nproc. Para mais informações, consulte este [post](https://thoughtbot.com/blog/parallel-gem-installing-using-bundler).
{% endhint %}

Certifique-se de ter um pacote (run `bundle -v`):

* `>= 1.5.2`, porque alguns [problemas](https://devcenter.heroku.com/changelog-items/411) foram [corrigidos ](https://github.com/rubygems/bundler/pull/2817)na versão 1.5.2..
* `< 2.x`.

Instale as gems (se quiser usar o Kerberos para autenticação do usuário, omita o kerberos na opção --without abaixo):

```
sudo -u git -H bundle config set --local deployment 'true'
sudo -u git -H bundle config set --local without 'development test mysql aws kerberos'
sudo -u git -H bundle config path /home/git/gitlab/vendor/bundle
sudo -u git -H bundle install
```

### Instalar GitLab Shell

GitLab Shell é um software de acesso SSH e gerenciamento de repositório desenvolvido especialmente para o GitLab.

```
# Execute a tarefa de instalação para gitlab-shell:
sudo -u git -H bundle exec rake gitlab:shell:install RAILS_ENV=production

# Por padrão, a configuração do gitlab-shell é gerada a partir da configuração principal do GitLab.
# Você pode revisar (e modificar) a configuração do gitlab-shell da seguinte forma:
sudo -u git -H editor /home/git/gitlab-shell/config.yml
```

Se você quiser usar HTTPS, consulte as etapas adicionais.

certifique-se de que seu nome de host possa ser resolvido na própria máquina por um registro DNS adequado ou uma linha adicional em /etc/hosts (“127.0.0.1 hostname”). Isso pode ser necessário, por exemplo, se você configurar o GitLab atrás de um proxy reverso. Se o nome do host não puder ser resolvido, a verificação final da instalação falhará com Check GitLab API access: FAILED. código: 401 e push commits são rejeitados com \[rejeição remota] master -> master (hook recusado).

### Instale o GitLab Workhorse

O GitLab-Workhorse usa o [GNU Make](https://www.gnu.org/software/make/). A linha de comando a seguir instala o GitLab-Workhorse em /home/git/gitlab-workhorse, que é o local recomendado.

```
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production
```

Você pode especificar um repositório Git diferente fornecendo-o como um parâmetro extra:&#x20;

```
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse,https://example.com/gitlab-workhorse.git]" RAILS_ENV=production
```

### Instale o indexador de pesquisa GitLab-Elastic na Enterprise Edition

O GitLab-Elasticsearch-Indexer usa o [GNU Make](https://www.gnu.org/software/make/). A linha de comando a seguir instala o GitLab-Elasticsearch-Indexer em /home/git/gitlab-elasticsearch-indexer, que é o local recomendado.

```
sudo -u git -H bundle exec rake "gitlab:indexer:install[/home/git/gitlab-elasticsearch-indexer]" RAILS_ENV=production
```

Você pode especificar um repositório Git diferente fornecendo-o como um parâmetro extra:

```
sudo -u git -H bundle exec rake "gitlab:indexer:install[/home/git/gitlab-elasticsearch-indexer,https://example.com/gitlab-elasticsearch-indexer.git]" RAILS_ENV=production
```

O código-fonte primeiro é buscado para o caminho especificado pelo primeiro parâmetro. Em seguida, um binário é construído sob seu diretório bin. Em seguida, você deve atualizar a configuração de produção -> elasticsearch -> indexer\_path do gitlab.yml para apontar para esse binário.

### instalar as páginas do GitLab

O GitLab Pages usa o [GNU Make](https://www.gnu.org/software/make/). Esta etapa é opcional e necessária apenas se você deseja hospedar sites estáticos de dentro do GitLab. Os comandos a seguir instalam o GitLab Pages em /home/git/gitlab-pages. Para obter etapas de configuração adicionais, consulte o [guia de administração](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/administration/pages/source.md) da sua versão do GitLab, pois o daemon GitLab Pages pode ser executado de várias maneiras diferentes.

```
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-pages.git
cd gitlab-pages
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
```

### Instale Gitaly

```
# Fetch Gitaly source with Git and compile with Go
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories]" RAILS_ENV=production
```

Você pode especificar um repositório Git diferente fornecendo-o como um parâmetro extra:

```
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories,https://example.com/gitaly.git]" RAILS_ENV=production
```

Em seguida, verifique se o Gitaly está configurado:

```
# Restrict Gitaly socket access
sudo chmod 0700 /home/git/gitlab/tmp/sockets/private
sudo chown git /home/git/gitlab/tmp/sockets/private

# If you are using non-default settings, you need to update config.toml
cd /home/git/gitaly
sudo -u git -H editor config.toml
```

Para obter mais informações sobre como configurar o Gitaly, consulte [the Gitaly documentation](https://docs.gitlab.com/ee/administration/gitaly/index.html).

### Instale o serviço

O GitLab sempre deu suporte a scripts de inicialização SysV, que são amplamente suportados e portáteis, mas agora o systemd é o padrão para supervisão de serviço e é usado por todas as principais distribuições do Linux. Você deve usar serviços systemd nativos se puder se beneficiar de reinicializações automáticas, melhor sandbox e controle de recursos.

### Instalar unidades systemd

Use estas etapas se você usar systemd como init. Caso contrário, siga o [SysV init script steps](https://docs.gitlab.com/ee/install/installation.html#install-sysv-init-script).

Copie os serviços e execute systemctl daemon-reload para que o systemd os pegue:

```
cd /home/git/gitlab
sudo mkdir -p /usr/local/lib/systemd/system
sudo cp lib/support/systemd/* /usr/local/lib/systemd/system/
sudo systemctl daemon-reload
```

As unidades fornecidas pelo GitLab fazem poucas suposições sobre onde você está executando o Redis e o PostgreSQL.

Se você instalou o GitLab em outro diretório ou como um usuário diferente do padrão, também deve alterar esses valores nas unidades.

Por exemplo, se você estiver executando Redis e PostgreSQL na mesma máquina que o GitLab, você deve:

* Edite o serviço Puma:

  ```
  sudo systemctl edit gitlab-puma.service
  ```

No editor que se abre, adicione o seguinte e salve o arquivo:

```
[Unit]
Wants=redis-server.service postgresql.service
After=redis-server.service postgresql.service
```

Edite o serviço Sidekiq:

```
sudo systemctl edit gitlab-sidekiq.service
```

Adicione o seguinte e salve o arquivo:

```
[Unit]
Wants=redis-server.service postgresql.service
After=redis-server.service postgresql.service
```

O systemctl edit instala arquivos de configuração drop-in em /etc/systemd/system/.d/override.conf, para que sua configuração local não seja sobrescrita ao atualizar os arquivos da unidade posteriormente. Para dividir seus arquivos de configuração drop-in, você pode adicionar os trechos acima aos arquivos .conf em /etc/systemd/system/.d/.

Se você fez alterações manualmente nos arquivos da unidade ou adicionou arquivos de configuração drop-in (sem usar o systemctl edit), execute o seguinte comando para que tenham efeito:

```
sudo systemctl daemon-reload
```

Faça o GitLab iniciar na inicialização:

```
sudo systemctl enable gitlab.target
```

### Instalar o script de inicialização do SysV

Use estas etapas se você usar o script de inicialização SysV. Se você usa o systemd, siga as [systemd unit steps](https://docs.gitlab.com/ee/install/installation.html#install-systemd-units).

Baixe o script init (é`/etc/init.d/gitlab`):

```
cd /home/git/gitlab
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
```

E se você estiver instalando com uma pasta ou usuário não padrão, copie e edite o arquivo padrão:

```
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
```

Se você instalou o GitLab em outro diretório ou como um usuário diferente do padrão, altere essas configurações em /etc/default/gitlab. Não edite /etc/init.d/gitlab pois ele é alterado na atualização.

Faça o GitLab iniciar na inicialização:

```
sudo update-rc.d gitlab defaults 21
# or if running this on a machine running systemd
sudo systemctl daemon-reload
sudo systemctl enable gitlab.service
```

### Configurar Logrotate

```
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
```

### Iniciar Gitaly

Gitaly deve estar concorrendo para a próxima seção.

* Para iniciar o Gitaly usando o systemd:

  ```
  sudo systemctl start gitlab-gitaly.service
  ```

Para iniciar manualmente o Gitaly for SysV:

```
gitlab_path=/home/git/gitlab
gitaly_path=/home/git/gitaly

sudo -u git -H sh -c "$gitlab_path/bin/daemon_with_pidfile $gitlab_path/tmp/pids/gitaly.pid \
  $gitaly_path/_build/bin/gitaly $gitaly_path/config.toml >> $gitlab_path/log/gitaly.log 2>&1 &"
```

### Inicializar banco de dados e ativar recursos avançados

```
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
# Digite 'yes' para criar as tabelas do banco de dados.

# ou você pode pular a pergunta adicionando force=yes
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production force=yes

# When done, you see 'Administrator account created:'
```

Você pode definir a senha e o e-mail do administrador/root fornecendo-os nas variáveis ​​de ambiente, GITLAB\_ROOT\_PASSWORD e GITLAB\_ROOT\_EMAIL, respectivamente, conforme mostrado abaixo. Se você não definir a senha (e ela estiver definida como padrão), aguarde para expor o GitLab à Internet pública até que a instalação seja concluída e você tenha feito login no servidor pela primeira vez. Durante o primeiro login, você é forçado a alterar a senha padrão. Uma assinatura Enterprise Edition também pode ser ativada neste momento, fornecendo o código de ativação na variável de ambiente GITLAB\_ACTIVATION\_CODE.

```
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=youremail GITLAB_ACTIVATION_CODE=yourcode
```

### Secure `secrets.yml`

O arquivo secrets.yml armazena chaves de criptografia para sessões e variáveis ​​seguras. Faça backup de secrets.yml em algum lugar seguro, mas não o armazene no mesmo local que seus backups de banco de dados. Caso contrário, seus segredos serão expostos se um de seus backups for comprometido.

### Verifique o status do aplicativo

Verifique se o GitLab e seu ambiente estão configurados corretamente:

```
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
```

### Compilar ativos

```
sudo -u git -H yarn install --production --pure-lockfile
sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production
```

Se o rake falhar com o heap JavaScript sem erro de memória, tente executá-lo com NODE\_OPTIONS definido como a seguir.

```
sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"
```

### Inicie sua instância do GitLab

```
# Para sistemas executando systemd
sudo systemctl start gitlab.target

# Para sistemas executando SysV init
sudo service gitlab start
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://liedsons-organization.gitbook.io/gitlab-no-ubuntu/instalacao-e-configuracao-source/etapa-8.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
