環境說明:
虛擬機 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 (這種方法會在 刷新配置時修改內容被覆蓋)