代碼部署(一):使用git部署代碼到服務(wù)器

直接使用git部署代碼帶服務(wù)器

前提

  • 配置用戶(hù)和部署目錄的讀寫(xiě)權(quán)限
  • 安裝git
  • 配置ssh權(quán)限

基本配置

  1. 進(jìn)入在服務(wù)器要部署的目錄,執(zhí)行git init,倉(cāng)庫(kù)地址:ssh://[服務(wù)器用戶(hù)名]@[服務(wù)器地址]:[端口][倉(cāng)庫(kù)在服務(wù)器上的絕對(duì)路徑],如:ssh://deployuser@baidu.com:22/app/xxx/production
  2. 讓倉(cāng)庫(kù)接受代碼提交,執(zhí)行git config receive.denyCurrentBranch ignore
  3. 現(xiàn)在服務(wù)器已經(jīng)可以接受代碼提交了,但是每次提交之后,還需要到服務(wù)器執(zhí)行git checkout -f檢出代碼,下一步我們實(shí)現(xiàn)讓服務(wù)器自動(dòng)完成這件事.
  4. 配置git的更新鉤子,實(shí)現(xiàn)自動(dòng)檢出代碼.vi .git/hooks/post-receive,然后寫(xiě)入:
#!/bin/sh
unset GIT_DIR
cd ..
git checkout -f

該文件需要有執(zhí)行權(quán)限,執(zhí)行sudo chmod a+x .git/hooks/post-receive

  1. 到這一步配置就完成了,可以在本地執(zhí)行push命令推送到對(duì)應(yīng)的服務(wù)器地址了.

在鉤子中執(zhí)行更多的命令

很多項(xiàng)目代碼更新之后,還需要執(zhí)行其他命令,比如:

  • 更新項(xiàng)目的依賴(lài)庫(kù),如php項(xiàng)目需要使用的composer update
  • 編譯文件
  • 更新配置文件(不同環(huán)境使用的配置文件不同,所以需要特殊處理)
  • 重建緩存

我們可以在post-receive中添加更多的命令來(lái)實(shí)現(xiàn)這些功能,下面給一份我的php項(xiàng)目中使用的一個(gè)腳本:

#!/bin/sh
#不添加這個(gè)我的composer命令找不到
PATH=$PATH:/usr/local/bin:/usr/local/sbin
unset GIT_DIR
cd ..
git checkout -f
pwd
yes|cp .env.production .env
yes|cp composer.json.circle composer.json
composer update
# 保證依賴(lài)庫(kù)的資源文件更新了,也會(huì)同步更新到項(xiàng)目.
php artisan vendor:publish --tag=laravel-admin
php artisan vendor:publish --tag=easy-mall
php artisan migrate
php artisan config:cache
php artisan route:cache
#不加這一選項(xiàng)啤握,你可能會(huì)發(fā)現(xiàn)20%到25%的性能損失榆骚。
composer dump-autoload --optimize
# 清理opcache
echo "password" | sudo -S systemctl reload php-pfm

對(duì)于前端的小伙伴可能會(huì)用到gulp/npm等命令,比如執(zhí)行自己的命令:npm run prod或者gulp --production.在我們的服務(wù)器環(huán)境中,執(zhí)行npm還需要在PATH中添加:/.nvm/versions/node/v6.5.0/bin,即上述腳本中PATH=$PATH:/usr/local/bin:/usr/local/sbin:/.nvm/versions/node/v6.5.0/bin

其他

有些命令需要在第一次部署的時(shí)候執(zhí)行,比如對(duì)于laravel項(xiàng)目,需要配置一些目錄用戶(hù)寫(xiě)權(quán)限,需要配置軟連接等.當(dāng)然也可以寫(xiě)到鉤子中,只不過(guò)之后每次都要進(jìn)行不必要的執(zhí)行.

參考

git文檔
使用git做服務(wù)器端代碼的部署
Git詳解之四 服務(wù)器上的Git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末睡扬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刺覆,更是在濱河造成了極大的恐慌,老刑警劉巖史煎,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谦屑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡篇梭,警方通過(guò)查閱死者的電腦和手機(jī)氢橙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恬偷,“玉大人悍手,你說(shuō)我怎么就攤上這事∨刍迹” “怎么了坦康?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)协怒。 經(jīng)常有香客問(wèn)我涝焙,道長(zhǎng),這世上最難降的妖魔是什么孕暇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任仑撞,我火速辦了婚禮,結(jié)果婚禮上妖滔,老公的妹妹穿的比我還像新娘隧哮。我一直安慰自己,他們只是感情好座舍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布沮翔。 她就那樣靜靜地躺著,像睡著了一般曲秉。 火紅的嫁衣襯著肌膚如雪采蚀。 梳的紋絲不亂的頭發(fā)上疲牵,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音榆鼠,去河邊找鬼纲爸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妆够,可吹牛的內(nèi)容都是我干的识啦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼神妹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颓哮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鸵荠,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冕茅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后腰鬼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嵌赠,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年熄赡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姜挺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彼硫,死狀恐怖炊豪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拧篮,我是刑警寧澤词渤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站串绩,受9級(jí)特大地震影響缺虐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜礁凡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一高氮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顷牌,春花似錦剪芍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春状共,著一層夾襖步出監(jiān)牢的瞬間套耕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工口芍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箍铲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓鬓椭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親关划。 傳聞我的和親對(duì)象是個(gè)殘疾皇子小染,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)贮折,斷路器裤翩,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • 本文講解的部署流程是: 推送代碼到github 觸發(fā)circleCI,開(kāi)始進(jìn)行測(cè)試,然后執(zhí)行部署命令(部署命令的內(nèi)...
    never615閱讀 5,986評(píng)論 0 7
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評(píng)論 6 342
  • 在漆黑大草原的星空下打馬走過(guò) 在枯灰大森林的綠蔭下仰面睡過(guò) 在粗白小木屋的燈光下托臉閱過(guò) 在你健美的酮體中留下種子...
    未來(lái)理想國(guó)閱讀 258評(píng)論 0 0
  • 隨筆 文/鄒航 PART1.落葉之姿 每當(dāng)?shù)搅饲锛荆闲嗟臉?shù)木們便會(huì)靜悄悄的抖落身上的樹(shù)葉调榄,讓葉兒們?nèi)艉阌辉杂?..
    鄒航閱讀 243評(píng)論 0 2