簡介
在我們的開發過程中,我們不可避免的會用到版本控制。當然,這也致使你對 Git 和 SVN 有所了解。兩者都是優秀的版本控制工具,我個人比較習慣用 Git,當然這可能和個人習慣有關。我不知道大家一開始是怎麼使用 git 來開發的,反正我個人是先將程式碼提交到 github 倉庫,然後用 SSH 登入伺服器,然後進行複製或版本更新。聽起來就很麻煩,當然實際操作中也很麻煩,那麼有什麼可以 “一勞永逸 “ 的辦法呢?請往下看!
簡單使用
Git 鉤子
什麼是 git 鉤子呢?官方解釋有些長,簡單來說就是在特定環境下觸發的腳本。這個解釋可能不太準確,但是我認為這樣比較容易理解一些,想了解更多的,可以去 Git 官網查看,下面我們就用鉤子實現自動化部署。
第一步:建立 git 使用者
登入我們的伺服器,這裡預設你已經安裝好了 git。建立一個git 使用者:
# 创建一个名叫jouzeyu的用户 adduser jouzeyu
第二步:給git 使用者新增權限
#在根目录下的 home 文件夹下创建一个git文件夹 mkdir /home/git #切换到创建好的git文件夹 cd /home/git #创建 .ssh文件夹,里面主要用来放公钥 mkdir .ssh #切换到.ssh文件夹并创建authorized_keys文件 cd .ssh touch authorized_keys
第三步:設定git 並取得公鑰
#在本地配置用户名和邮箱,我的用户名默认为jouzeyu git config --global user.name "jouzeyu" git config --global user.email "your email"
注意:如果用了--global 選項,那麼以後你所有的專案都會使用這裡設定的使用者資訊。如果要在某個特定的項目中使用其他名字或郵箱,只需在該項目下執行:
git config user.name "xxx" git config user.email "xxx"
#OK,接下來我們獲取公鑰,請先查看你的用戶下的.ssh 文件夾中是否之前就含有公鑰和私鑰,我們需要尋找一對以id_dsa 或id_rsa 命名的文件,其中一個帶有.pub 副檔名。 .pub 檔案是你的公鑰,另一個則是私鑰。如果沒有請執行 ssh-keygen。
使用 cat ~/.ssh/id_rsa.pub 指令可以取得公鑰,複製它,使用 vi 或 vim 指令把它貼到我們之前建立的 authorized_keys 檔案中,使用:wq 儲存。
第四步:初始化倉庫
建立一個存放git 倉庫的資料夾:
mkdir /www/wwwroot/git cd /www/wwwroot/git
初始化倉庫:
#初始化一个裸仓库(强烈建议) git init --bare website.git #配置仓库的权限,让我们之前创建好的git用户jouzeyu能读写 chown -R git:git website.git
這裡必須注意,如果不給權限,後面的git pull 將會報錯,原因是沒有權限寫入。關於裸倉庫和普通倉庫的區別簡單來說就是裸倉庫看不到專案文件,普通倉庫和你的專案目錄一樣,只是多了一個.git 資料夾。
第五步:產生專案倉庫
這個也是在伺服器上進行的,同時說明一下 /www/wwwroot/ 是我的環境的根目錄。
#创建我服务器上的项目目录test mkdir /www/wwwroot/test #克隆仓库 git clone /www/wwwroot/git/website.git #设置权限 chown -R git website
注意:一定要注意我的路徑,git 倉庫是 /www/wwwroot/git, 專案倉庫是 /www/wwwroot/test。
第六步:複製到本地
# 通过ip地址从配置好的线上仓库拉取下来 git clone git@47.97.121.XXX:/www/wwwroot/git/website.git # 如果有配置域名的话也可以通过域名拉取 git clone git@www.XXX.XXX:/www/wwwroot/git/website.git
因為公鑰的原因,這裡是不需要密碼的,如果成功你的電腦上會出現一個website 的資料夾,如果報錯請檢查後再進行下面的操作。
第七步:測試上傳(git pull)
# 打开刚才克隆下来的本地仓库 cd website # 创建README.md文件 touch README.md git add . git commit -m"创建README.md文件" git push
不出意外已經正常上傳了,如果報錯請檢查權限,上文提到過,如果還不行可以在下方留言。
第八步:加上鉤子
終於到重頭戲了,寫的比較細,所以比較麻煩一些。回到我們線上的伺服器,下面的是在線上操作的:
#切换到这个目录 cd /www/wwwroot/git/website.git/hooks # 生成post-receive文件 touch post-receive # 使用vim编辑 vim post-receive
在post-receive 檔案裡面貼上:
#!/bin/sh # 打印输出 echo '======上传代码到服务器======' # 打开线上项目文件夹 cd /www/wwwroot/test/website # 这个很重要,如果不取消的话将不能在cd的路径上进行git操作 unset GIT_DIR git pull origin master # 自动编译vue项目,如有需要请去掉前面的#号 # npm run build # 自动更新composer(我暂时没试过) # composer update echo $(date) >> hook.log echo '======代码更新完成======'
儲存後給post-receive 檔案加上執行權限:
chmod +x post-receive
最後一步
在本地修改部分內容,然後提交推送git pull,可以看到我們已經實現了自動化部署。
使用Git實現Laravel專案的自動化部署
#更多Laravel相關技術文章,請造訪Laravel框架入門教學專欄進行學習!
以上是使用 Git 實現 Laravel 專案的自動化部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!