所以,我正在创建一个系统来管理位于特定文件夹中的所有drupal网站(可以在此文件夹中创建新网站)。
下一步是创建一种方法,允许用户将网站还原为先前版本。
我的解决方案?创建一个本地“git服务器”,并为我的系统上的每个操作(例如:更新/安装模块,升级核心等)创建该网站的新版本。
我创建了一个“git”用户,负责在/~/gitrepos/
上创建存储库。对于每个新网站,我在apache用户(www-data)中使用sudo -u git
来运行mkdir
和git init --bare
。我现在能够创建新文件夹并在那些文件夹上初始化git存储库。
但是当我尝试将网站更改推送到这些存储库时,我得到“权限被拒绝”。
检测到新网站时,我会执行以下操作:
sudo -u git
创建存储库
mkdir
和git init
git init
git add *
git commit -m 'msg'
git remote add origin ssh://git@localhost/path/to/repo/
git push -u origin master
现在我坚持这一步,因为我总是得到“许可被拒绝”。
我有什么方法可以将更改推送到本地“git服务器”而无需进行身份验证?
或者,我应该创建哪些ssh-keys以使www-data能够将更改推送到本地“git服务器”?
我真的迷失在这里,如果有人一步一步地设置本地“git服务器”,其中www-data用户可以推送,那就太棒了
注意:www-data的主目录是/var/www/
,因此将ssh-key存储在此目录中不是一个好主意
是的,在问这里之前,我花了至少4个小时试图解决这个问题。
我试图遵循的一些资源:
我引用“git服务器”的原因是因为没有git 服务器这样的东西。
引自http://blogs.gurulabs.com/aaron/2008/11/setup-a-git-repository.html:
换句话说,没有“git服务器”和“git客户端”这样的东西。 Git是由文件系统开发人员开发的,其中考虑了文件系统属性。所以,相反,我们有一个远程Git存储库,我们称之为“origin”和本地Git存储库(...)
答案 0 :(得分:1)
<强>假设:强>
www-data
主目录为/var/www/
gituser
<强>步骤:强>
要使www-data
用户将更改更改为git repo而无需输入密码,只需:
www-data:~$ ssh-keygen -t rsa
enter
查看每个问题(保留密码为空白)/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访问服务器(至少在我所处的环境中)。