因此,我正在创建一个系统来管理位于特定文件夹中的所有 drupal 网站(可以在此文件夹中创建新网站)。
下一步是创建一种允许用户将网站恢复到先前版本的方法。
我的解决方案?创建一个本地“git 服务器”,并为我的系统上执行的每个操作(例如:更新/安装模块、升级核心等)创建该站点的新版本。
我创建了一个“git”用户,负责在/~/gitrepos/
. 对于每个新网站,我使用sudo -u git
apache 用户 (www-data) 来运行mkdir
和git init --bare
. 我目前能够创建新文件夹并在这些文件夹上初始化 git 存储库。
但是当我尝试将网站更改推送到这些存储库时,我得到“权限被拒绝”。
当检测到新站点时,我执行以下操作:
- 创建存储库 [使用 www-data 和
sudo -u git
]mkdir
和git init
- 初始化网站目录上的 git 存储库(.git 文件夹)[使用 www-data]
git init
- 将文件添加到提交队列 [使用 www-data]
git add *
- 提交更改以填充新创建的存储库 [使用 www-data]
git commit -m 'msg'
- 添加存储库的远程地址 [使用 www-data]
git remote add origin ssh://git@localhost/path/to/repo/
- 推送更改 [使用 www-data]
git push -u origin master
现在我被困在这一步,因为我总是得到“权限被拒绝”。
我有什么方法可以将更改推送到本地“git 服务器”而无需进行身份验证?
或者,我应该创建哪些 ssh 密钥来启用 www-data 将更改推送到本地“git 服务器”?
我真的迷路了,如果有人有一步一步的方法来设置一个本地“git 服务器”,www-data 用户可以在其中推送,那就太好了。
注意: www-data 的主目录是/var/www/
,因此在此目录中存储 ssh-key 不是一个好主意
是的,在问这里之前,我至少花了 4 个小时试图弄清楚这一点。
我试图遵循的一些资源:
- http://www.hackido.com/2010/01/installing-git-on-server-ubuntu-or.html
- http://toroid.org/ams/git-website-howto
- http://pthree.org/2008/11/28/setup-a-git-repository/
- 基于 Git 的网站部署工作流程
- http://tumblr.intranation.com/post/766290565/how-set-up-your-own-private-git-server-linux
- http://blogs.gurulabs.com/aaron/2008/11/setup-a-git-repository.html
我引用“git server”的原因是因为没有 git server这样的东西。
引自http://blogs.gurulabs.com/aaron/2008/11/setup-a-git-repository.html:
换句话说,没有“git 服务器”和“git 客户端”之类的东西。Git 是由文件系统开发人员开发的,考虑到文件系统属性。因此,相反,我们有一个称为“源”的远程 Git 存储库和一个本地 Git 存储库 (...)