在centos伺服器上配置gitlab鉤子引發的一系列問題

來源:互聯網
上載者:User

標籤:參考   lld   題解   分享   oar   linux   php.ini   同步   iso   

為了給公司的伺服器上搭建gitlab環境並且配置鉤子(實現在本地git push之後伺服器自動git pull),整了好久,最後終於把問題解決了,下面是記錄安裝gitlab之後引發的一系列問題:

首先搭建gitlab是參考了http://www.linuxidc.com/Linux/2016-06/131992.htm這篇文章,使用的是bitnami製作的一鍵安裝包,下載下來的是run格式的檔案,需要先給這個檔案執行許可權:

chmod +x filename

filename是這個檔案的名字

安裝完gitlab以後,首先要做的是讓gitlab服務在linux伺服器每次重啟的時候可以自動的啟動

1、在linux系統上設定開機自啟動指令碼

編輯/etc/rc.local這個檔案,將需要開機執行的命令添加到這個檔案中,我希望gitlab能開機執行,所以添加/opt/gitlab-7.0.0-0/ctlscript.sh start到該檔案,但是這樣做以後,我重啟伺服器後,發現這個指令碼並沒有被執行,然後在網上找到一篇資料:http://soarwilldo.blog.51cto.com/5520138/1549656。原因是:/etc/rc.local是指向/etc/rc.d/rc.local的,但是預設情況下/etc/rc.d/rc.local檔案是沒有執行許可權的,所以需要給它添加執行許可權:

chmod +x /etc/rc.d/rc.local

之後系統每次重新啟動的時候都會自動的開啟gitlab相關服務。

 

 

2、使用php的shell_exec()函數執行git pull

首先,shell_exec()函數一般是被禁用的,解決方案,在php.ini中將disable_functions那一塊去掉shell_exec(),這樣函數就被解禁了。

但是,光函數解禁了還沒有用,因為www使用者組使用這個函數有限制,也就是許可權不夠,解決辦法是使用sudo來提高www使用者組的許可權,

執行visudo(或者是 vi /etc/sudoers) , 為www使用者組賦予root許可權,並且不要求輸入密碼。

php代碼加上sudo

shell_exec("/usr/bin/sudo /usr/bin/git pull");

在本地push以後,發現還是沒有同步,查看日誌,報錯資訊:sudo:sorry,you must have a tty to run sudo

解決方案是輸入visodu,將Defaults    requiretty這一行注釋掉

然後www使用者組就有了執行shell_exec函數的許可權了,這樣就配置好了鉤子。

因為是公司的測試伺服器,所以安全性不需要那麼高,執行shell_exec的目的完全就是為了配置鉤子。

在centos伺服器上配置gitlab鉤子引發的一系列問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.