首頁 > php框架 > Laravel > 主體

使用 Git 實現 Laravel 專案的自動化部署

藏色散人
發布: 2019-09-19 10:13:04
轉載
4215 人瀏覽過

使用 Git 實現 Laravel 專案的自動化部署

簡介

在我們的開發過程中,我們不可避免的會用到版本控制。當然,這也致使你對 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專案的自動化部署

使用 Git 實現 Laravel 專案的自動化部署

#更多Laravel相關技術文章,請造訪Laravel框架入門教學專欄進行學習!

以上是使用 Git 實現 Laravel 專案的自動化部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!