PWビルドのGit
A、Gitのサーバーは、さまざまな方法を設定します
GITは、分散バージョン管理システムであり、それがそのように分散されているので、確かに通信を必要とするだろうし、遠隔通信のためのGITプロトコルを使用することは何ですか?
Gitは4つの通信プロトコルをサポートしています。
- ローカル(現地協定)
- SSH
- HTTP(ダム、スマート)
- gitの
1、ローカル(現地協定)
ローカルファイルシステムまたは共有(NFS)ファイルシステムに基づくアクセス。
長所:簡単な、直接使用する既存のファイルアクセス権やネットワークアクセスは、このような管理システムの小型版を構築するための小規模なチームプロジェクトは、非常に簡単なことです。
短所:このプロトコルの欠陥は、ローカルエリアで、共有ファイルシステムの制限自体であり、速度が遅いです。
シーンにマッチ:小さなチーム、小さなプロジェクトでは、サービスのバージョンをその場しのぎ。
ローカルプロトコルが使用さ:
# 从本地 f/git/atals 目录克隆项目 git clone /f/git/atals/ # 即使是 bare仓库也可以正常下载 git clone /f/git/atals.git # 基于file 协议克隆本地项目 git clone file:///f/git/atals/
URLの先頭に明示的にファイルを指定した場合://を、そしてGitの動作が若干異なります。あなただけのパスを指定すると、Gitはハードリンク(ハードリンク)を使用するか、または直接、必要なファイルをコピーしようとします。あなたは、ファイルを指定した場合://、Gitは通常はデータのネットワーク伝送のために使用されるプロセスをトリガーする、パッケージ化されたファイルで送信され、より多くのハード・ディスク・スペースを節約。
2、SSHプロトコル
linuxの大多数である通信のサポート用のgit sshプロトコルは、uninxシステムがサポートしているので、サービスのGITのバージョンを設定する契約を利用することは非常に便利です。
利点:まず、SSHは、非常に効率的な追加のSSHプロトコル、送信前にデータを圧縮しても安全しようとしているアクセスSSH、続いてセットアップすることは比較的簡単です。
短所:許可制度が柔軟ではない、あなたはバージョンを読み取るために必要なだけである場合でも、アカウントのオペレーティングシステムのパスワードを提供する必要があります。
シーンにマッチ:小さなチーム、小規模なプロジェクト、一時的なプロジェクト
SSHプロトコルに基づいて、
あなたがサービスとの通信にgitのsshプロトコルを使用する前に、ここでgitのサービスは、Linuxシステムにインストールする必要があります。
#创建一个祼项目 git --bare init lin.git #本地基于远程克隆仓库 git clone [email protected]:/data/git-repository/lin.git cd lin/ #添加文件 echo "this is luban" >> README.MF # 本地添加、提交、并推送至远程 git add -A; git commit -am 'first commit'; git push;
発生する可能性のあるエラー:
Gitのアップロードパック:コマンドが見つかりません。
その理由は、/ usr / binの下のディレクトリにアクセスすることしかできませんsshプロトコルの下で、解決策は以下のようであるということです
LN -sは/ usr / local / gitの/ binに/ Gitのアップロードパックは/ usr / binに/ Gitのアップロードパック
LN -sは/ usr / local / gitの/ binに/のgit - 受信パックは/ usr / binに/のgit - 受信パック
3、HTTP(ダム、スマート)
GitのHTTPプロトコルは、怠惰なWebコンテナ(アパッチ、nginxの)およびCGIコンポーネント、および承認検証のために使用Webコンテナ自体許可システムによる対話形式で通信することです。前のGit 1.6.6で唯一のダムのhttp、のみダウンロードすることができます。httpダム(ダム)プロトコルは、通常、sshプロトコルは、ssh勘定設定の提出と併せて使用、提出することはできませんサポートし、読み取り専用アカウントを提供します。1.6.6 Gitはリモコン受信プッシュ機能を実現するためのgit-HTTP-バックエンドCGIを提供した後。
長所:あなたがパブリックネットワークに入ることができるように、ローカル権限を解決し、sshの単一の問題を検証するために、HTTP URLに基づいて、匿名のサービスを提供することができます。ローカルとsshはこれを行うことが困難であり、これは、似たようなサイトのgithubのを達成するようになります。
短所:デプロイする複雑な構成のニーズの勃起WEBサーバ、HTTPS証明書など。
シーン:大規模なチーム、精密な制御権限の必要性、オンラインに公開するサービスを展開する必要があります。
HTTPダム構成と使用
倉庫のサーバのバージョンを作成します。
cd /data/git-repository git --bare init lin.git cd lin.git/hooks/mv // 版本更新钩子,当有版本提交的时候会执行更新 post-update.sample post-update ./post-update nginx 静态访问配置 server { listen 80; server_name git.lin.com; location / { root /data/git-repository; } } #重命名钩子 mv hooks/post-update.sample hooks/post-update
ローカルクローニングリモートサービス
git clone http://git.lin.com/lin.git
注:場所にあったようにHTTPプロトコルは、一般的に代わりgitlabを使用するのでは、ここで実行していない、より複雑なGITのgit-HTTP-バックエンドを使用するためのスクリプトは、configureでCGIスマートに基づいており、Web管理gogsは、このデモではありません。
4、Gitのプロトコル
GitリポジトリのGitプロトコルは、特殊なデーモンに含まれている、それはSSHサービスに似た特定のポート(9418)、上でリッスンしますが、任意の許可なしにアクセスできます。
長所:現時点では、GitのGitのプロトコル・ネットワーク・トランスポート・プロトコルは、最速で使用されています。プロジェクトがアクセスの偉大な量を持っている、またはあなたのプロジェクトは非常に大きく、書き込みにユーザー認証を必要としない場合は、サービスを提供するために、任意のGitのデーモンアップセットは良い選択です。これは、同じSSHデータ転送メカニズムを使用しますが、暗号化と認証のオーバーヘッドなし。
欠点: Gitのプロトコルの欠点は、承認メカニズムの欠如です。そして、9418は、非標準のポートで、一般的なファイアウォールが開きません。
使用GITプロトコル
cd lin.git/ # 创建一个空文件,表示开放该项目 touch git-daemon-export-ok # 后台启动守护进程 $nohub git daemon --reuseaddr --base-path=/data/git-repository/ /data/git-repository/ & #本地克隆远程项目 git clone git://192.168.0.147:9418/lin.git
gogsに基づく第2は、プライベートGITサービスを構築します
はじめとgogs
gogs基本構成
バックアップおよびリカバリのタイミングgogs
1、はじめとインストールをgogs
Gogsは、オープンソース、フルスピード、国際追い越さかなり良いを実行するために、シンプルで使いやすいことを特徴としている軽量のGitのウェブサービスです。次のようにその主な機能は以下のとおりです。
HTTPと2つのプロトコルは、SSHアクセス・サービス・ソースを提供します
修飾のためのビューのソースコードへのWebインタフェースを提供
団体、チームや個人倉庫許可を含む、より完全な著作権管理機能を提供
このプロジェクトは、単純な機能を提供しビッキー
これは、作業指示管理とマイルストーン管理を提供します。
ダウンロードしてインストールします。
公式サイト:httpsを://gogs.io
ダウンロードします。https://gogs.io/docs/installationをダウンロードしてインストールすることを選択したLINX AMD64
ドキュメンテーションます。https://gogs.io/docs/installation/install_from_binary
インストール:
ディレクトリを解凍後:
ラン
#前台运行 ./gogs web #后台运行 $nohup ./gogs web &
ポートデフォルト:3000
最初の訪問のhttp:// <ホスト>:3000には、初期設定ページに入りブート設定を行います。
代わりに、または他のMySQL SQLiteのデータ。選挙はsqlliteです
2、gogs基本的な設定
メールの設定手順:
メールの設定は、電子メールの確認を登録し、電子メールを送信するときに、パスワード認証を取得するために使用されます。二つのステップで構成されました:
まず:通常、企業の管理者のメールボックスで、口座開設のSMTPメールサービスを作成します。私はここにQQのメールボックスを使用します。
第二:配置されたgogs_home /カスタム/ confに/ app.iniファイル。
ENABLED真の速達サービスへ=
ホストのSMTPサーバーアドレスの(SMTPサービスは、対応するメールボックスのオープンを必要とし、アクセスSSLの形式でなければなりません)
以下からの送信者の名前と住所
ユーザーは、アカウントを送信します
passwdのは、 SMTPアカウントを開いたときに、対応する認証コードを持っています
再起動が直接テストすることができた後、
管理者ログイン==「コントロールパネル==」アプリケーション構成の管理==「メールの設定==」送信テストメッセージ
3、gogs定期的なバックアップとリカバリ
バックアップとリカバリ:
#查看备份相关参数
./gogs backup -h
#默认备份,备份在当前目录
./gogs backup
#参数化备份 --target 输出目录 --database-only 只备份 db
./gogs backup --target=./backupes --database-only --exclude-repos
#恢复。执行该命令前要先删除 custom.bak
./gogs restore --from=gogs-backup-20180411062712.zip
#自动备份脚本
#!/bin/sh -e
gogs_home="/home/apps/svr/gogs/"
backup_dir="$gogs_home/backups"
cd `dirname $0`
# 执行备份命令
./gogs backup --target=$backup_dir
echo 'backup sucess'
day=7
#查找并删除 7天前的备份
find $backup_dir -name '*.zip' -mtime +7 -type f |xargs rm -f;
echo 'delete expire back data!'
#添加定时任务 每天4:00执行备份
# 打开任务编辑器
crontab -e
# 输入如下命令 00 04 * * * 每天凌晨4点执行 do-backup.sh 并输出日志至 #backup.log
00 04 * * * /home/apps/svr/gogs/do-backup.sh >> /home/apps/svr/gogs/backup.log 2>&1
4、クライアント公開鍵とアドオンを設定します
Gitの設定。
#Git安装完之后,需做最后一步配置。打开git bash,分别执行以下两句命令
git config --global user.name “用户名”
git config --global user.email “邮箱”
#git 自动记住用户和密码操作
git config --global credential.helper store
SSH公開鍵を作成します。
- オープンのgit bashの
- 実行コマンド生成、公開鍵と秘密鍵:SSH-keygenは-t rsaの押しは3を入力します。
- 猫の〜/ .ssh / id_rsa.pub:公開鍵を表示するコマンド
- サービスにコンテンツをコピーid_rsa.pubの〜/ .ssh / authorized_keysにに