標籤:參考 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鉤子引發的一系列問題