文档章节

用git部署网站代码到生产环境VPS

耗子315
 耗子315
发布于 2015/01/06 10:52
字数 829
阅读 169
收藏 0

做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 /var
mkdir git && cd git
mkdir your_site.git && cd your_site.git
git init --bare

--bare的意思是,该文件夹是我们的代码仓库,它将不会放源代码而只是做版本控制。

Hook钩子

我们将会使用post-receive钩子,更多钩子及含义可以参考git文档 在your_site.git文件夹中

ls

你可以看到有hooks文件夹已经为我们创建好了,而且里面也有各种钩子的样例

cd hooks

创建我们自己的post-receive

cat > post-receive

按回车后提示我们继续输入,接下来输入的动向都会被放入post-receive文件中。

#!/bin/sh
git --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结合一些自己编写的脚本我们还可以做很多事情。


==============================================================


本文转载自:http://blog.csdn.net/haozi3156666/article/details/40982085

耗子315
粉丝 0
博文 18
码字总数 0
作品 0
桂林
程序员
私信 提问
用git部署网站代码到生产环境VPS

做web开发时,以前都是写好了一个新功能要发布到服务器上都是使用FTP上传覆盖原来的代码,这样做很麻烦,首先要打开FTP程序,然后进入指定文件夹,然后上传,而且用FTP上传经常容易出错总是有...

看看这天
2015/08/06
2.2K
3
小内存使用Docker部署多个应用实录

本文来自鄙人的博客Noah's Blog 前言 话说七月初在赵容部落上看到AcrosVM的低价美国VPS,顺便提供了优惠码。128M的KVM方案VPS年付不过72元人民币。考虑到博客放在Github Pages上有被墙的风险...

ThinkerNoah
2015/07/29
1K
0
一键安装包--LNMT

LNMT一键安装包是什么? LNMT一键安装包是一个用 Linux Shell 编写的可以为 CentOS/RedHat VPS(VDS) 或独立主机安装 LNMT(Nginx、MySQL、JRE、Tomcat) 生产环境的 Shell 程序。同时提供一些实...

蓝翔妓工
2015/01/30
2.9K
5
在 VPS 上搭建 Hexo 博客,使用 Git 部署

摘要:因为 hexo 的搭建和使用与其他博客程序不同,而且搜索到的很多结果都是在 Github 上搭建 hexo 的教程。于是就有很多朋友问我 VPS 也可以搭建 hexo 吗?刚好前几天在迁移博客的时候也查...

Viosey's Blog
2017/12/20
0
0
使用webhook实现代码自动化部署

需求背景 自己搭建的博客,代码托管到github,心想博客更新那么频繁,每次push代码后都到服务器上手动部署,实在是太麻烦, 于是想到自动化部署,开始的时候只是想通过一个简单的 shell +cro...

阿dai学长
05/05
81
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部