用git部署网站代码到生产环境VPS
来源:互联网 发布:口型识别的视频数据库 编辑:程序博客网 时间:2024/05/16 15:13
做web开发时,以前都是写好了一个新功能要发布到服务器上都是使用FTP上传覆盖原来的代码,这样做很麻烦,首先要打开FTP程序,然后进入指定文件夹,然后上传,而且用FTP上传经常容易出错总是有个别文件会因为权限或者各种奇葩的原因上传失败。。。。。。用git来部署就不会有这样的问题。
如果你的项目是一个团队在做,可能还需要一个公共仓库如Github或者GitCafe,git.oschina.net,git.csdn.net等,使用他们也可以部署到远程的服务器。方法是,设置GitHub等的hook(国内git网站叫push钩子),它的作用是,每次我们从本地push改变到这些仓库时,这些仓库会向指定连接(例如自己的vps服务器)发生post请求(不止一种请求,但常用post请求,请求的内容也因仓库不同而不同),我们可以设置自己的vps生产服务器一旦接收到这个post请求就开始部署,可以写bash脚本或者Python脚本实现,或者直接网上找别人写好的。
还有另一种方法则是不适用公共仓库来发生hook而是直接使用vps生产服务器来做这些事情(代码管理+部署生产环境的代码),下文便讨论如何实现。
创建自己的仓库
cd /varmkdir git && cd gitmkdir your_site.git && cd your_site.gitgit init --bare
--bare的意思是,该文件夹是我们的代码仓库,它将不会放源代码而只是做版本控制。
Hook钩子
我们将会使用post-receive钩子,更多钩子及含义可以参考git文档 在your_site.git文件夹中
ls
你可以看到有hooks文件夹已经为我们创建好了,而且里面也有各种钩子的样例
cd hooks
创建我们自己的post-receive
cat > post-receive
按回车后提示我们继续输入,接下来输入的动向都会被放入post-receive文件中。
#!/bin/shgit --work-tree=生产环境网站文件夹位置 --git-dir=/var/git/your_site.git checkout -f
输入完成后按ctrl + D
保存,git-dir
指的是仓库的地址, work-tree
则是存放代码的位置,也就是我们的网站的源代码的位置。 接下来则是要保证它可以运行:
chmod +x post-receive
本地
一般情况是你已经有了自己的git项目了,那么只需要添加vps的仓库地址就行了
git remote add myVPS-sitename ssh://user@mydomain.com/var/git/your_site.git
'myVPS-sitename'只是这个远程连接的名称,你可以同时有多个远程连接,每次push的时候指定名称即可将代码上传到不同的仓库。
如果你本地还没有项目代码:
cd 项目地址git init
添加一个README.ME文件后
git add .git commit -m "项目初始"
接下来我们便可以将代码push到vps了:
git push myVPS-sitename master
master
指定的是master分支,如果你有其他分支也可以push其他分支。.
总结
这只是最基本的设置,利用hook结合一些自己编写的脚本我们还可以做很多事情。
==============================================================
- 用git部署网站代码到生产环境VPS
- 用git部署网站代码到生产环境VPS
- github部署到生产环境
- 将Solr5部署到生产环境
- 10_部署到生产环境
- 生产环境部署Solr
- 生产环境部署hadoop
- Vue 生产环境部署
- ruby on rails 部署到生产环境的问题
- laravel5项目部署到生产环境的最佳实践
- vue项目部署到生产环境(Tomcat为例)
- 生产环境中,如何将Kubernetes部署到AWS?
- 简单利用git部署网站到服务器
- eclipse上用bitbucket git管理代码的部署环境
- 用 GIT 把代码部署到服务器上
- Mycat生产实践---生产环境部署
- 使用git部署代码到github
- Git简单应用:部署代码到服务器
- IT忍者神龟之Hibernate的HQL总结
- c标准库头文件的C++版本
- linux中test命令详解
- 第10周项目2 M$pszi$y 含义
- android仿微信引导页面
- 用git部署网站代码到生产环境VPS
- IOS-UIButton
- 谷俊丽:基于大数据的深度学习
- 使用sql更改表的列的数据类型和添加新列和约束
- 跨平台 字符集编码问题 C++ PHP互通字符集的问题
- Android 开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端
- java垃圾回收器GC对性能吞吐量的影响
- Js 获取当前日期时间
- 苹果如何实现 autorelease