Gitサーバーを簡単に設定!


導入


このチュートリアルでは、ローカルのGitサーバーを設定する方法をステップバイステップで示します.これは、ホームサーバー、Bagleboneブラックやラズベリーパイ、または仮想プライベートサーバーなどの低電力シングルボードコンピュータに最適です簡単で楽しいプロジェクトです.あなたが必要とするすべては、Gitとクライアントコンピュータ上のSSHキーにインストールされます.
この利点は、あなたがプッシュすることができますプル、およびリポジトリをクローンからあなた自身のプライベートGitサーバーを持っていることです.

始めましょう.

サーバ上で


まず最初に、サーバーにログインして、gitをインストールすることです.
について.DEBベースのシステムを実行します.
$ sudo apt update

$ sudo apt install git
について.RPMベースのシステムを実行します.
$ sudo yum install git

OR

$ sudo dnf install git
次のステップはgitユーザを作成することです.
$ sudo useradd -r -m -U -s /bin/bash git
-rシステムユーザを作成する-mホームディレクトリを作成する-Uユーザー名と同じグループ名を作成します.-s /path/to/shellユーザのデフォルトシェルを設定します.
あなたは/homeの下に作成されたgitユーザのホームディレクトリを見るべきです.
$ ls -lF /home/
total 8
drwxr-xr-x  2 git git 4096 Jan 29 20:09 git/

gitユーザのパスワードを設定します.
$ sudo passwd git
スイッチのアカウントは、Gitのユーザーになる.
$ su - git
クリエイト.gsh userのホームフォルダにあるsshディレクトリ.
$ mkdir /home/git/.ssh
デフォルトのパーミッションは0755(drwxr - xr - x)であることがわかります.
$ ls -ld /home/git/.ssh
drwxr-xr-x 2 git git 4096 Jan 29 20:25 /home/git/.ssh
権限を設定する必要があります.sshが0700にsshディレクトリが正しく機能するように.このコマンドでディレクトリの許可を0700 ( drwx ----------)に設定します.
$ sudo chmod 0700 /home/git/.ssh
パーミッションの確認は、ls - ldを実行して正しく設定されます.
$ ls -ld /home/git/.ssh
drwx------ 2 git git 4096 Jan 29 20:25 /home/git/.ssh
サーバー上の最初のリポジトリを作成しましょう.慣例によって我々は付け加えます.ディレクトリ名の末尾までのgit.これはディレクトリがリポジトリであり、通常のディレクトリではないことを思い出させます.
$ git init --bare my_project.git
いいねクライアントコンピュータで働きましょう.

クライアントコンピュータで


今回はこのコマンドでsshキーを作成します.
$ ssh-keygen -t rsa -b 4096 -C “my_email” -f ~/.ssh/id_rsa
-t <type>キーのタイプ(RSAまたはDSA).RSAを使う.-b <bits>作成するキーのビット数を指定します.4096を使用します.-C “comment”コメントを追加.-f /path/to/keyRSAファイルへのパスを指定します.名前を付けるのが一般的ですid_rsa .
コマンドを実行すると、出力は以下のようになります.プロンプトでパスワードを設定します.
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): ************
Enter same passphrase again: ************
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Yg5D1kaIN9M6ln3sJlHzEggLoKpDYFkhXFR1ZOwP/sI my_email
The key's randomart image is:
+---[RSA 4096]----+
|oo+*+=ooo+       |
|..=.=+o *.       |
|oo .+*oo.+       |
|+  o=.o +o.      |
|.. .o.o+S.o      |
|o    =..o. .     |
|o     .o. .      |
| .       E .     |
|          .      |
+----[SHA256]-----+
つのファイルが作成されていることがわかります.id_rsa は秘密鍵です.id_rsa.pub が公開鍵です.パーミッションは0600 (- RW -?)に設定する必要があります.
$ ls -la .ssh/
total 36
drwx------  2 bw bw 4096 Jan 29 20:43 .
drwxr-xr-x 54 bw bw 4096 Jan 29 13:17 ..
-rw-------  1 bw bw 3414 Jan 29 20:43 id_rsa
-rw-------  1 bw bw  733 Jan 29 20:43 id_rsa.pub
公開鍵はgitサーバにコピーする必要があります.それをするにはssh-copy-id コマンド.私のサーバのIPアドレスは192.168.12.34 このようなコマンドを実行して公開鍵をサーバーにコピーします.IPアドレスをサーバのIPアドレスに変更します.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
-i /path/to/public_key_file公開キーへのパスを指定します.
公開鍵をサーバーにコピーした後、SSH経由でサーバーにログオンします.IPアドレスをサーバのIPアドレスに変更します.
$ ssh [email protected]
[email protected] password:

Last login: Fri Jan 29 20:35:46 2021 from 192.168.12.100
[email protected]:~ $
「exit」と入力し、サーバーから切断します.
[email protected]:~ $ exit
これでサーバー上でリポジトリに接続する準備ができました.リポジトリと同じ名前のディレクトリを作成します.Git拡張.サーバーでは、MyCountプロジェクトと呼ばれるディレクトリがあります.Gitはクライアントコンピュータで、MyCountプロジェクトと呼ばれるディレクトリを作成します.
$ mkdir my_project/

$ cd my_project/
標準的なgitファイルのいくつかを加えてください.
$ touch readme.md .gitignore LICENSE
ReadMeにいくつかのコンテンツを追加します.MD
$ echo ‘# My First Project!’ >> readme.md
ので、コミットすることができますすべてのファイルをgitステージング領域に追加します.
$ git add --all
ファイルをgitにコミットします.The -m フラグを使用すると、エディタを開くことなく、短いコミットメッセージを作成できます.
$ git commit -m “First commit”
Gitサーバを指定する必要があります.
このコマンドはコミットが格納されるリモートGitサーバリポジトリを指定します.構文は$ git remote add <remote_name> git@<server_ip>:<git_repo>することができます任意のラベルをしたい.デフォルト<remote_name> よく見るのが普通ですorigin . ローカルサーバーを持っているので、“local”という名前を設定します.IPアドレスをサーバのIPアドレスに変更します.
(master)my_project $ git remote add local  [email protected]:my_project.git
最初のコミットをサーバにプッシュします.
(master)my_project $ git push local master
このようなリモートサーバをチェックしてください.たった今、1つの倉庫だけです
これを「ローカル」と呼ぶ.
(master)my_project $ git remote -v
local   [email protected]:my_project.git (fetch)
local   [email protected]:my_project.git (push)
私はこの簡単な方法を行うつもりだったことを覚えていますか?
我々はサーバー上の初期設定を終えたので、我々はクライアントコンピュータからSSHを使用して新しいリポジトリを作成することができます.リポジトリを作成するには、サーバーにログオンする必要はありません.ここでは、Gitサーバーに新しいリポジトリを作成するためのワークフローを示します.
リモートサーバでコマンドを実行するには、sshコマンドを実行したいコマンドを追加します.これにより、サーバにログインせずに新しいリポジトリを作成するために“git init -- end”コマンドを実行できます.このコマンドを実行して、IPアドレスをサーバのIPアドレスに変更します.
$ ssh [email protected] “git init --bare my_second_project.git”
サーバがディレクトリを作成したことを確認します.
~ $ ssh [email protected] "ls -lF"
total 8
drwxr-xr-x 7 git git 4096 Feb  5 17:47 my_project.git/
drwxr-xr-x 7 git git 4096 Feb  6 21:48 my_second_project.git/
クライアントコンピュータで、サーバーで作成したGitリポジトリと同じ名前のディレクトリを作成します.Git拡張.
サーバーでは、すでにMySense SecondCountプロジェクトを持っている.Gitディレクトリは、クライアントコンピュータ上でMyCount SecdCountプロジェクト/ディレクトリを作成します.
$ mkdir my_second_project/

$ cd my_second_project/

$ touch readme.md .gitignore LICENSE
ReadMeにいくつかのコンテンツを追加します.MD
$ echo ‘# My Second Project!’ >> readme.md

$ git add --all

$ git commit -m “First commit”

$ git remote add local [email protected]:my_second_project.git

$ git push local master
[email protected]'s password: ************
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 306 bytes | 306.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To 192.168.12.34:my_project.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'local'.
完了です.
確認するには、次のコマンドを実行する新しいローカルリポジトリを作成します.
完全な例
$ ssh [email protected] “git init --bare nodejs_app.git”
$ mkdir nodejs_app/
$ cd nodejs_app/
$ touch readme.md .gitignore LICENSE
$ echo ‘# My Nodejs App’ >> readme.md
$ git init
$ git add --all
$ git commit -m “First commit”
$ git remote add local [email protected]:nodejs_app.git
$ git push local master

注意:


あなたが望むならば、あなたは' Git Remote Add 'コマンドを実行することによってその同じ倉庫をオンラインにしたいならば、GitHubに2回目の接続を簡単に加えることができました.
最初に、同じ名前(myConeプロジェクト)でReadMeのようなどんなファイルなしででもGithubの上に新しい倉庫を作成してください.mdGitignore、またはライセンスが既に作成されています.
Gitリモートaddコマンドを実行します.以下に例を示します.
(master)my_project $ git remote add origin [email protected]/brandon-wallace:my_project.git
現在利用できるリモートリポジトリを見てください.
(master)my_project $ git remote -v
local   [email protected]:my_project.git (fetch)
local   [email protected]:my_project.git (push)
origin    [email protected]/brandon-wallace:my_project.git (fetch)
origin    [email protected]/brandon-wallace:my_project.git (push)
今、私はそれを使用することができます2つのGitサーバーを持っていることを示していますlocal 他のサーバorigin ( github ).

ボーナスチップ!


お使いのコンピュータにログインした後に、SSHのエージェントを使用すると、リポジトリにプッシュするたびに、SSHの秘密鍵のパスワードを入力し続ける必要がないようにRSAキーのパスワードを格納することができます.sshパスワードを保存します.
$ eval $(ssh-agent -s)

$ ssh-add /home/brandon/.ssh/id_rsa
Enter passphrase for /home/bw/.ssh/id_rsa: ***********
Identity added: /home/bw/.ssh/id_rsa (comment)
環境変数が存在することを確認してください.
$ env | grep SSH

SSH_AUTH_SOCK=/tmp/ssh-08AsdfQWRTYE/agent.69007
SSH_AGENT_PID=69007
今すぐあなたのすべてのGitプッシュコマンドは、パスワードを入力する必要はありません.
$ git push origin master
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 2 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 518 bytes | 518.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
To 192.168.12.34:my_project.git
   d06bb48..beee582  master -> master
コメント、質問、および提案を残してお気軽に.