【问题标题】:Making www-data push to local git repo将 www-data 推送到本地 git repo
【发布时间】:2012-06-21 05:49:18
【问题描述】:

所以,我正在创建一个系统来管理位于特定文件夹中的所有 drupal 网站(可以在此文件夹中创建新网站)。

下一步是创建一种允许用户将网站恢复到以前版本的方法。

我的解决方案?创建一个本地“git 服务器”,并为我的系统上执行的每个操作(例如:更新/安装模块、升级核心等)创建该站点的新版本。

我创建了一个“git”用户,负责在/~/gitrepos/ 上创建存储库。对于每个新网站,我在 apache 用户 (www-data) 中使用 sudo -u git 来运行 mkdirgit init --bare。我目前能够创建新文件夹并在这些文件夹上初始化 git 存储库。

但是当我尝试将网站更改推送到这些存储库时,我得到“权限被拒绝”。

当检测到新站点时,我会执行以下操作:

  1. 创建存储库 [使用 www-data 和 sudo -u git]
    • mkdirgit init
  2. 初始化网站目录下的git仓库(.git文件夹)[使用www-data]
    • git init
  3. 将文件添加到提交队列 [使用 www-data]
    • git add *
  4. 提交更改以填充新创建的存储库 [使用 www-data]
    • git commit -m 'msg'
  5. 添加存储库的远程地址 [使用 www-data]
    • git remote add origin ssh://git@localhost/path/to/repo/
  6. 推送更改 [使用 www-data]
    • git push -u origin master

现在我被困在这一步,因为我总是得到“权限被拒绝”。

我有什么方法可以将更改推送到本地“git 服务器”而无需进行身份验证?

或者,我应该创建哪些 ssh-key 以使 www-data 能够将更改推送到本地“git 服务器”?

我真的迷路了,如果有人有一步一步的方法来设置一个本地“git 服务器”,www-data 用户可以在其中推送,那就太好了 .

注意:www-data 的主目录是/var/www/,因此在此目录中存储 ssh-key 不是一个好主意


是的,我已经花了至少 4 个小时试图弄清楚这一点,然后才在这里提问。

我尝试关注的一些资源:


我之所以引用“git server”是因为没有 git server 这样的东西。

引自http://blogs.gurulabs.com/aaron/2008/11/setup-a-git-repository.html

换句话说,没有“git 服务器”和“git 客户端”之类的东西。 Git 是由文件系统开发人员开发的,考虑到文件系统属性。因此,相反,我们有一个称为“源”的远程 Git 存储库和一个本地 Git 存储库 (...)

【问题讨论】:

    标签: php linux git drupal hosting


    【解决方案1】:

    解决方案:

    假设:

    • 您的www-data 主目录是/var/www/
    • 将处理所有 git 命令的用户是 gituser

    步骤:

    要让www-data 用户将更改推送到 git 存储库而无需输入密码,只需:

    • 为 www-data 用户创建一个新的 ssh-key
      • www-data:~$ ssh-keygen -t rsa
      • 每个问题都按enter(密码留空)
    • 将新创建的 ssh-key 添加到 /home/gituser/.ssh/authorized_keys
      • gituser:~$ touch ~/.ssh/authorized_keys
      • gituser:~$ chmod 0600 ~/.ssh/authorized_keys
      • gituser:~$ cat /var/www/.ssh/id_rsa.pub >> /home/gituser/.ssh/authorized_keys

    其背后的想法是将www-data 的ssh-key 添加到gituser 的“受信任”密钥中。之后,www-data 将能够通过 ssh 连接到服务器并以gituser 身份验证,而无需输入密码。

    请记住,git 需要 ssh 访问服务器(至少在我所在的环境中)。

    这可能会有所帮助:http://www.linuxproblem.org/art_9.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-25
      • 2022-11-30
      • 2015-06-25
      • 1970-01-01
      • 2015-01-05
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多