Git:本地部署代码到服务器(GitHub服务器 或 局域网搭建的git服务器)

【前言】

有时候不想放代码到GitHub或码云或其他的git管理平台,想要把代码放到本地或者局域网服务器或者自个的远程服务器上。

所以要做的工作是直接将本地代码部署到局域网服务器或者远程服务器上。

scp命令在项目一开始可能还凑合着能用,或者用FTP也不错,但是Git才是王道啊。

注:以下的服务器是指局域网服务器或者远程服务器。

【过程】

1、很多人用的GitHub是这么回事:

流程:本地仓库 <=> GitHub远程仓库

2、那么部署到服务器,就在服务器上搞个远程仓库就得了:

流程:本地 <=> 服务器远程仓库

基本过程是:将本地/var/www目录下的项目目录提交到本地仓库(把服务器代码同步到本地上l),本地仓库提交更改到服务器仓库(把新的代码提交上去),服务器仓库checkout更改(用新的代码覆盖旧的代码),将服务器仓库目录的代码复制到/var/www(覆盖原来的代码,完成新代码的部署)。


架构图


感谢:

参考文章:Love满天星 的《使用git做服务器端代码的部署》http://www.cnblogs.com/shaohuixia/p/5503521.html

1. 服务器

首先当然是装好git啦,apt-get install git就行了。

(1) 添加一个专门用来部署代码的用户

为了安全起见,新建一个专门用于代码部署的无特权用户。我用git作为用户名,输入如下命令后,会提示设置密码:

useradd -m git

passwd git 设置该用户的密码,也可根据喜好配置成免密码登陆

设置密码后还会提示输入一些其他信息,不用管,enter过去就好。

有些文章(http://www.cnblogs.com/shaohuixia/p/5503521.html)说“也可根据喜好配置成免密码登陆”,我不太同意这个说法。一开始我就将密码设为git,然后一觉醒来阿里云报告说在深圳、欧洲有人以git用户身份登录了我的服务器,很不安全啊。毕竟是服务器,不要被别人胡乱弄点什么东西上去是吧,所以还是得认真设个密码。

(2) 新建一个目录作为接收代码的仓库

我在/home目录下,新建一个叫git_repository的目录:

cd home

mkdir git_repository

然后把这个目录的所有者和所在用户组都改成git用户:

chown git:git git_repository

(也可以用chown和chgrp修改)

(3) 当当当,变身仓库

终于用到git命令了。进入刚刚新建的目录,初始化为git仓库:

cd git_repository

git init

然后,让仓库接收代码提交:(照做,我也不太懂)

git config receive.denyCurrentBranch ignore

(4). 【重要】让仓库接受代码提交

git config receive.denyCurrentBranch ignore

[可选] git config core.worktree ~/www

[可选] git config --bool receive.denyNonFastForwards false #禁止强制推送

至此,一个空的git仓库就在服务器上建好了,仓库的地址为:

ssh://deployuser@ipaddress/var/wwwroot/www/.git

2. 本地

没装Git的赶紧装上。

(1) 将项目目录变为Git仓库

git init

(2) 提交更改

git commit -a -m "init commit"

-a和-m都是commit命令的参数。-a表示全部;-m表示这次提交的描述信息,内容一般比较精简,直接在后面用双引号附上描述信息表明本次修改的作用即可。

(3) 可选:提交更改前的一点技巧

再次进行提交时,可以查看更改的情况:

git status

然后会列出哪些文件已被跟踪(track),哪些文件还未被跟踪。被跟踪的文件会显示做了什么修改(change),例如被更改(modified)、删除(deleted)。未被跟踪的文件,可以视情况进行跟踪,然后才会被提交到仓库。下面的命令可以将文件index.html添加到跟踪列表:

git add index.html

用git status再次查看更改情况,会有绿色提示index.html是即将提交的新文件。

(4) 添加远程主机

命令格式:

git remote add <主机名> <网址>

例如:git remote add server0 git@192.168.1.110:/home/git_repository/.git

其中,server0是自定的主机名,git是上文提到的专门用于提交代码的服务器用户,192.168.1.110是服务器IP,/home/git_repository就是服务器仓库目录。

(5) 终于要提交本地代码到服务器了

命令格式:

git push server0 master

其中,server0就是刚刚定义的主机名,master是Git分支名。分支是Git进行版本管理的概念,这里不管那么多,没别的分支,用master这个分支就好。

输入push命令之后,还需要输入git用户的密码才能完成push。

3. 服务器

又回到服务器这边。

(1) 更新仓库状态并检出更改

git update-server-info

git checkout -f

duang~仓库里的代码就更新好了。

(2) 复制代码到实际项目目录

服务器上代码仓库所在目录与实际项目目录不同,还得复制过去。笨拙的办法,求轻喷。

cd /var/www

mv MyWebsite MyWebsite.bak #将实际项目目录改名

cp -r /home/git_repository /var/www #复制

mv git_repository MyWebsite #改名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,097评论 18 139
  • 第一章 安装Git工具 下载GitHub for Windows,直接点击安装,安装完成后,可以看到“Git Sh...
    不圆的石头阅读 11,785评论 5 63
  • 产品人:治愈猫(微信:zhiyumao) “小张,你这个原型功能太多,你看看别家产品,哪有这么多功能按钮,记住,l...
    治愈猫叔阅读 6,613评论 0 16
  • 一、什么是事件在安卓中,事件会设计到的对象有三个:Activity ViewGroup View与事件相...
    交大小丑阅读 322评论 0 0
  • 本周整天“碌碌无为”,每天作息十分规律,也久违地看完了一本书——米兰·昆德拉《不能承受的生命之轻》,并完成一篇读后...
    梁梦婷阅读 273评论 0 0