Git je bezplatný a otevřený systém pro správu verzí, který lze použít ke sledování změn kódu. Git vám umožňuje vytvářet mnoho úložišť pro stejnou aplikaci a koordinovat práci na těchto souborech mezi více lidmi. Primárně se používá pro správu zdrojového kódu při vývoji softwaru.
V tomto článku se naučíme, jak nainstalovat HTTP Git Server s Nginx na Ubuntu 16.04.
Požadavky
- Ve vašem systému je nainstalován nový server Ubuntu 16.04.
- Uživatel Sudo s právy root.
- Na vašem serveru nakonfigurujte statickou IP adresu 192.168.15.189
1 Začínáme
Než začnete, budete muset svůj systém aktualizovat na nejnovější stabilní verzi.
Můžete to provést spuštěním následujícího příkazu:
sudo apt-get update -y
sudo apt-get upgrade -y
Jakmile je váš systém aktualizován, restartujte systém a přihlaste se pomocí uživatele sudo.
2 Nainstalujte požadované balíčky
Nejprve budete muset do systému nainstalovat některé požadované balíčky včetně nginx, git, nano a fcgiwrap. Všechny je můžete nainstalovat spuštěním následujícího příkazu:
sudo apt-get install nginx git nano fcgiwrap apache2-utils -y
Jakmile jsou nainstalovány všechny požadované balíčky, budete muset vytvořit adresář pro úložiště Git. Můžete to provést spuštěním následujícího příkazu:
sudo mkdir /var/www/html/git
Dále udělte správná oprávnění adresáři Git:
sudo chown -R www-data:www-data /var/www/html/git
Jakmile budete hotovi, můžete pokračovat v konfiguraci webového serveru Nginx.
3 Konfigurace Nginx
Nejprve budete muset nakonfigurovat Nginx, aby předával Git provoz Git. Můžete to udělat úpravou výchozího konfiguračního souboru Nginx:
sudo nano /etc/nginx/sites-available/default
Změňte soubor, jak je znázorněno níže:
# Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html/git; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } location ~ (/.*) { client_max_body_size 0; # Git pushes can be massive, just to make sure nginx doesn't suddenly cut the connection add this. auth_basic "Git Login"; # Whatever text will do. auth_basic_user_file "/var/www/html/git/htpasswd"; include /etc/nginx/fastcgi_params; # Include the default fastcgi configs fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Tells fastcgi to pass the request to the git http backend executable fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/www/html/git; # /var/www/git is the location of all of your git repositories. fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; # Takes the capture group from our location directive and gives git that. fastcgi_pass unix:/var/run/fcgiwrap.socket; # Pass the request to fastcgi } }
Po dokončení uložte a zavřete soubor. Poté otestujte Nginx na jakoukoli chybu konfigurace pomocí následujícího příkazu:
sudo nginx -t
Pokud je vše v pořádku, měli byste vidět následující výstup:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Dále si budete muset vytvořit uživatelský účet, který budete muset používat k procházení repozitáře. Uživatele s názvem hitesh můžete vytvořit pomocí nástroje htpasswd:
sudo htpasswd -c /var/www/html/git/htpasswd hitesh
Nakonec restartujte Nginx a použijte všechny změny pomocí následujícího příkazu:
sudo systemctl restart nginx
Stav serveru Nginx můžete zkontrolovat pomocí následujícího příkazu:
sudo systemctl status nginx
Měli byste vidět následující výstup:
?? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2017-06-20 23:00:11 IST; 51min ago Process: 12415 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS) Process: 7616 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS) Process: 12423 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 12419 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 12427 (nginx) CGroup: /system.slice/nginx.service ??????12427 nginx: master process /usr/sbin/nginx -g daemon on; master_process on ??????12431 nginx: worker process Jun 20 23:00:11 localhost systemd[1]: Stopped A high performance web server and a reverse proxy server. Jun 20 23:00:11 localhost systemd[1]: Starting A high performance web server and a reverse proxy server... Jun 20 23:00:11 localhost systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument Jun 20 23:00:11 localhost systemd[1]: Started A high performance web server and a reverse proxy server.
4 Vytvořit úložiště Git
Jakmile je vše správně nakonfigurováno, je čas vytvořit úložiště Git.
Úložiště s názvem repo.git můžete vytvořit pomocí následujícího příkazu:
cd /var/www/html/git
sudo mkdir hitesh.git
sudo cd hitesh.git
sudo git --bare init
sudo git update-server-info
sudo chown -R www-data.www-data .
sudo chmod -R 777 .
Dále budete muset povolit službu http přes firewall UFW. Ve výchozím nastavení je UFW ve vašem systému zakázáno, takže jej musíte nejprve povolit. Můžete jej povolit pomocí následujícího příkazu:
sudo ufw enable
Jakmile je povolena brána firewall UFW, můžete povolit službu HTTP spuštěním následujícího příkazu:
sudo ufw allow http
Nyní můžete zkontrolovat stav UFW firewallu spuštěním následujícího příkazu:
sudo ufw status
Ok, to je vše pro konfiguraci na straně serveru. Nyní můžete přejít na stranu klienta a otestovat Git.
5 Test Git na klientském počítači
Než začnete, budete muset nainstalovat git na klientský systém. Můžete jej nainstalovat pomocí následujícího příkazu:
sudo apt-get install git -y
Nejprve vytvořte místní úložiště pomocí následujícího příkazu:
sudo mkdir ~/testproject
Dále změňte adresář na testproject a spusťte nové vzdálené úložiště pomocí následujícího příkazu:
cd ~/testproject
git init
git remote add origin http://[email protected]/hitesh.git
Dále vytvořte několik souborů a adresářů pomocí následujícího příkazu:
mkdir test1 test2 test3
echo "This is my first repository" > test1/repo1
echo "This is my second repository" > test2/repo2
echo "This is my third repository" > test3/repo3
Dále spusťte následující příkaz pro přidání všech souborů a adresářů do úložiště:
git add .
git commit -a -m "Add files and directoires"
Měli byste vidět následující výstup:
[master 002fac9] Add files and directoires 3 files changed, 3 insertions(+) create mode 100644 repo1 create mode 100644 repo2 create mode 100644 repo3
Dále odešlete všechny soubory a adresáře na server Git pomocí následujícího příkazu:
git push origin master
Měli byste vidět následující výstup:
Password for 'http://[email protected]': Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (5/5), 422 bytes | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To http://[email protected]/hitesh.git 68f1270..002fac9 master -> master
Nyní jsou všechny vaše soubory a adresáře odevzdány vašemu serveru Git.
Proces vytváření vašeho úložiště Git je nyní dokončen. Nyní můžete snadno klonovat své úložiště v budoucnu. Své úložiště můžete naklonovat pomocí následujícího příkazu na vzdáleném systému:
git clone [email protected]:/var/www/html/git/hitesh.git
Měli byste vidět následující výstup:
Cloning into 'hitesh'... [email protected]'s password: remote: Counting objects: 8, done. remote: Compressing objects: 100% (3/3), done. Receiving objects: 100% (8/8), 598 bytes | 0 bytes/s, done. remote: Total 8 (delta 0), reused 0 (delta 0) Checking connectivity... done.
Nyní změňte adresář na klonované úložiště pomocí následujícího příkazu:
cd hitesh
tree
Měli byste vidět následující výstup:
. |-- test1 | `-- repo1 |-- test2 | `-- repo2 `-- test3 `-- repo3 3 directories, 3 files
Závěr
Doufám, že nyní můžete snadno poslat, stáhnout, klonovat a odevzdat zdrojový kód pomocí serveru Git. Pokud máte nějaké pochybnosti, neváhejte mě komentovat.