使用git代替FTP部署代码到服务器的例子
本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和scp的时候为了方便我们通过还要tar或者zip一下, 这些做法也很不错,但是它有一些问题
1.全部更新,不管某些文件是否修改,都要重新传一下服务器,浪费时间与流量
2.多台服务器的重复上传
3.代码更新后,后续的一些操作不够自动化
上面的问题可以通过ssh直接远程执行命令来解决,但是需要写一些shell脚本, 有没有更简单更高效的方法呢?有,那就是使用版本版本管理工具的hook!
这里我说是版本管理工具而不是git,是因为svn、git、hg都是有相应的hook的, 原理大同小异。下面是Git详细的思路。
服务器端操作
首先创建一个裸库,为什么是裸库?因为这个库不是真正用来修改的,我们也不允许在服务器上修改代码,我们只是把它当作一个代码中转的地方:
cd gitroot
mkdir projectname
cd projectname
git init --bare
添加我们的hook
cd /hooks
touch post-receive
编辑post-receive的内容为下面的,其中sites/projectname,是我们存放网站代码地方
env -i git archive master | tar -x -C /sites/projectname
echo "远程更新完毕"
本地git的操作
本地我们只需要添加一个远程库,在需要部署的时候push到远程库就行了,下面我们添加了一个名为publish的远程库
git remote add publish username@xx.xx.xx.xx:/home/gitroot/projectname
git push publish master
可以强化的地方
这里演示的是一个简单的小网站的部署过程,复杂的情况下我们还可以添加静态资源版本更新,服务器重启等等,举一反三, 最大程序自动化我们的工作。
相关推荐
-
详解在CentOS下搭建自己的Git服务器
首先需要装好CentOS系统,作为测试,你可以选择装在虚拟机上,这样比较方便.这步默认你会,就不讲了. 有了CentOS,那么如何搭建Git服务器呢? 1.首先需要安装Git,可以使用yum源在线安装: [root@localhost Desktop]# yum install -y git 2.创建一个git用户,用来运行git服务 # adduser git 3.初始化git仓库:这里我们选择/data/git/learngit.git来作为我们的git仓库 [root@localhost
-
Git 删除远程服务器文件同时保留本地文件实例详解
Git 如何删除远程服务器文件同时保留本地文件 在上传工程到git上时,有时候会把本地的一些eclipse配置文件传到服务器上,这时你先删除本地,再同步服务器,显然是不合理的.git提供了一个好的解决方法,可以直接删除服务器文件,同时不影响本地文件,命令如下 git rm --cached filename/-r directory git commit "xxxx" git push 1.删除服务器文件,本地保留 git rm --cached useless.log git com
-
在Linux下搭建Git服务器步骤
环境: 服务器 CentOS6.6 + git(version 1.7.1) 客户端 Windows10 + git(version 2.8.4.windows.1) ① 安装 Git Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git 服务器端: #yum install -y git 安装完后,查看 Git 版本 [root@localhost ~]# git --version git version 1.7.1 客户端: 下载 Git for Windows
-
在Linux下搭建Git服务器的方法详解
前言 GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 我打算自己搭建git服务器.虽然目前已经有很不错的git工具,如github,coding.net等,但是为了安全,减少限制和开销,还是放在自己的服务器为好.下面给出安装配置的过程,有问题欢迎讨论和交流,我会及时回复的. 第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不
-
Git 教程之服务器搭建详解
Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用. 接下来我们将以 Centos 为例搭建 Git 服务器. 1.安装Git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git 接下来我们
-
一键备份gitolite服务器的Shell脚本
运行一次就能够把gitolite服务器上的仓库备份到本地. 第一次运行会创建远程仓库的本地镜像, 以后每次运行会把本地镜像更新. 本程序只支持 ssh方式 其他的git server貌似不会在 ssh git@xxx 的时候返回repo列表, 所以只能手动备份. #!/bin/sh server=serv_addr root_dir=`pwd` echo "whill back in dir: ${root_dir}" ssh "git@${server}" | a
-
在DigitalOcean的服务器上部署flaskblog应用
在DigitalOcean上部署了flaskblog,项目虽小,部署中也学到了很多东西. 操作系统选择的是Ubuntu14.04,原因就是平时自己主要使用这个版本,顺手而已,所以你自己可以根据需要选择合适的linux版本. 部署方案: Virtualenv+Gunicorn+Nginx+Supervisor 从这里下载项目的代码flaskblog, 工程中带有简单的配置文件参考. 可以先访问flaskblog看一下. 注意 本文中使用Ubuntu14.04 64位主机, 创建一个名为xin的用户
-
阿里云Linux-CentOS系统下-搭建Git服务器详解
阿里云Linux-CentOS系统下-搭建Git服务器 步骤总结: 1. 安装git 首先确认服务器是否安装Git 在Xshell中输入命令:$ rpm -qa git 结果如下表示已经安装: 如果未安装就安装git 在Xshell中输入:$ yum install git 2. 创建一个git用户,用来运行git服务: 在Xshell中输入:$ sudo adduser git 此时在阿里云服务器的根目录:/home文件夹下新增一个文件夹git 按这个层级建立文件用于存放客户端用户的公钥:/
-
详解在Linux下搭建Git服务器
众所周知,版本系统在开发环境中是必不可少的,但是我们可以把代码免费的托管到GitHub上,如果我们不原意公开项目的源代码,公司又不想付费使用,那么我们可以自己搭建一台Git服务器,可以用Gitosis来管理公钥,还是比较方便的. 搭建环境: 服务器 CentOS6.6 + git(version 1.8.3.1) 客户端 Windows10 + git(version 2.11.1.windows.1) 1. 安装Git相关软件 Linux是服务器端系统,Windows作为客户端系统,分别安装G
-
使用git代替FTP部署代码到服务器的例子
本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和scp的时候为了方便我们通过还要tar或者zip一下, 这些做法也很不错,但是它有一些问题 1.全部更新,不管某些文件是否修改,都要重新传一下服务器,浪费时间与流量 2.多台服务器的重复上传 3.代码更新后,后续的一些操作不够自动化 上面的问题可以通过ssh直接远程执行命令来解决,但是需要写一些shell脚本, 有没有更简单更高效的方法呢?有,那就是使用版本版本管理工具的hook! 这里我说是版本管理工具而不是g
-
详解将Web项目War包部署到Tomcat服务器基本步骤
1. 常识: 1.1 War包 War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码. 当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布. War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动,它可以自动被解压. 1.2 Tomcat服务器 Tomcat服务器是一个免费的开放源代码
-
详解Node项目部署到云服务器上
本篇介绍了Node项目部署到云服务器上,小编觉得不错,分享给大家,具体如下: Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用.Node.js 的包管理器 npm,是全球最大的开源库生态系统.典型的应用场景包括: 实时应用:如在线聊天,实时通知推送等等(如socket.io) 分布式应用:通过高
-
Python Web程序部署到Ubuntu服务器上的方法
在本文记录了我在Ubuntu中部署Flask Web站点的过程, 其中包括用户创建.代码获取.Python3环境的安装.虚拟环境设置.uWSGI启动程序设置,并将Nginx作为前端反向代理.希望对各位有所帮助. 建立一个Python Web程序专用账户 adduser haseo vim /etc/sudoers #将haseo用户加入导sudo用户清单中 sudo usermod -a -G www-data haseo 安装Python3并配置程序运行环境 1.更新Ubuntu的软件库 su
-
Spring boot项目部署到云服务器小白教程详解
本篇文章主要介绍了Spring boot项目部署到云服务器小白教程详解,分享给大家,具体如下: 测试地址:47.94.154.205:8084 一.Linux下应用Shell通过SSH连接云服务器 //ssh 用户名@公网IP ssh josiah@ip // 输入密码 二.开始搭建SpringBoot的运行环境 1.安装JDK并配置环境变量 1) 打开JDK官网 www.oracle.com 2) 找面最新对应的JDK版本,下载 这里要注意的一个问题是:云服务器下载JDK时一定要在本地去ora
-
vue 打包后的文件部署到express服务器上的方法
vue 简介 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. vue是目前最流行的前端框架,今天要介绍的是如何利用vue+webpack+express的方式进行前后端分离的开发. 1.首先用vue-cli初始化项目目录 vue init webpack pro-name cd pro-name && npm ins
-
sftp和ftp 根据配置远程服务器地址下载文件到当前服务
废话不多说,关键代码如下所示: package com.eastrobot.remote; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.e
-
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
最近一个项目部署到Linux服务器上去的时候,发现某些模板竟然会报错说"模板不存在:/Application/Admin/...." 检查了服务器上的文件,并没有缺少文件,再次上传文件到服务器,还是报错.莫名其妙,怀疑是代码问题. 仔细检查后,发现是模板的文件名问题: 用过TP的都知道:thinkphp会在$this->display()的时候,会自动获取方法名作为模板的文件名,比如一个getUserInfo方法对用着getuserinfo.html的模板文件. 对控制器里的方法
-
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
前言 硬要说这篇文章怎么来的,那得先从那几个吃野味的人开始说起-- 前天睡醒:假期还有几天:昨天睡醒:假期还有十几天:今天睡醒:假期还有一个月-- 每天过着几乎和每个假期一样的宅男生活,唯一不同的是玩手机已不再是看剧.看电影.打游戏了,而是每天都在关注着这次新冠肺炎疫情的新闻消息,真得希望这场战"疫"快点结束,让我们过上像以前一样的生活.武汉加油!中国加油!! 本次爬取的网站是丁香园点击跳转,相信大家平时都是看这个的吧. 一.准备 python3.7 selenium:自动化测试框架,
-
.Net Core WebApi部署到Windows服务器上的步骤
上一篇学习到了如何简单的创建.Net Core Api和Swagger使用,既然写了接口,那么就需要部署到服务器上才能够正式使用.服务器主要用到了两种系统,Windows和Linux,.Net和Windows都是属于微软爸爸的,那么这一篇就先从部署到Windows服务器系统开始吧. 一.准备服务器 首先,我们需要一台装了Windows Server的云服务器,但是我没有.那么,到这里就结束了.(╮( ̄▽ ̄)╭开玩笑的) 言归正传,我们没有云服务器怎么办,那当然是要买一台了.有人会说有点贵,确实,
随机推荐
- Linux Shell中三种引号的用法及区别
- 正则表达式中的"g"是什么意思附件参数g的用法
- Eclipse 使用Maven构建SpringMVC项目
- php魔术函数__call()用法实例分析
- Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
- C++数据结构之文件压缩(哈夫曼树)实例详解
- SQL中的left join right join
- SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
- jQuery zTree加载树形菜单功能
- 深入理解jQuery中live与bind方法的区别
- js仿百度贴吧验证码特效实例代码
- 详解java枚举用法及实例
- 关于批量导入域名到管理平台的说明
- Java中final变量使用总结
- 浅谈java内存管理与内存溢出异常
- Android 实时监测(监听)网络连接状态变化
- 用python 批量更改图像尺寸到统一大小的方法
- Java实现的对称加密算法AES定义与用法详解
- UGUI轮播图组件实现方法详解
- 详解Linux用户态与内核态通信的几种方式