git上传到linux服务器,git一键部署代码到远程服务器(linux)(采坑总结)

原来一直使用FileZilla来代码部署,去年使用git,代码版本管理,真TM好用,一起回顾下历程!

一. 代码部署方式及思路:

1. 使用FTP/SFTP工具,上传代码

2. git人工部署。1. 开发人员本地 - git push -> github/gitee 2. 使用ssh终端登录服务器 git pull -> 服务器

3. git自动化部署。开发人员本地 -git push -> 服务器ssh - hooks -> git checkout -f --> 更新代码

二. 自动化部署实现细节

1. 请先安装git,linux参见git官网: https://git-scm.com/download/linux

2. 为了安全起见,新建一个专门用于代码部署的无特权用户

(1)  useradd -m deployuser

(2) passwd deployuser(不建议不设置密码)

3. 此后分为两种情况:3.1代表初始化一个新项目  3.2 代表初始化一个已有项目

3.1. (1) 新建一个目录作为要部署代码的根目录,如:

mkdir /home/deploy

(2) 将新建目录的所有者和组权限改为上述的 deployuser

chown -R deployuser:deployuser /home/deploy

(3)  初始化git仓库

cd /home/deploy

git init

(4) 让仓库接受代码提交

git config receive.denyCurrentBranch ignore

(5) 设置服务器更新钩子.

cd .git/hooks

mv post-receive.sample post-receive(如没有post-receive.sample文件,不要在windows下创建,否则有可能不成功,而应该mv post-update.sample post-update,把post-update)

vi post-receive(或使用最low的办法本地编辑ftp上传)

替换为一下

#!/bin/sh

unset GIT_DIR

cd ..

git checkout -f

(6) 授予post-receive可执行权限

chmod +x post-receive

(7) 添加公钥,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的

服务器ssh访问地址是:ssh://deployuser@ipaddress/home/deploy/.git   (ipaddress:服务器ip地址 )

(8) 回到本地仓库,克隆服务器git仓库

git clone deployuser@ipaddress/home/deploy/.git

(9) 修改文件,上传,就可以为所欲为了。。

git add . -> git commit -m "modify" -> git push -> 查看服务器是否已同步,且修改了工作区

end

Git push 提交代码到远程global user.name错误解决办法

问题:安装了Git-1.9.4-preview和TortoiseGit等工具后,Git服务器开通了账号和密码并配置了邮箱.克隆了服务器代码到本地,按需求进行代码开发.提交本地代码到服务器时出现错误.具 ...

IntelliJ IDEA自动部署项目至远程服务器与传统部署项目至远程服务器的区别

每次开发Java项目时,对于所有Java开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP等工具对 ...

【git】提交代码到远程仓库

看完不用,就是一个字:忘! 之前学了两天git结果今天要用的时候,啥也想不起来.... 场景: 已有远程仓库: git@192.168.1.1:test/test.git 要提交代码到远程仓库的新分支 ...

Git提交代码到远程服务器

1.下载Git 不用说了,这个是必须的,也是最简单的步骤,地址如下: http://git-scm.com/download 这里会提供三个版本的下载地址,读者可以自行查找. 2.创建代码库 远程的代 ...

git hook部署代码

git 提供了钩子功能,当某个操作发生时,可以执行某个动作. ftp上传时没有文件比较,虽然可以winscp提供了同步功能但是不够强大,而且文件多了,会花费比较长的时间. 1.先在主机上搭建一个git ...

使用Git上传代码到远程仓库

1.进入文件夹,cd f:/test/ 2.初始化远程仓库,git init 3.添加代码,git add . (注意add后面的点前面有一个空格) 4.提交代码到远程仓库,git commit -m ...

部署webservice到远程服务器

在本地编写好webservice后并在本机验证正确后,在本地发布后,直接将发布时设置的文件夹复制到远程服务器上,在远程服务器的IIS上默认网站->新建虚拟目录->设置别名->物理路径 ...

使用IDEA部署项目到远程服务器

1.选择Tools -> Deployment -> Configuration... 2.配置连接信息,Linux服务器一般都选择SFTP 3.配置本地上传文件路径.远程上传文件路径 4 ...

一键部署启动MySQL数据库服务器

https://market.azure.cn/Vhd/Show?vhdId=9858&version=14359 产品详情 产品介绍MySQL是一个真正的多用户.多线程SQL数据库服务器.S ...

随机推荐

Java中将一个字符串传入数组的几种方法

String Str="abnckdjgdag"; char a[]=new char[Str.length()]; -------------------方法1 用于取出字符串的 ...

oracle并行模式(Parallel)

1.  用途 强行启用并行度来执行当前SQL.这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试.也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能.举例的话,就 ...

Buns(dp+多重背包)

C. Buns time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

C# / MSSQL / WinForm / ASP.NET - SQLHelper中返回SqlDataReader数据

/// /// Execute a SqlCommand that returns a resultset against the database specified ...

C++primer 9.49

题目:如果一个字母延伸到中线之上,如d或f,则称其有上出头部分(ascender).如果一个字母延伸到中线之下,如p或g,则称其有下出头部分(descender).编写程序,读入一个单词文件,输出最长 ...

WebApi的多版本管理

1.多版本管理概念 什么是API的多版本问题?Android等App存在着多版本客户端共存的问题:由于早期没有内置升级机制,用户不会升级,拒绝升级等原因,造成了许多软件的旧版本App也在运行.开发新版 ...

loadrunner脚本函数讲解

一. get请求和post请求区别:web_link(get).web_submit_form(post)依赖上下文,web_url.web_submit_data不依赖上下文,建议使用web_url ...

T-2-java面向对象

一.类 类对象的数据结构定义,方法是对象的行为. 类是数据类型. 一个类可以创建多个对象,这多个对象结构相同,数据不同. 类中可以包含:(1)成员变量(对象的共同特征,静的):(2)方法(对象的共同行 ...

Day15 Python基础之logging模块(十三)

参考源:http://www.cnblogs.com/yuanchenqi/articles/5732581.html logging模块 (****重点***) 一 (简单应用) import lo ...

centos7.2环境中kettle环境搭建及任务推送配置详解

目标:将mysql5.5中testdb1的ehr_user表推送到tdoa的ehr_user表中,为避免不必要的麻烦,两张表结构.编码,包括数据库编码保持一致 操作系统:centos7.2 kettl ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值