+135 410 16684Mon. - Fri. 10:00-22:00

在亚马逊AWS上建立Git服务器

在亚马逊AWS上建立Git服务器

在亚马逊AWS上建立Git服务器

本文可以算是前文用亚马逊的云(AWS)免费建立wordpress blog的 一个延续,在上文的基础上我们可以建立一个属于自己的git服务器。这里介绍的方法会用到gitolite和gitlist,gitolite是一个 git的用户管理层,方便的管理用户和git repository,而gitlist是一个方便从网页查看git reposito的工具。本文假设你对git有基本的了解,并且基于提到的前文已经假设好了环境

在EC2上安装配置gitolite (sudo su)

cd /tmp
# 准备key文件,或者使用你现有的key文件
ssh-keygen -t rsa
cp id_rsa.pub /tmp/your-name.pub

# install packages 安装工具
sudo apt-get install git gitolite git-daemon-run
# create git user 创建git用户
sudo adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /home/git git
sudo su - git
cd /home/git
echo "PATH=$HOME/bin:$PATH" > .bashrc
# gl-setup gitolite初始化
gl-setup /tmp/your-name.pub
# 执行上面命令后gitolite会让选择熟悉的编辑器你修改配置文件,打开配置后座如下修改
	$REPO_UMASK = 0022;

至此gitolite安装完毕,建议

配置你工作机上的~/.ssh/config文件

以方便连接
config文件如下

Host 你喜欢的名字,如gs
Hostname 亚马逊PUBLIC DNS
User git
IdentityFile C:/Users/test/.ssh/id_rsa #你的私钥路径
#PreferredAuthentications publickey

在工作机上管理gitolite

这样你就可以在你的工作机上进行连接了,现在clone管理目录
git clone git@gs:gitolite-admin.git
编辑conf/gitolite.conf可以添加repository如

repo    anothertest
        RW+     =   @all

添加用户只需将的公钥添加到keydir就可以了,如果用户有多个公钥,如工作机一个,笔记本一个,可以在keydir下添加目录然后添加key如为tom添加 laptop/tom.pub和workspace/tom.pub即可
修改完成之后commit并push回主机相应的repositoy和user了

在EC2上配置gitlist

用git来管理repository和user很方便,但如果你的老板要查看git上的提交就不那么方便了(:P),通过安装gitlist网页查看就会方便很多
gitlist.org 上下载最新版并完成配置

cd /tmp
wget https://s3.amazonaws.com/gitlist/gitlist-0.4.0.tar.gz
tar -zxf gitlist-0.4.0.tar.gz
mv gitlist /sites/
cd /sites/gitlist
mv config.ini-example config.ini
edit config.ini
    repositories[] = '/data/git/repositories/'
    hidden[] = '/data/git/repositories/gitolite-admin.git' #建议添加,管理目录不必被网页查看
mkdir cache #必须手动添加
chown -Rh www-data:www-data /sites/gitlist

创建site的nginx配置/etc/nginx/sites-available/gitlist

server {
	listen 80;
	server_name gitlist;
	keepalive_timeout 70;

	access_log /var/log/nginx/gitlist-access.log;
	error_log /var/log/nginx/gitlist-error.log;

	root /sites/gitlist;
	index index.php;
	location ~ /include {
	deny all;
	return 403;
	}

	location ~ ^/api/(tickets|tasks)(.*)$ {
	try_files $uri $uri/ /api/http.php;
	}

	location ~ ^/scp/ajax.php/(.*)$ {
	try_files $uri $uri/ /scp/ajax.php;
	}

	location / {
	index index.php;
	try_files $uri $uri/ /index.php?$args;
	}

	location ~ .php$ {
	fastcgi_split_path_info ^(.+.php)(/.+)$;
	include fastcgi_params;
	fastcgi_pass unix:/var/run/php5-admin.sock;
	#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	}
}

如果你此处用的fastcgi_pass是之前用过的那不需要额外的设置,如果没有那需要建立

cd /etc/php5/fpm/pool.d/
cp www.conf gitlist.conf
edit gitlist.conf
    name ->gitlist
    listen ->nginx config 中的

然后重启php5-fpm 和nginx访问你的地址就可以见到gitlist页面了
如果你在第一步设置配置是没有问题,那网页应该就可以正常显示了,如果那时设置的不对那么
编辑 /home/git/.gitolite.rc找到$REPO_UMASK改成0022然后手动设置已有的文件权限 chmod -R 755 /home/git应该就可以了