PHP實(shí)現(xiàn)git部署的方法教程
背景
在小站點(diǎn)上,直接用git來部署php代碼相當(dāng)方便,你的遠(yuǎn)程站點(diǎn)以及本地版本庫都有一個版本控制,追蹤問題或者回滾是很輕松的事情。
因?yàn)樵谛」旧习?,原先的系統(tǒng)還在使用傳統(tǒng)的ftp上傳部署,部署太麻煩,也不好管控線上的代碼。在網(wǎng)上找了下git部署的教程,一路跟著下來碰到了不少坑,現(xiàn)在把整個過程發(fā)出來,希望可以幫助到大家,下面話不多說了,來一起看看詳細(xì)的介紹吧。
賬號相關(guān)
useradd -m git //新增git賬號 ssh-keygen //密鑰生成,如果已經(jīng)有了可略過 su git //切換至git賬號 cd ~ //切換到git賬號根目錄 mkdir .ssh //創(chuàng)建.ssh目錄 cat /密鑰存放目錄/xxx.pub >> ~/.ssh/authorized_keys //設(shè)置公鑰
此處一定要注意權(quán)限問題,否則密鑰登入無法生效,各文件夾對應(yīng)的權(quán)限如下
.ssh文件夾權(quán)限 700 id_rsa 600 id_rsa.pub 644 authorized_keys 600
文件權(quán)限設(shè)置
將git與站點(diǎn)運(yùn)行nginx或者apache的用戶放同一用戶組,如www
vim /etc/passwd 找到git賬號與www賬號,將git賬號的組標(biāo)識變更為與www組標(biāo)識一致
站點(diǎn)所屬者設(shè)置為git,用戶組設(shè)置為 www //假設(shè)nginx與git 都?xì)w屬于www用戶組
目錄權(quán)限設(shè)置775 ,文件權(quán)限設(shè)置為664
倉庫代碼
服務(wù)器端
cd 站點(diǎn)目錄 git init //初始化目錄
git配置
git config receive.denyCurrentBranch ignore //設(shè)置倉庫接受代碼提交
設(shè)置sudo免密
vim /etc/sudoers # Defaults secure_path 中若沒有你要的命令,要注意添加 # php的命令默認(rèn)需要在 secure_path最后面添加 :/usr/local/php/bin" 在 root ALL=(ALL) ALL 下面一行添加 git ALL=(ALL) NOPASSWD:ALL # 保存退出 ,這樣針對laravel 要重啟隊(duì)列命令就可以使用了. # sudo php artisan queue:restart
鉤子設(shè)置
cd .git/hooks //切換至站點(diǎn)鉤子目錄 touch post-receive //創(chuàng)建接收提交時鉤子 // 鉤子文件內(nèi)容如下: #!/bin/sh # 設(shè)置賬號創(chuàng)建文件的默認(rèn)權(quán)限 umask 002 unset GIT_DIR cd .. git checkout -f # 執(zhí)行PHP鉤子邏輯 /usr/bin/curl http(s)://域名/鉤子文字位置/hook.php # 如果有使用laravel隊(duì)列則需要重啟隊(duì)列進(jìn)程,讓新代碼生效 # sudo php artisan queue:restart exit 0
hook.php內(nèi)容
<?php /** * git上傳執(zhí)行鉤子 */ //TODO 安全限制 //TODO 其他鉤子行為 // 清除opcache if (version_compare(PHP_VERSION, '5.5.0', '>=')) { opcache_reset(); }
增加鉤子可執(zhí)行權(quán)限
chmod a+x .git/hooks/post-receive
本地代碼
git remote add 遠(yuǎn)程倉庫名稱 ssh://git@IP地址:/站點(diǎn)目錄 //添加遠(yuǎn)程倉庫 git push 遠(yuǎn)程倉庫名稱 master
特別注意
用戶上傳的圖片目錄一定要做好文件忽視動作,否則有可能在清除未追蹤文件時將此部分文件刪除,造成災(zāi)難性結(jié)果
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
淺談Coreseek、Sphinx-for-chinaese、Sphinx+Scws的區(qū)別
下面小編就為大家?guī)硪黄獪\談Coreseek、Sphinx-for-chinaese、Sphinx+Scws的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12PHP實(shí)現(xiàn)仿百度文庫,豆丁在線文檔效果(word,excel,ppt轉(zhuǎn)flash)
這篇文章主要介紹了PHP實(shí)現(xiàn)仿百度文庫,豆丁在線文檔效果,可實(shí)現(xiàn)word,excel,ppt轉(zhuǎn)flash顯示的功能,結(jié)合實(shí)例形式分析了常見的解決方案與CentOS環(huán)境下的實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03并發(fā)下常見的加鎖及鎖的PHP具體實(shí)現(xiàn)代碼
用到了Eaccelerator的內(nèi)存鎖 和 文件鎖,原理如下判斷系統(tǒng)中是否安了EAccelerator 如果有則使用內(nèi)存鎖,如果不存在,則進(jìn)行文件鎖2010-10-10ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼
這篇文章主要介紹了ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼的相關(guān)資料,需要的朋友可以參考下2015-03-03PHP中Date()時間日期函數(shù)的使用方法小結(jié)
PHP開發(fā)中Date()時間日期函數(shù)的使用方法php date() 函數(shù)可把時間戳格式化為可讀性更好的日期和時間。2011-04-04php自動識別文字編碼并轉(zhuǎn)換為目標(biāo)編碼的方法
這篇文章主要介紹了php自動識別文字編碼并轉(zhuǎn)換為目標(biāo)編碼的方法,涉及php針對當(dāng)前編碼的判斷與對應(yīng)的編碼轉(zhuǎn)換實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-08-08解析PHP跳出循環(huán)的方法以及continue、break、exit的區(qū)別介紹
本篇文章是對PHP跳出循環(huán)的方法以及continue、break、exit的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07