当前位置:  开发笔记 > 编程语言 > 正文

git/github和Web服务器部署配置

如何解决《git/github和Web服务器部署配置》经验,为你挑选了1个好方法。

我正在运行一个Apache Web服务器,并想知道将更改(从github)部署到Web服务器的最佳方法是什么?

/ var/www /现在只能由root写入.

我应该直接在/ var/www /中使用我的git项目吗?(所以创建/var/www/.git/?)

但是,当我需要运行命令(即sudo git push)时不起作用(因为我的ssh键不在sudo下).

我自己(而不仅仅是root)制作/ var/www/writable会更好吗?或者我应该向root用户添加ssh密钥?或者我应该完全做其他事情?

谢谢.



1> ma11hew28..:

我使用rsync将本地计算机的内容与服务器同步,如果你只是部署到一台服务器,那么它非常简单(而且Capistrano有点过分.).我把以下别名放在~/.bash_profile:

alias eget='rsync -avie ssh matt@example.com:sites/example.com/www/ ~/Projects/example/example.com/www/ --exclude .DS_Store --exclude ".git*" --delete-after'
alias edep='rsync -avuie ssh ~/Projects/example/example.com/www/ matt@example.com:sites/example.com/www/ --exclude .DS_Store --exclude ".git*" --delay-updates --delete-after'

然后,从我本地机器上的git repo.我做:

git commit -am 'commit some changes'
git pull --rebase # pull any new changes from remote (--rebase prevents an unnecessary merge commit.)
eget -n # confirm which files I've changed

如果它看起来很腥,我可以eget不用-n然后做一个git diff -w.然后,我可以git checkout -- path/to/file为我想要保留更改的文件做.然后,我提交了我尚未获得的服务器上的更改.只有当服务器上的文件以不同于部署的方式更改时,才会发生这种情况.否则,您知道本地版本总是比服务器上的文件更新,因此不必担心覆盖您本地尚未拥有的服务器上的内容.继续...

edep -n # just see what files will be deployed/updated/etc.
edep # looks good. Deploy for real.

完成!

有关详细信息,请查看rsync(1)Mac OS X手册页.

另一种选择是使用Git post-receive hook.但是,你必须在服务器上安装Git才能做到这一点.此外,出于安全性和清洁原因,我建议将.git目录放在公共www目录之外.您可以使用Git core.worktree配置选项执行此操作.例如,从~/git/example.com.git,做git init --bare; git config core.worktree ~/sites/example.com/.这~/git/example.com.git就像.gitdir 一样~/sites/example.com/.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有