雖然一直用git做版本管理,以前也用過git專案的部署,但都沒有堅持這個習慣,最近決定再學習下,下面這篇文章主要給大家介紹了關於PHP實現git部署的方法教程,文中透過範例程式碼介紹的非常詳細,需要的朋友可以參考下。
背景
在小型網站上,直接用git來部署php程式碼相當方便,你的遠端網站以及本機版本庫都有一個版本控制,追蹤問題或回滾是很輕鬆的事情。
因為在小公司上班,原先的系統還在使用傳統的ftp上傳部署,部署太麻煩,也不好管線上的程式碼。在網路上找了下git部署的教程,一路跟著下來碰到了不少坑,現在把整個過程發出來,希望可以幫助到大家,下面話不多說了,來一起看看詳細的介紹吧。
帳號相關
useradd -m git //新增git账号 ssh-keygen //密钥生成,如果已经有了可略过 su git //切换至git账号 cd ~ //切换到git账号根目录 mkdir .ssh //创建.ssh目录 cat /密钥存放目录/xxx.pub >> ~/.ssh/authorized_keys //设置公钥
這裡一定要注意權限問題,否則金鑰登錄無法生效,各資料夾對應的權限如下
.ssh文件夹权限 700 id_rsa 600 id_rsa.pub 644 authorized_keys 600
#檔案權限設定
#將git與網站運行nginx或apache的用戶放同一用戶群組,如www
網站所屬者設定為git,使用者群組設定為www //假設nginx與git 都歸屬於www使用者群組
#目錄權限設定775 ,檔案權限設定為664
倉庫代碼
伺服器端
cd 站点目录 git init //初始化目录
git配置
git config receive.denyCurrentBranch ignore //设置仓库接受代码提交
設定sudo免密
vim /etc/sudoers
# Defaults secure_path 中若没有你要的命令,要注意添加
# php的命令默认需要在 secure_path最后面添加 :/usr/local/php/bin"
在 root ALL=(ALL) ALL 下面一行添加
git ALL=(ALL) NOPASSWD:ALL
# 保存退出 ,这样针对laravel 要重启队列命令就可以使用了.
# sudo php artisan queue:restart
cd .git/hooks //切换至站点钩子目录 touch post-receive //创建接收提交时钩子 // 钩子文件内容如下: #!/bin/sh # 设置账号创建文件的默认权限 umask 002 unset GIT_DIR cd .. git checkout -f # 执行PHP钩子逻辑 /usr/bin/curl http(s)://域名/钩子文字位置/hook.php # 如果有使用laravel队列则需要重启队列进程,让新代码生效 # sudo php artisan queue:restart exit 0hook.php內容
<?php
/**
* git上传执行钩子
*/
//TODO 安全限制
//TODO 其他钩子行为
// 清除opcache
if (version_compare(PHP_VERSION, '5.5.0', '>=')) {
opcache_reset();
}
增加鉤子可執行權限
chmod a+x .git/hooks/post-receive
git remote add 远程仓库名称 ssh://git@IP地址:/站点目录 //添加远程仓库 git push 远程仓库名称 master
使用者上傳的圖片目錄一定要做好檔案忽略動作,否則有可能在清除未追蹤檔案時將此部分檔案刪除,造成災難性結果############總結################PHP實作的二分查找演算法實例分析講解##### ##########PHP實作的折半查找演算法範例講解################PHP實作的字串比對演算法範例######### ############
以上是PHP實作git部署的方法教學詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!