AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 12647
Accepted
Praweł
Praweł
Asked: 2010-11-12 03:42:15 +0800 CST2010-11-12 03:42:15 +0800 CST 2010-11-12 03:42:15 +0800 CST

设置一个 git 服务器

  • 772

我最近在 Amazon EC2 上设置了 ubuntu-server。我想用它作为我的 git 服务器,所以我可以在那里存储我的 repos。

那么,我在哪里可以找到一些关于如何在 ubuntu 服务器上设置 git 的详细说明?所有这些 SSH 密钥和类似的东西、多个用户等。

server git
  • 8 8 个回答
  • 131363 Views

8 个回答

  • Voted
  1. Best Answer
    Huygens
    2010-11-12T13:30:26+08:002010-11-12T13:30:26+08:00

    您可以按照 aking1012 的建议使用本教程安装 Git 服务器,也可以只在 EC2 实例上安装 SSH 服务器(保护它并更改默认端口可能是明智之举)。

    Git 可以是无服务器的,您可以初始化存储库,然后通过 SSH 从远程访问它。所以在 Ubuntu 服务器上这样的指令应该这样做:

    GIT_DIR=project.git git init  
    cd project.git  
    git --bare update-server-info  
    cp hooks/post-update.sample hooks/post-update
    

    最后在你的服务器上安装 SSH:

    sudo apt-get install ssh-server
    

    现在,您应该配置 SSH 来保护它。

    是时候让你的项目上线了(你的开发机器上已有的数据):

    git push ssh://<username>@<remote-git-hostname>/path/to/project.git master
    

    现在你可以开始克隆了。你继续你的开发机器:

    git clone ssh://<username>@<remote-git-hostname>/path/to/dir.git
    

    在 Git 上查看这个优秀的资源。

    为了生成您的 ssh 密钥以进行更安全的身份验证,您可以阅读这篇关于SSH 身份验证的文章。

    • 38
  2. Marco Ceppi
    2011-02-08T06:46:27+08:002011-02-08T06:46:27+08:00

    对于我所有的 Git 服务器设置,我使用Gitolite,它允许“每个分支”访问的安全粒度。如果您在远程服务器上进行设置,则设置非常简单,就像运行交互式脚本一样简单。除了这种“易于设置”的特性之外,它还有一个 Natty 和 Maverick 包

    sudo apt-get install gitolite
    

    这不会提供像 Github 或 Gitweb 这样的 Web 前端 - 但您可以轻松地在 Gitolite 之类的东西之上配置和安装它们。

    • 15
  3. Li Lo
    2010-11-13T08:59:52+08:002010-11-13T08:59:52+08:00

    我喜欢gitolite。Pro Git 这本书有一节,但我建议阅读整本书。

    至于您的多用户要求:

    Gitolite 允许您不仅通过存储库(如 Gitosis 所做的那样)指定权限,还可以通过每个存储库中的分支或标签名称来指定权限。也就是说,您可以指定某些人(或人群)只能推送某些“引用”(分支或标签),而不能推送其他人。

    • 9
  4. RobotHumans
    2010-11-12T04:38:02+08:002010-11-12T04:38:02+08:00

    http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way可以稍微修改以适合您的目的...类似的教程http://blog .agdunn.net/?p=277。

    • 7
  5. chris
    2011-02-08T07:25:36+08:002011-02-08T07:25:36+08:00

    一定要遵循官方文档:https ://help.ubuntu.com/community/Git (设置 Git 和项目管理部分)

    • 6
  6. Praweł
    2010-11-17T07:25:43+08:002010-11-17T07:25:43+08:00

    最适合我的解决方案是设置 WebDAV。

    • sudo a2enmod sudo dav_fs

    • sudo a2enmod dav

    • 添加新文件/etc/apache2/sites-available并为其命名,例如git.yourserver.com. 编辑它并添加以下行:

    <VirtualHost *:80>

    DocumentRoot /var/www/git.yourserver.com/repos
    ServerName git.yourserver.net
    Options Indexes FollowSymLinks MultiViews
    
    <Location />
        DAV On
        AuthType Basic
        AuthName "git repos"
        AuthUserFile /var/www/git.yourserver.net/password.dav
        Require valid-user
    </Location>
    

    </VirtualHost>

    • 在 id 中创建目录/var/www/git.yourserver.com和目录repos
    • sudo chown www-data /var/www/git.yourserver.com/repos
    • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login并为名为的用户输入密码user_login
    • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
    • sudo chmod 640 /var/www/git.yourserver.com/password.dav

    现在,sudo a2ensite git.yourserver.com和sudo service apache2 restart。

    • 输入/var/www/git.yourserver.com/repos并创建目录,例如,myrepo.git
    • cd myrepo.git
    • git --bare init
    • git update-server-info

    现在,从远程服务器注销并转到要在其中编辑文件的本地目录。

    git clone http://user_login:[email protected]/myrepo.git
    

    你已经完成了。如果要将提交的更改发送到服务器:

    git push origin master
    

    您可以使用sudo htpasswd. 只要记住不要使用-cswitch,添加更多用户时,因为旧文件会被删除。

    • 4
  7. Vitali Carbivnicii
    2011-01-12T14:41:25+08:002011-01-12T14:41:25+08:00

    使用gitolite很容易实现。在不到一个小时的时间内,您将拥有易于配置且安全的多用户 git 服务器。

    我的网站上有一篇操作指南文章

    • 3
  8. Eric Hammond
    2011-04-16T13:13:22+08:002011-04-16T13:13:22+08:00

    我也喜欢管理用户和安全性的gitolite方法。我有一个当前正在测试的 EC2 的 Git + gitolite 服务器 AMI。随意尝试一下;文档可在此处获得:

    Alestic Git 服务器

    使用这种方法,您可以在几分钟内拥有一个带有私有存储库的中央 Git 服务器。如果您不熟悉 gitolite 和 EC2,则有一个学习曲线。

    • 3

相关问题

  • 使用 dpkg 手动安装软件包是否会阻止未来的升级路径?

  • 如何从命令行刻录双层 dvd iso

  • 如果在服务器机器上运行 Ubuntu 桌面版,性能损失是多少?

  • 将桌面版剥离为服务器版的最简单方法是什么?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve