完善中。。。
首先要说明的是:
目前这个程序的安装比较麻烦,也不是很优雅,希望各位高手能参与优化下 ;)
配置这个程序前最好是对 linux,python,django 和 git 比较熟悉
服务器需求:
操作系统:
我目前只在linux上测试过,不过类似unix的系统应该都可以,windows估计就不行了。。
数据库:
目前就在mysql上试过。
python:
版本在2.5或以上吧
所需的python库:
django 最好从1.2开始吧,以后升级到1.3可能也方便点。
gitosis 主要用这个库做git在ssh访问时的一些验证等功能。
建议安装这些东西和gitube前,先新建一个virtualenv环境,所有相关的东西都装到这个virtualenv里面,这样后面的配置会方便许多。
配置文件:
clone下代码后,进入gitube的目录,将localsettings.py.example改名为 localsettings.py,然后打开。
一些django框架的配置就不说了。
# the host for git repos
GIT_HOST = 'localhost'
这个是主机的地址,一般就是用来安装这个程序的主机ip或域名,是以后git glone所用到的地址。
# ssh login user
SSH_USER = 'git'
用于服务git仓库的linux用户名,这里推荐就在服务器上新建一个名为'git'的linux账户,然后这里就用'git',后面会有说明。
# The repos base path in the $HOME, all repos will put
# to this path
REPO_BASE_PATH = 'repositories'
git仓库所在的目录,这个目录路径相对于上面所设置的linux用户的家目录,同样推荐保持默认不变,后面也会有说明。
测试运行web端
仅仅将gitube的web页面跑起来还是比较简单的,运行下面的代码:
安装数据库: ./manage.py syncdb
导入数据初始数据: ./manage.py loaddata fixture.json
运行测试服务器: ./manage.py runserver
不出意外的话,现在访问 http://127.0.0.1:8000/ 应该可以看到页面,并且可以尝试用openid登陆下看看。
但是目前系统还不可用,还需要进行进一步配置。
配置系统用户与gitosis
linux用户
gitube使用常见的ssh方式传输git仓库中的内容,来做到clone,push,pull等操作,所以首先要为服务器建立一个用户来专门服务与git仓库。
这里建议新建的linux用户名就叫"git",可以参考这篇文章里的新建用户命令:
sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
然后到 git用户目录新建一些东西:
~git/repositories/ 目录,用户和组为git,要让git用户有读写权限。
~git/gitosis/projects.list 这个gitosis目录和里面的projects.list文件是给gitosis用的,因为调用 gitosis里的程序时如果发现没这个文件可能会报错- -,projects.list是一个空文件就可以。
~git/.ssh/authorized_keys 存放用户公钥的文件,熟悉linux的朋友应该都很熟悉这个文件了,注意文件权限,只能让git用户有读写权限(600)。
针对git这个linux用户的python配置
就快好了,还有一点点工作 - -
把 gitube中的 gitube/tools/serve.py 复制或链接到 /usr/local/bin/gitube-serve 并且要让git用户有可执行权限。
确保gitube和django以及相关的一些python库在git用户的PYTHONPATH中。
如果你之前将所有相关的东西都装到了一个virtualenv中的话,就比较好办了,编辑刚才生成的 /usr/local/bin/gitube-serve 文件,在文件头部加入下面的代码:
import
site.addsitedir('/home/harry/.virtualenvs/geckos/lib/python2.6/site-packages/')
site.addsitedir里传入的字符窜改成你的virtualenv路径。
然后以git用户身份运行gitube的web程序,因为在web界面编辑用户公钥的时候要对~git/.ssh/authorized_keys进行写入操作。
测试的时候可以用 sudo su git -c "./manage.py runserver" 这个命令来运行测试服务器。
一切顺利的话,就可以登陆后,点击右上角的用户名链接 -> 管理公钥 添加ssh公钥匙,然后回到首页 新建项目->新建仓库 后,会得到git仓库路径,尝试向这个路径push代码测试看看是否能成功。
nginx + uwsgi + supervisor
supervisor 配置:
[program:gitube]
command=/usr/local/bin/uwsgi
--home /home/user/.virtualenvs/gitube
--module gitube.wsgi
--socket /tmp/gitube.sock
--processes 1
--master
--python-path /path/to/gitube
--chmod 666
user=git
autostart=true
autorestart=true
stopsignal=QUIT
nginx 配置
server {
listen 80;
location /media {
alias /home/user/.virtualenvs/gitube/lib/python2.6/site-packages/django/contrib/admin/media;
}
location /static {
alias /path/to/gitube/gitube/static;
}
location / {
include uwsgi_params;
uwsgi_pass unix:///tmp/gitube.sock;
}
}
待改进
由于我本人都很长时间没完整的配置过一次这个程序了,最近才开始写文档,可能会有错误或遗漏,如果朋友们在配置过程中发现错误,请联系我,我会及时更正文档内容。
另外也非常希望有朋友能加入一起开发,改进安装过程,最好是能有一个python的setup脚本,实现傻瓜式的安装,由于我本人还没有怎么研究过python的setuptools,所以大家有兴趣的就来fork吧 ;)