ズッキーニのプログラミング実験場

プログラミング + アカデミック + 何か面白いこと。 記載されているものは基本的に私が所属する団体とは関係がありません。

   Aug 28

[git][gitweb][nginx]Ubuntu12.04LTSサーバにgitリポジトリ作って gitweb を入れる

by zuqqhi2 at 2013年8月28日
Pocket

やりたいこと

Ubuntu 12.04 LTS上にGitの共用リポジトリを作成して、
gitwebをWebUIとして入れて複数人でプライベートで共同開発したい。

Gitのリモートリポジトリの作成

Gitのインストール

Gitのインストールは単純に

[ubuntu@remote]
$sudo apt-get install git

でOK!

リモートリポジトリ作成

まずgitユーザーを作成してグループの設定をする。

[ubuntu@remote]
$sudo adduser git
$sudo usermod -a -G git zuqqhi2
$sudo usermod -a -G git test
$sudo su - git
[git@remote]
$vim ~/.bashrc
umask 002

次にリモートリポジトリ作成を作成する。

[git@remote]
$mkdir -p /home/git/repositories/test.git
$cd /home/git/repositories/test.git
$git --bare init --shared=group

その次は、自分のユーザで中身の作成と登録。

[zuqqhi2@remote]
$mkdir ~/test
$cd ~/test
$git init
$echo "Hello git project" > README
$git add .
$git commit -m "first push"
$git push /home/git/repositories/test.git master

これで中身も出来たから、後は他のユーザでチェックする。

[test@remote]
$git clone /home/git/repositories/test.git
$cd test
$vim README
update
$git commit -m "update test" -a
$git push /home/git/repositories/test.git master
[zuqqhi2@remote]
$cd ~/test
$git pull

これでリポジトリは出来た!

nginxでHTTPアクセスできるようにする

今度はローカルからHTTPでcloneとpushを出来るようにする。

nginxとfcgiwrapをインストール

fcgiwrapでgitを動かすためにインストールする。
これも単純にapt-getでOK!

[ubuntu@remote]
$sudo apt-get install nginx fcgiwrap

configの設定

nginxのコンフィグとあと細かい設定を行う。

[ubuntu@remote]
$sudo mv /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default
$sudo vim /etc/nginx/sites-available/git
server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /home/git;
        index index.html index.htm;

        access_log /home/git/logs/access.log;
        error_log /home/git/logs/error.log;

        # Make site accessible from http://localhost/
        server_name git.example.com;

        location /repositories {
                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/htpasswds/git;

                include /etc/nginx/fcgi_params;
                fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
                fastcgi_param GIT_PROJECT_ROOT /home/git;
                fastcgi_param GIT_HTTP_EXPORT_ALL "";
                fastcgi_param PATH_INFO $uri;
                fastcgi_param REMOTE_USER $remote_user;

                fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
}
$sudo cp /etc/nginx/sites-available/git /etc/nginx/sites-enabled/git
$sudo vim /etc/nginx/htpasswds/git
test:vtDa1cB7mCB3Q
$sudo usermod -a -G git www-data
$sudo su - git
[git@remote]
$mkdir /home/git/logs
$cd /home/git/repositories/test.git
$cp hooks/post-update.sample hooks/post-update
$git update-server-info
$git config http.receivepack true
$exit
[ubuntu@remote]
$sudo /etc/init.d/fcgiwrap stop
$sudo /etc/init.d/fcgiwrap start
$sudo /etc/init.d/nginx stop
$sudo /etc/init.d/nginx start

最後の方でhookの設定もしてる。
これでpushするとHEADが最新のになって、cloneでも最新のソースが得られる。

また、www-data(fcgiwrapの実行ユーザ)をgitに追加している。
これをしないとpushがunpack errorが起きてできない。

確認

設定完了したから後はローカルからcloneとpushが出来るか確認する。

[zuqqhi2@local]
$git clone http://git.example.com/repositories/test.git
$cd test
$vim README
push from local
$git commit -m "first push from local" -a
$git push origin master

OK!うまく行った!

gitweb

最後はgitwebをインストールするだけだ。

gitwebのインストール

apt-get installで大丈夫。

[ubuntu@remote]
$sudo apt-get install gitweb

gitweb.confの設定

gitwebの設定をする。

[ubuntu@remote]
$sudo vim /etc/gitweb.conf
# path to git projects (<project>.git)
$projectroot = "/home/git/repositories";

# directory to use for temp files
$git_temp = "/tmp";

# target of the home link on top of all pages
#$home_link = $my_uri || "/";

# html text to include at home page
#$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.
#$projects_list = $projectroot;

# stylesheet to use
@stylesheets = ("static/gitweb.css");

# javascript code for gitweb
$javascript = "static/gitweb.js";

# logo to use
$logo = "static/git-logo.png";

# the 'favicon'
$favicon = "static/git-favicon.png";

# git-diff-tree(1) options to use for generated patches
#@diff_opts = ("-M");
@diff_opts = ();

nginxの設定

gitweb.cgi用のnginx設定をする。

[ubuntu@remote]
$sudo vim /etc/nginx/sites-available/git
server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /home/git;
        index index.html index.htm;

        access_log /home/git/logs/access.log;
        error_log /home/git/logs/error.log;

        # Make site accessible from http://localhost/
        server_name git.example.com;

        location /repositories {
                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/htpasswds/git;

                include /etc/nginx/fcgi_params;
                fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
                fastcgi_param GIT_PROJECT_ROOT /home/git;
                fastcgi_param GIT_HTTP_EXPORT_ALL "";
                fastcgi_param PATH_INFO $uri;
                fastcgi_param REMOTE_USER $remote_user;

                fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /gitweb {
                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/htpasswds/git;

                index index.cgi;
                include /etc/nginx/fcgi_params;
                gzip off;

                if ($uri ~ "/gitweb/index.cgi") {
                        fastcgi_pass unix:/var/run/fcgiwrap.socket;
                }
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
}

確認

gitweb
完成!!

リファレンス

【送料無料】入門Git [ 濱野純 ]

【送料無料】入門Git [ 濱野純 ]
価格:2,310円(税込、送料込)

Related Posts

  • jenkins nginx2013年6月11日 [Jenkins][Nginx]インストールしてみる JenkinsをAmazonEC2のubuntu13上で稼働させたくてインストールしてみた。 1.Javaのインストール 2.nginxのインストール 3. jenkinsをインストール 4. […]
  • 2013年6月15日 [Node.js][Nginx]Node.jsのインストールと起動 Node.jsのインストール Node.jsをインストールしてnginxをリバースプロキシとして動作させてみる。 まずはNode.jsをインストールしてみる。 「\[\[ -s $HOME/.pythonbrew/etc/bashrc […]
  • 2013年3月24日 [wordpress][nginx]移行方法 参考ページ 基本は以下のページを見れば大丈夫。 以下のページでは分からない部分を補足する。 http://phono.co.jp/note/wp-wordpress%E3%82%92%E4%B8%B8%E3%81%94%E3%81%A8%E7%A7%BB%E7%AE%A1 […]
  • 2014年2月9日 [ElasticSearch][Kibana][Fluentd][Nginx] サイトのPV計測の仕組みを作る 外観 こんな感じの構成を作ってみる。 ElasticSearchのインストール http://www.elasticsearch.org/overview/elkdownloads/ からtar.gzをダウンロードしてインストールする。 動作チェッ […]
  • 2014年9月28日 [Nginx][Cronolog]手軽にログローテションする 概要 Cronologを使えば手軽にログローテションができたから、その構築メモ。 環境 OSLinux www4322gi 3.2.0-64-generic #97-Ubuntu SMP Wed Jun 4 22:04:21 UTC 2014 […]
  • 2013年3月29日 [gitflow]ホームディレクトリにインストール git-flowのインストール 以下のようにやるとうまく動いた。 git-flowの参考URL http://qiita.com/items/b4d9331ec3952dbe5205 git-flowのインストール It seems to work […]
Pocket

You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.