Configure o Git Server com HTTP no Ubuntu

Configure o Git Server com HTTP no Ubuntu
Se você deseja configurar um servidor HTTP Git para trabalhar com repositórios Git em particular, este artigo é para você. Neste artigo, vou mostrar como configurar um servidor HTTP inteligente Git no Ubuntu com o Apache HTTP Server. Então vamos começar.

Instalando o servidor HTTP Git e Apache:

Os pacotes Git e Apache estão disponíveis no repositório oficial do pacote do Ubuntu. Portanto, você pode instalá -lo facilmente com o gerenciador de pacotes apt.

Primeiro, atualize o cache do repositório de pacotes apt com o seguinte comando:

$ sudo apt update

O cache do repositório de pacotes apt deve ser atualizado.

Agora, instale o Git e o Apache com o seguinte comando:

$ sudo apt install git apache2 apache2-utils

Agora, pressione Y e depois pressione Para confirmar a instalação.

Git e Apache devem ser instalados.

Configurando o Apache HTTP Server para Git:

Agora, ative o apache mod_env, mod_cgi, mod_alias e mod_rewrite Módulos com o seguinte comando:

$ sudo a2enmod Env cGI Alias ​​reescrever

Os módulos Apache necessários devem ser ativados.

Agora, crie um novo diretório /var/www/git por manter todos os repositórios do Git com o seguinte comando:

$ sudo mkdir/var/www/git

Agora, crie uma nova configuração do site Apache /etc/Apache2/sites-AVALÍVEL/GIT.conf Para Git com o seguinte comando:

$ sudo nano/etc/apache2/sites-averable/git.conf

Agora, digite as seguintes linhas no arquivo de configuração:


ServerAdmin Webmaster@localhost
Setenv git_project_root /var/www/git
Setenv git_http_export_all
Scriptalias/git//usr/lib/git-core/git-http-backend/
Alias ​​/git /var /www /git

Opções +Execcgi -Multiviews +Symlinksifowowsatch
Allowoverride nenhum
Exigir tudo concedido

Documentroot/var/www/html

Índices de opções seguem os links multiviews
Allowoverride nenhum
Exigir tudo concedido

ErrorLog $ apache_log_dir/erro.registro
Loglevel Warn
CustomLog $ apache_log_dir/acesso.log combinado

O arquivo de configuração final parece a seguir. Agora, salve o arquivo de configuração pressionando + X seguido pela Y e .

Agora, desative a configuração padrão do site Apache com o seguinte comando:

$ sudo a2dissite 000-default.conf

A configuração do site padrão deve ser desativada.

Agora, ative a configuração do site Git com o seguinte comando:

$ sudo a2ensite git.conf

A configuração do site Git deve ser ativada.

Agora, reinicie o servidor http apache com o seguinte comando:

$ sudo systemctl reiniciar apache2

Para inicializar um novo repositório Git acessível sobre o servidor Apache HTTP, você terá que executar alguns comandos. Você não quer fazer a mesma coisa repetidamente apenas para criar um novo repositório Git. Então, decidi escrever um script de shell para esse fim.

Primeiro, crie um novo script de shell /usr/local/bin/git-criate-repo.sh com o seguinte comando:

$ sudo nano/usr/local/bin/git-criate-repo.sh

Agora, digite as seguintes linhas de códigos no script do shell.

#!/BIN/BASH
Git_dir = "/var/www/git"
Repo_name = $ 1
mkdir -p "$ git_dir/$ repo_name.git "
CD "$ git_dir/$ repo_name.git "
git init - -bare &> /dev /null
toque no git-daemon-export-ok
Ganchos CP/pós-atualização.ganchos de amostra/pós-atualização
Git Config http.RECEPTPACK TRUE
Git Update-Server-Info
CHOWN -RF WWW-DATA: www-data "$ git_dir/$ repo_name.git "
Echo "Git Repository '$ repo_name' criado em $ git_dir/$ repo_name.git "

Depois de digitar nessas linhas, o script do shell deve parecer o seguinte. Agora, salve o arquivo pressionando + X seguido pela Y e .

Agora, adicione a permissão Executar ao script do shell com o seguinte comando:

$ sudo chmod +x/usr/local/bin/git-create-repo.sh

Agora, crie um novo repositório Git teste na raiz do projeto Git /var/www/git usando o Git-Create-Repo.sh script da shell da seguinte forma:

$ sudo git-create-repo.Teste SH

O repositório Git teste deve ser criado.

Para acessar o repositório Git, você precisa do endereço IP do servidor Git HTTP.

$ ip a

Como você pode ver, o endereço IP no meu caso é 192.168.21.208. Vai ser diferente para você. Substitua -o por sua de agora em diante.

Agora, você pode clonar o teste Repositório Git da seguinte maneira:

Clone $ Git http: // 192.168.21.208/git/teste.git

O repositório Git teste deve ser clonado.

Agora, vamos adicionar um novo compromisso com o teste Repositório Git.

$ cd teste/
$ eco "Hello World"> Olá
$ git add .
$ git commit -m 'Commits inicial'

Agora, envie as alterações no teste Repositório Git no servidor da seguinte forma:

$ Git Push Origin

Como você pode ver, as alterações são carregadas muito bem.

Configurando a autenticação do usuário:

Nesta seção, vou mostrar como configurar a autenticação do usuário nos repositórios Git no servidor.

Primeiro, edite o git.conf Arquivo de configuração do site da seguinte forma:

$ sudo nano/etc/apache2/sites-averable/git.conf

Agora, adicione a seção a seguir no arquivo de configuração.


AuthType Basic
Authname "Verificação Git"
AuthUserfile/etc/apache2/git.Passwd
Requer usuário válido

Aqui, /etc/apache2/git.Passwd é o arquivo de banco de dados do usuário.

O arquivo de configuração final deve parecer o seguinte. Agora, salve o arquivo pressionando + X seguido pela Y e .

Agora, crie um novo arquivo de banco de dados do usuário /etc/apache2/git.Passwd e adicione um novo usuário (digamos Shovon) para o arquivo de banco de dados da seguinte forma:

$ sudo htpasswd -c/etc/apache2/git.Passwd Shovon

Agora, digite uma nova senha para o novo usuário e pressione .

Vestem a mesma senha e pressione .

O par de palavras-passagens do usuário deve ser adicionado ao banco de dados.

Agora, reinicie o servidor http apache com o seguinte comando:

$ sudo systemctl reiniciar apache2

Agora, se você tentar clonar o teste repositório novamente, você será solicitado a autenticar como pode ver na captura de tela abaixo.

Depois de se autenticar usando o nome de usuário e a senha, você poderá acessar o repositório Git.

Mesmo quando você tenta empurrar ou puxar do repositório Git, você também será solicitado pelo nome de usuário e senha.

Depois de se autenticar, o push/pull funcionará.

Você também pode definir diferentes bancos de dados de usuários para diferentes repositórios Git. Isso pode ser útil para projetos em que muitas pessoas estão trabalhando juntas no mesmo repositório Git.

Para definir a autenticação Git em repositório, primeiro, edite o git.conf Arquivo de configuração do site da seguinte forma:

$ sudo nano/etc/apache2/sites-averable/git.conf

Agora, adicione as seguintes linhas no arquivo de configuração.


AuthType Basic
Authname "Verificação Git"
AuthUserfile/etc/apache2/git.teste.Passwd
Requer usuário válido


AuthType Basic
Authname "Verificação Git"
AuthUserfile/etc/apache2/git.Test2.Passwd
Requer usuário válido

Para cada repositório Git teste e Test2, a a seção é definida. Um arquivo de banco de dados de usuário diferente é usado para cada repositório Git.

O arquivo de configuração final deve parecer o seguinte. Agora, salve o arquivo de configuração pressionando + X seguido pela Y e .

Agora, você pode criar os bancos de dados do usuário necessários da seguinte forma:

$ sudo htpasswd -c/etc/apache2/git.teste.Nome de usuário passada
$ sudo htpasswd -c/etc/apache2/git.Test2.Nome de usuário passada

Depois de terminar, reinicie o servidor HTTP Apache com o seguinte comando:

$ sudo systemctl reiniciar apache2

Agora, cada repositório Git deve ter seu próprio conjunto de usuários que possam acessá -lo.

Então, é assim que você configura o Git Server com o Apache HTTP Server no Ubuntu. Obrigado por ler este artigo.