我正在使用github来控制我的web应用程序的源代码,但在我的实时服务器上部署它时遇到了问题。当我在repo中有稳定的代码时,我想ssh到服务器和git pull origin master
上。问题是我有两个文件夹,它们位于服务器上的不同位置。
# Bolded to be version controlled
/var
**/var/ci** <- php framework
/var/www/
**/var/www/webapp1**
/var/www/webapp2
我的问题是:有没有一种方法可以设置它,这样之后我只需要git hub pull origin master
,它就会将最新的代码抓取到两个目录中?
一个解决方案,尽管牺牲了轻松和安心,但应该在服务器上的不同位置设置一个repo,但使用bash脚本来替换web应用程序。这会引起什么问题吗?
#/bin/bash
#Disclaimer: pseudo code
`git pull origin master`
`rm -rf * /my/live/frameworks`
`cp -f /my/git/repo/frameworks /my/live/frameworks
`rm -rf * /my/live/web_root`
`cp -f /my/git/repo/web_root /my/live/web_root
我可以看到上面方法的一些问题:
- 应用程序升级不顺利
- 正在丢失缓存的模板和其他临时文件。我可以在
rm -rf
上添加一个过滤器,但这种方法对我来说太难了
如果你拥有一个网络服务器,并像我一样通过从回购设置中提取最新代码来管理它,你能提供一些关于我应该如何做到这一点的提示吗?非常感谢。
如果你打算用这种方式管理它,你可以使用符号链接从实际的web公开目录链接到git项目。
以下是描述该技术的完整答案。