Centos7 安裝gitlab


環境說明:
虛擬機 centos 7 64位
內存:4GB
存儲:100GB
CPU: CORE

版本:
gitlab 10.0.3 

  • 配置系統基礎環境

配置阿里巴巴 yum 源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

重建yum 的緩存

yum clean all
yum makecache

配置 yum 的本地源

mount ~/CentOS-7-x86_64-DVD-1708.iso /mnt/cdrom/

修改本地 yum 的配置

git clone https://gitlab.com/xhang/gitlab.git

將 baseurl 的參數增加一個列表

git clone https://gitlab.com/xhang/gitlab.git

修改enabled值,改為

enabled=1
  • 安裝gitlab 環境准備

安裝 git

yum install -y git

創建 gitlab漢化版的源碼目錄,等一下使用git clone 一份新的代碼

mkdir gitlab_zh
cd gitlab_zh
git clone https://gitlab.com/xhang/gitlab.git

當前作者下載漢化源碼為10.0.4,但是即將安裝的 gitlab 版本為 10.0.3

  • 安裝gitlab

安裝 gitlab 的依賴包

yum install curl openssh-server openssh-clients postfix cronie policycoreutils-python –y
yum install -y patch

啟動 postfix,並且設置為開機啟動

systemctl start postfix
systemctl enable postfix

設置防火牆

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

大家從網上下載好 gitlab 的rpm 包后,就可以安裝了

rpm -i gitlab-ce-10.0.3-ce.0.el7.x86_64.rpm

gitlab 下載地址:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

當 shell 中出現以下內容,則證明 gitlab 的程序安裝完了

繼續安裝提示執行配置 gitlab 的命令

gitlab-ctl reconfigure

修改 gitlab 的配置文件

vi /etc/gitlab/gitlab.rb

修改里面的 external_url 參數,例如作者的機器的IP地址為 10.211.55.10

external_url='http://10.211.55.10'

因為修改了配置文件,所以重新加載配置文件

gitlab-ctl reconfigure

 

  • 漢化 gitlab

使用漢化包來為社區版本的 gitlab 打補丁

停止 gitlab 服務

gitlab-ctl stop

切換到 剛才從 github 上download 的漢化包目錄

cd /root/source/gitlab_zh/gitlab/

找出安裝的 10.0.3 版本和 漢化版本10.0.4 中的不同點

git diff v10.0.3 v10.0.4-zh > ../10.0.3-zh.diff

目錄倒退一層

cd ../

將 10.0.3-zh.diff 的補丁添加到 gitlab 中

patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 10.0.3-zh.diff

重新啟動 gitlab 服務

gitlab-ctl start

重新配置 gitlab

gitlab-ctl reconfigure

軟件安裝部分就完成了,以下是web 頁面配置部分

  • web頁面配置

由於作者本機的IP 地址為 10.211.55.10,而且gitlab 默認的端口號為 80,所以使用瀏覽器訪問以下地址:
http://10.211.55.10:80

用戶自己在頁面上輸入 新的密碼,該密碼為 管理員密碼

未來管理員的登陸名為 root,密碼為剛才修改的密碼

 

  • 配置gitlab 用戶注冊時的郵箱通知信息

修改 /etc/gitlab/gitlab.rb 配置文件,該郵箱地址是未來gitlab 向用戶發送郵件時的推送郵箱

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"           # 用戶輸入自己的smtp服務器地址,例如作者的時163 的企業服務地址
gitlab_rails['smtp_port'] = 25                         # 用戶smtp 的端口號
gitlab_rails['smtp_user_name'] = "***@qq.com"          # 用戶的郵箱地址
gitlab_rails['smtp_password'] = "PASSWORD"             # 用戶的郵箱密碼
gitlab_rails['smtp_domain'] = "qq.com"                 # 用戶郵箱的域名
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = '***@qq.com'       # 用戶的郵箱地址
user['git_user_email'] = "***@qq.com"                  # 用戶的郵箱地址

作者在這里給大家一個提醒,如果大家安裝gitlab 的環境為阿里雲,一定要確認25 端口是否能夠使用,作者就由於之后在阿里雲上部署gitlab時,遇到25 端口無法使用的問題,所以一直導致在注冊新用戶時,郵件無法發送出去,這個時候解決方法可以選擇使用打開 ssl 加密傳輸,這樣端口就不再是 25 端口了,例如qq 的郵件配置應該變為

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"           # 用戶輸入自己的smtp服務器地址,例如作者的時163 的企業服務地址
gitlab_rails['smtp_port'] = 465                        # 用戶smtp 的端口號
gitlab_rails['smtp_user_name'] = "***@qq.com"          # 用戶的郵箱地址
gitlab_rails['smtp_password'] = "PASSWORD"             # 用戶的郵箱密碼
gitlab_rails['smtp_domain'] = "qq.com"                 # 用戶郵箱的域名
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = '***@qq.com'       # 用戶的郵箱地址
user['git_user_email'] = "***@qq.com"                  # 用戶的郵箱地址
gitlab_rails['smtp_tls'] = true                        # 打開 ssl 加密傳輸

 

因為修改了配置文件,所以重新加載配置文件

gitlab-ctl reconfigure

因為有時候郵箱的密碼需要不定時修改,所以未來管理員也會同步修改登錄郵箱的密碼,在修改了配置文件后,所以在重新加載后,可以通過以下命令查看剛才修改的內容是否生效

gitlab-ctl show-config | grep smtp_password

 

管理員還需要在web的管理頁面上修改對應的配置,管理員的配置頁面可以點擊以下按鈕

gitlab是否打開新用戶注冊

如果管理員需要自己手工添加新用戶可以在以下頁面配置

 

其他的一些技術點

  • 查看gitlab 的配置
gitlab-ctl show-config
  • 查看gitlab 的運行日志
gitlab-ctl tail
  • 切換gitlab 倉庫的數據目錄

gitlab 默認的倉庫數據目錄為 /var/opt/gitlab/git-data/repositories/ ,如果未來用戶的數據量大了,需要更換倉庫數據目錄,可以通過修改 /etc/gitlab/gitlab.rb 配置進行調整。

用戶在調整gitlab 的配置之前,建議對其先停止服務。

gitlab-ctl stop

 然后用戶創建好未來要遷移的數據目錄,並且將原來的數據 遷移 過去,由於作者的 gitlab 是通過 rpm 包安裝的,所以gitlab 的系統用戶為 git,用戶組為 root,所以在拷貝數據后還需要修改新數據目錄的用戶歸屬,否者后面gitlab 無法對該目錄寫入新的數據。

mkdir -p /mnt/gitlab/git-data/
mv /var/opt/gitlab/git-data/repositories/* /mnt/gitlab/git-data/repositories/
chown -R git:root /mnt/gitlab/git-data/*

然后用戶就可以對 /etc/gitlab/gitlab.rb 進行調整了。

/etc/gitlab/gitlab.rb 默認對 數據目錄 的配置是注釋的。

用戶可以新增配置信息

git_data_dirs({
  "default" => {
     "path" => "/mnt/gitlab/git-data"
  }
})

然后對 gitlab 重新刷新配置

gitlab-ctl reconfigure

重啟 gitlab 服務

gitlab-ctl restart
  •  修改gitlab 的nginx服務端口號

 首先還是需要先關閉gitlab的服務

gitlab-ctl stop

修改 /etc/gitlab/gitlab.rb 文件(作者是在root 用戶下直接修改的)

找到以下內容(作者對應是859行),修改為 nginx['listen_port'] = 8080

##! **Override only if you use a reverse proxy**
##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-port
# nginx['listen_port'] = nil

同時還需要在 /etc/gitlab/gitlab.rb 文件 找到以下內容(作者對應的是 587 行),將 unicorn['port'] 設置為 8082(因為8080 端口已經被占用了)

### Advanced settings
# unicorn['listen'] = '127.0.0.1'
# unicorn['port'] = 8080

修改后的內容變為

### Advanced settings
# unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8082

用戶還需要在 /var/opt/gitlab/gitlab-rails/etc/unicorn.rb 文件上找到以下內容(作者對應是 第7行 ),將listen 的端口設置為 8082

# What ports/sockets to listen on, and what options for them.
listen "127.0.0.1:8080", :tcp_nopush => true

修改后的內容變為

# What ports/sockets to listen on, and what options for them.
listen "127.0.0.1:8082", :tcp_nopush => true

更新gitlab 的配置

gitlab-ctl reconfigure

用戶在 /var/opt/gitlab/nginx/conf/gitlab-http.conf 文件中,找到以下內容(作者對應是38行),將原來默認的的listen *:80 會被刷新為修改后的8080 (nginx 的端口就變為 8080)

upstream gitlab-workhorse {
  server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}


server {
  listen *:8080;

重啟 gitlab 服務

gitlab-ctl restart

這里用戶一定要注意,如果直接修改 /var/opt/gitlab/nginx/conf/gitlab-http.conf 文件的 內容,則在執行 gitlab-ctl reconfigure 后,修改值會被覆蓋。

 

  • 分享一個錯誤解決

在gitlab 運行一段時間后,遇到網頁出現 500 錯誤,查看gitlab 的運行log ,發現以下錯誤信息

這個錯誤信息的log 日志目錄為:/var/log/gitlab/gitlab-rails/production.log

Redis::CommandError (MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.):

是redis 的一個錯誤。錯誤的原因大概是機器內存只有4GB,redis 已經使用了快 4GB了, redis 的內存使用得比較緊張了,然后redis 為了避免假死,所以預先申請另外一個4GB的內存,此時就會出現這個錯誤。

根據網上的介紹,可以通過設置 /etc/sysctl.conf 文件,增加

vm.overcommit_memory = 1

然后執行以下命令,使其生效,從而避免redis 這個錯誤。

sysctl -p

 

 


參考資料:
http://www.cnblogs.com/straycats/p/7637373.html
http://www.cnblogs.com/wenwei-blog/p/5861450.html

http://blog.csdn.net/jackghq/article/details/54954486

http://blog.csdn.net/charlsehan/article/details/46801589

解決阿里雲上無法發送郵件的博客:http://www.cnblogs.com/wenwei-blog/p/6286944.html

修改web 服務端口號的博客:http://blog.csdn.net/donglynn/article/details/74002540

http://blog.csdn.net/wizard_rp/article/details/73147129 (這種方法會在 刷新配置時修改內容被覆蓋)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM