ubuntu安装gitweb

一、安装gitweb

sudo apt-get install git git-core gitweb

创建git项目管理文件夹/git

#创建项目管理文件夹
sudo mkdir /git
#设置文件夹用户组为www-data,这点很重要,原因后面会讲
sudo chown yourname:www-data /git

修改git文件夹为/git

sudo gedit /etc/gitweb.conf


#修改git项目存放的文件夹:
# path to git projects (<project>.git)
#$projectroot = "/var/lib/git";
$projectroot = "/git";
...


#开启cgi
sudo a2enmod cgi

访问http://{service}/gitweb即可通过网页游览项目

创建第一个项目

cd /git
git init --bare test.git

二、安装主题

gitweb刚安装上很难看,可以安装漂亮一点的主题美化页面

开源主题:https://github.com/kogakure/gitweb-theme

在git服务器上将这个开源项目克隆下来,根据readme说明执行:

sudo ./setup -vi --install

三、配置路由

使用http://{service}/gitweb的形式访问git服务器不方便,我们需要访问制定站点直接使用,例如:http://git.service.com

方案一:http://git.service.com自动跳转到http://git.service.com/gitweb

#编辑Apache配置
sudo vim /etc/apache2/sites-enabled/000-default.conf
#插入下列配置

<VirtualHost *:80>
        ServerName git.service.com
        ServerAlias git

        DocumentRoot /git
        SetEnv GITWEB_CONFIG /etc/gitweb.conf

        RewriteEngine on
        RewriteRule ^/$ /gitweb [PT]
        RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /gitweb%{REQUEST_URI} [L,PT]

        # Aliases
        #ScriptAlias /gitweb /usr/lib/cgi-bin/gitweb.cgi
        #Alias /gitweb.css /usr/share/gitweb/gitweb.css
        #Alias /git-logo.png /usr/share/gitweb/git-logo.png
        #Alias /git-favicon.png /usr/share/gitweb/git-favicon.png

        # Logfiles
        ErrorLog /var/log/apache2/gitweb.error.log
        CustomLog /var/log/apache2/gitweb.access.log combined
</VirtualHost>

方案二:以http://git.service.com直接访问(推荐)

#<IfModule mod_ssl.c> #开启ssl时开启
<VirtualHost *:80>  #开启ssl时改为443
  ServerName git.service.com
  DocumentRoot /usr/share/gitweb

  # Deny to access to .htaccess etc
  <Files ~ "(^\.htaccess|^.*\.conf)">
    Order allow,deny
    Deny from all
  </Files>

  # OPTIONAL: Completely deny pushing over HTTP
  # <LocationMatch "git-receive-pack">
  #   Order Allow,Deny
  #   Deny from all
  # </LocationMatch>

  <Directory /usr/share/gitweb>
    Options ExecCGI FollowSymLinks
    Order allow,deny
    Allow from all
  </Directory>

  <Location />
    AuthType Basic
    AuthName "Git Repositories"
    AuthUserFile /git/git-auth
    #Require valid-user #开启登录用户验证时开启
    Order allow,deny
    Allow from all
  </Location>

  Options ExecCGI FollowSymLinks
  AddHandler cgi-script cgi

  SetEnv GIT_PROJECT_ROOT /git
  SetEnv GIT_HTTP_EXPORT_ALL
                                                                                                                                     
  # Note: Serve static files directly
  AliasMatch ^/static/(.*)$                                    /usr/share/gitweb/static/$1
  AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$          /git/$1
  AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /git/$1
  # Note: Serve repository objects with Git HTTP backend 
  ScriptAliasMatch \
    "(?x)^/(.*/(HEAD | \
      info/refs | \
      objects/info/[^/]+ | \
      git-(upload|receive)-pack))$" \
    /usr/lib/git-core/git-http-backend/$1
  ScriptAlias / /usr/share/gitweb/gitweb.cgi

  RewriteEngine on
  RewriteRule ^/$ /usr/share/gitweb/gitweb.cgi [L]
  RewriteRule ^/(\w+\.git)$  /?p=$1 [R]

  ErrorLog ${APACHE_LOG_DIR}/git_error.log
  CustomLog ${APACHE_LOG_DIR}/git_access.log combined

#开启ssl时开启,git.service.com改为秘钥所在文件夹,git.service.com或service.com都有可能
#SSLCertificateFile /etc/letsencrypt/live/git.service.com/fullchain.pem
#SSLCertificateKeyFile /etc/letsencrypt/live/git.service.com/privkey.pem
#Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
#</IfModule>

三、网页访问开启用户登录验证

按方案二配置,开启 Require valid-user,重启apache

#进入目录
cd /git
#创建用户登录信息文件
touch git-auth
#新增用户登录信息
sudo htpasswd /git/git-auth username
#根据提示输入两次密码

到这里git服务器已经搭建好,可以做如下访问

web: http://git.vc800.com

git: http://git.vc800.com/test.git

四、网站加密ssl

上一步访问网站,登录用的账户密码是明文传输到服务器,安全性不高,可以安装ssl证书来提高安全性。

可以使用开源免费的第三方ssl证书服务Let's Encrypt

参考网址:

    https加密

    如何使用Ubuntu 16.04上的Let加密保护Apache

    Let’s Encrypt配置免费SSL证书建立HTTPS(Ubuntu+Apache)

    申请Let's Encrypt永久免费SSL证书

    给PowerShell Empire配置一个信任的证书

五、第一个项目test

1.创建第一个项目test

cd /git

#在服务器上创建项目一定要加--bare参数,这样创建的项目只包含.git文件夹下的文件
#即只包含项目提交信息,而不包含项目文件
#这样可以避免在服务器上可以像在本地一样操作项目文件
#从而避免在本地提交master分支修改,同时服务器上有人修改master引起的提交出错
#尤其是团队写作项目更需要注意这点
git init --bare test.git

2.本地拉取服务器上的项目

git clone https://git.ljyme.com/test.git

#会有如下提示:
正克隆到 'test'...
warning: 您似乎克隆了一个空仓库。
#但不要紧,这本就是一个空仓库

3.本地修改项目文件推送到服务器

cd test #进入项目
echo "hellow world!">index.html #创建文件并写入内容
git add * #将修改添加到暂存区
git commit -m "add" #将更改记录(提交)到存储库
git push  #将修改推送到服务器

注意:

如果你在创建/git文件夹时没有修改用户组,在推送代码时可能会有如下报错:

~$ git push
对象计数中: 3, 完成.
写入对象中: 100% (3/3), 219 bytes | 219.00 KiB/s, 完成.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: 远程解包失败:unpack-objects abnormal exit
To http://git.service.com/test.git
 ! [remote rejected] master -> master (unpacker error)
error: 无法推送一些引用到 'https://git.service.com/test.git'

这是因为服务器上的test项目文件夹没有写入权限的原因

#使用chown命令修改文件夹及子文件(夹)用户组
sudo chown -R yourname:www-data test.git
#结果:
drwxrwxr-x  7 yourname  www-data 4096 Oct 12 00:22 test.git/

#为了一捞永益的解决这个问题,可以直接修改git文件夹的用户组
sudo chown -R yourname:www-data /git

六、免密码使用ssh

在客户端上正常使用git的clone、push和pull功能时,需要每次输入服务端的密码(git是使用ssh协议传输数据的),这里有两种方式实现免密码。

方案一:使用.netrc文件实现免输入密码(简单)

cd ~
touch .netrc
vim .netrc
#插入下列登录信息,保存即可
machine git.service.com
login yourname
password yourpassowrd

#window用户请到C:Users/your_pc_username下创建_netrc文件夹并添加登录信息

#.netrc方法实际上是以ftp形式登录服务器下载文件的

方案二:使用ssh公钥验证(麻烦一点)

在服务器端设置了客户端的ssh公钥,可以免密码在客户机上使用git(注意,与第三步的gitweb网页用户名和密码没有任何关系)

1、在客户端生成rsa公钥:

ssh-keygen -t rsa -C "<你的邮箱地址>"
这里的邮箱地址可以随意输入,和~/.gitconfig文件中设置的邮箱没有任何关系,也不影响免密功能。
一路回车键确定后,会在~/.ssh目录下生成id_rsa、id_rsa.pub文件,这个id_rsa.pub文件即为公钥。

2、复制id_rsa.pub文件中的内容,将其粘贴到服务器端~/.ssh/authorized_keys文件中。若不存在这个文件,则使用vi编辑器新建并粘贴客户端公钥,多个客户端公钥请使用换行隔开。之后使用git将不再提示输入密码了。

3、删除服务器端authorized_keys文件中的某客户机ssh公钥后,该客户机可能也无法直接使用ssh用户名和密码来操作git,这时候只需要删除客户机端的~/.ssh/known_hosts文件即可正常使用ssh用户名密码了。

4.这时候clone服务器项目的地址有所改变

git clone yourname@git.service.com:/git/test.git
#yourname是服务器登录名

 

参考网址:

GitWeb学习笔记:https://blog.csdn.net/fromcaolei/article/details/78530059?locationNum=4&fps=1

转载于:https://my.oschina.net/u/3552749/blog/2245315

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值