執行個體講解PHP實現git部署

來源:互聯網
上載者:User
雖然一直用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檔案夾許可權 700id_rsa 600id_rsa.pub 644authorized_keys 600

檔案使用權限設定

將git與網站運行nginx或者apache的使用者放同一使用者組,如www

vim /etc/passwd 找到git帳號與www帳號,將git帳號的組標識變更為與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_DIRcd ..git checkout -f# 執行PHP鉤子邏輯/usr/bin/curl http(s)://網域名稱/鉤子文字位置/hook.php# 如果有使用laravel隊列則需要重啟隊列進程,讓新代碼生效# sudo php artisan queue:restartexit 0

hook.php內容

<?php/** * git上傳執行鉤子 *///TODO 安全限制//TODO 其他鉤子行為// 清除opcacheif (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

特別注意

使用者上傳的圖片目錄一定要做好檔案忽視動作,否則有可能在清除未追蹤檔案時將此部分檔案刪除,造成災難性結果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.