通过git自动部署,可以不用登录服务器,git push后代码即刻生效,有问题还可以随时回退版本,安全方便。另外还相当于git仓储的一个copy,不怕丢失,损坏,充分发挥了git分布式版本控制的特点。

配置好LN[A]MP环境,比如webroot路径 /srv/html/website

Linux Server上添加git账号,进入/home/git 下,创建repo目录

adduser git
su - git && cd ~
mkdir repo

repo目录下创建git仓储 webapp.git

cd repo && mkdir webapp.git
cd webapp.git && git init --bare

修改webapp.git/config,根据你的实际情况修改worktree, 如下:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
    worktree = /srv/html/website

[receive]
    denycurrentbranch = ignore

修改webapp.git/hooks/post-receive

#!/bin/sh
echo "=> update source code to the latest"
git checkout -f

注意git账号权限,并保证web server有正确的读写权限,不知道可以chmod -R 777

chown git:git /srv/html/website

以上都是在server端完成,只有此处是本地完成。git push提交你的本地代码,提交后的代码,会自动更新/srv/html/website下的代码

git remote add origin ssh://git@xxx.xxx.xxx.xxx:[port]/home/git/repo/webapp.git
git push origin master

有关 PHP 和 js 浮点运算的坑

javascript 0.1 + 0.2 为啥不等于 0.3 ? (正确结果:0.30000000000000004) 0.8 * 7 为啥不等于 5.6 ? (正确结果:5.6000000000000005) PHP var_dump(intv...

阅读全文

彻底搞懂 PHP 变量结构体,多数文章观点不准确

PHP5 中的 zval // 1. zval typedef struct _zval_struct { zvalue_value value; zend_uint refcount__gc; zend_uchar type; zend_uchar is...

阅读全文

React Native 如何区分系统平台,动态加载组件

Android 平台下, React Native WebView 的官方组件,无法上传文件,<input type = "file"> 不能打开文件对话框,需要自己监听事件去扩展。 幸好这里有...

阅读全文

1 条评论

欢迎留言