一键安装 gitlab7 on rhel6.4 并设置邮件发送

世间本无事,庸人自扰之。书归正传,简短节说:gitlab是个好东西,但是安装手册奇烂。虽然曾经对照文档一步一步安装起来gitlab 6.x,但是,时过境迁,再也不想把时间花在这无聊的配置上。谷歌已然变成往日黄花,又无翻越墙狱之利器,只能在百度和Bing之间来回寻找答案。功夫不负苦心人。终于找到这个bitnami的一键安装包。

bitnami-gitlab-7.1.1-0-linux-x64-installer.run。

​https://bitnami.com/redirect/to/39039/bitnami-gitlab-7.1.1-0-linux-x64-installer.run​

1 安装gitlab全过程

下载还是出奇的慢。下面是安装全过程:


[root@rhel64-origin ~]# service mysqld stop
Stopping mysqld: [ OK ]
[root@rhel64-origin ~]# ./bitnami-gitlab-7.1.1-0-linux-x64-installer.run
The installer detects that exists a 'git' user in the system. This installer will change the config uration for this user. Do you want to continue the installation? [y/N]: y

The installer detects that exists a 'gitlab_ci' user in the system. This installer will change the configuration for this user. Do you want to continue the installation? [y/N]: y

----------------------------------------------------------------------------
Welcome to the Bitnami Gitlab Stack Setup Wizard.

----------------------------------------------------------------------------
Select the components you want to install; clear the components you do not want
to install. Click Next when you are ready to continue.
GitLab : Y (Cannot be edited)
GitLab CI [Y/n] :Y

Is the selection above correct? [Y/n]: Y

----------------------------------------------------------------------------
Installation folder
Please, choose a folder to install Bitnami Gitlab Stack
Select a folder [/opt/gitlab-7.1.1-0]:

----------------------------------------------------------------------------
Create Admin account
Bitnami Gitlab Stack admin user creation
Email Address [user@example.com]: 3501xxxxx@qq.com
Login [user]: master
Password :88888888
Please confirm your password :88888888
----------------------------------------------------------------------------
Hostname that will be used to create internal URLs. If this value is incorrect,
you may be unable to access your Gitlab installation from other computers. It is
advisable to use a Domain instead of an IP address for compatibility with
different browsers.

Domain [192.168.82.181]:
Do you want to configure mail support? [y/N]: y

----------------------------------------------------------------------------
Configure SMTP Settings
This is required so your application can send notifications via email.
Default email provider:

[1] GMail
[2] Custom
Please choose an option [1] : 2

----------------------------------------------------------------------------
Configure SMTP Settings

This data is stored in the application configuration files and may be visible to
others. For this reason, it is recommended that you do not use your personal
account credentials.

Username []: 3501xxxxx@qq.com

Password :
Re-enter :
SMTP Host []: smtp.qq.com

SMTP Port []: 25

Secure connection

[1] None
[2] SSL
[3] TLS
Please choose an option [3] :3

----------------------------------------------------------------------------
Setup is now ready to begin installing Bitnami Gitlab Stack on your computer.
Do you want to continue? [Y/n]: y
----------------------------------------------------------------------------
Please wait while Setup installs Bitnami Gitlab Stack on your computer.

Installing
0% ______________ 50% ______________ 100%
#########################################

----------------------------------------------------------------------------
Setup has finished installing Bitnami Gitlab Stack on your computer.

Info: To access the Bitnami Gitlab Stack, go to
http://192.168.82.181:80 from your browser.
Press [Enter] to continue:

2 更改配置以发送邮件

重要!此时还不能发送邮件。需要更改几个配置:

1)config/environments/production.rb


# vi /opt/gitlab-7.1.1-0/apps/gitlab/htdocs/config/environments/production.rb
........
# config.action_mailer.delivery_method = :sendmail
# Defaults to:
# # config.action_mailer.sendmail_settings = {
# # location: '/usr/sbin/sendmail',
# # arguments: '-i -t'
# # }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.qq.com",
:port => "25",
:domain => "smtp.qq.com",
:authentication => :plain,
:user_name => "3501xxxxx@qq.com",
:password => "********",
:enable_starttls_auto => true
}
........

如果发邮件不需要登录和密码,设置为:

:address => "your smtp server ip",
:port => "25",
:domain => "www.mymibao.com", # 域名无所谓
:authentication => :none, # 无需登录
# 以下注释掉
#:user_name => "3501xxxxx@qq.com",
#:password => "********",
#:enable_starttls_auto => true


2)smtp_settings.rb


# cd /opt/gitlab-7.1.1-0/apps/gitlab/htdocs/config/initializers/
# cp smtp_settings.rb.sample smtp_settings.rb
# vi smtp_settings.rb


内容截取如下:

# To enable smtp email delivery for your GitLab instance do next:
# 1. Rename this file to smtp_settings.rb
# 2. Edit settings inside this file
# 3. Restart GitLab instance
#
if Rails.env.production?
Gitlab::Application.config.action_mailer.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
address: "smtp.qq.com",
port: 25,
user_name: "3501xxxxx@qq.com",
password: "********",
domain: "qq.com",
#authentication: :none
#enable_startttls_auto: true
authentication: :login,
enable_starttls_auto: true
}
end

3)config/gitlab.yml

找到下面的内容,改成你的email地址:


# # # # # # # # # # # # # # # # # #
# GitLab application config file #
# # # # # # # # # # # # # # # # # #
#
# How to use:
# 1. copy file as gitlab.yml
# 2. Replace gitlab -> host with your domain
# 3. Replace gitlab -> email_from

production: &base
#
# 1. GitLab app settings
# ==========================

## GitLab settings
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.82.181
port: 80
https: false

# Uncommment this line below if your ssh host is different from HTTP/HTTPS one
# (you'd obviously need to replace ssh.host_example.com with your own host).
# Otherwise, ssh host will be set to the `host:` value above
# ssh_host: ssh.host_example.com

# WARNING: See config/application.rb under "Relative url support" for the list of
# other files that need to be changed for relative url support
# relative_url_root: /gitlab

# Uncomment and customize if you can't use the default user to run GitLab (default: 'git')
# user: git

## Email settings
# Email address used in the "From" field in mails sent by GitLab
email_from: 3501xxxxx@qq.com
support_email: 3501xxxxx@qq.com

# Email server smtp settings are in [a separate file](initializers/smtp_settings.rb.sample).
........


注意,如果你按照上面的设置,出现在用户的邮件下面的地址链接将是:

​http://192.168.82.181:80/...​

通常这个链接是内部的地址,用户点击是无效的。因此我需要修改上面的配置文件,使邮件地址链接指向有意义。例如,我需要用下面的地址进入gitlab。(www.mymibao.com是我假设的名字)

http://www.mymibao.com/gitlab

我的config/gitlab.yml修改如下:


host: www.mymibao.com

relative_url_root: /gitlab


这样,出现在用户邮件里的链接地址为:

​http://www.mymibao.com.gitlab/...​

3 启动服务并访问

# /opt/gitlab-7.1.1-0/ctlscript.sh restart

此时创建用户,就会发送邮件了。

一键安装 gitlab7 on rhel6.4 并设置邮件发送_email


别忘记 qq邮箱中打开下面的服务:

一键安装 gitlab7 on rhel6.4 并设置邮件发送_linux_02

以上在RHEL6.4上经过严格测试。


4 将gitlab置于nginx后面

上面的设置无法正常工作于nginx后面。如果想用另外服务器上的nginx指向这台gitlab,就需要更改gitlab的几处配置文件:

1) /opt/gitlab-7.1.1-0/apps/gitlab/conf/httpd-app.conf

更改之后如下:


<Directory "/opt/gitlab-7.1.1-0/apps/gitlab/htdocs/public">
PassengerEnabled on
Options -MultiViews
AllowOverride All
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>

SetEnv RAILS_RELATIVE_URL_ROOT "/gitlab"
PassengerAppRoot "/opt/gitlab-7.1.1-0/apps/gitlab/htdocs"
<IfModule pagespeed_module>
ModPagespeedDisallow "*"
</IfModule>
PassengerUser git
PassengerGroup git
SetEnv MAGIC "/opt/gitlab-7.1.1-0/ruby/lib/ruby/gems/2.0.0/gems/charlock_holmes-0.6.9.4/ext/charlock_holmes/src/file-5.08/magic/magic.mgc"
SetEnv PATH "/opt/gitlab-7.1.1-0/python/bin:${PATH}"

</Directory>

PassengerPreStart http://127.0.0.1:80/gitlab


更改前的如下,注意它们的区别:


<Directory "/opt/gitlab-7.1.1-0/apps/gitlab/htdocs/public">
PassengerEnabled on
Options -MultiViews
AllowOverride All
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>

PassengerAppRoot "/opt/gitlab-7.1.1-0/apps/gitlab/htdocs"
<IfModule pagespeed_module>
ModPagespeedDisallow "*"
</IfModule>
PassengerUser git
PassengerGroup git
SetEnv MAGIC "/opt/gitlab-7.1.1-0/ruby/lib/ruby/gems/2.0.0/gems/charlock_holmes-0.6.9.4/ext/charlock_holmes/src/file-5.08/magic/magic.mgc"
SetEnv PATH "/opt/gitlab-7.1.1-0/python/bin:${PATH}"

</Directory>

PassengerPreStart http://127.0.0.1:80


2) /opt/gitlab-7.1.1-0/apps/gitlab/gitlab-shell/config.yml

找到下面的一句:

# Url to gitlab instance. Used for api calls. Should end with a slash.
gitlab_url: "http://vm-gitlab.com:80/"


更改如下:

# Url to gitlab instance. Used for api calls. Should end with a slash.
gitlab_url: "http://vm-gitlab.com:80/gitlab/"




这样我们访问gitlab就是按照下面的地址:

http://vm-gitlab.com:80/gitlab/


如果不改动这里,每次git push的时候将出现下面的错误:

cl@ubuntu64:~/workspace/vm-gitlab7/test2$ git add .
cl@ubuntu64:~/workspace/vm-gitlab7/test2$ git commit -m 'first commit'
[master (root-commit) f0779c8] first commit
1 file changed, 1 insertion(+)
create mode 100644 test2/README
cl@ubuntu64:~/workspace/vm-gitlab7/test2$ git remote add origin http://vm-gitlab.com/gitlab/master/test2.git
cl@ubuntu64:~/workspace/vm-gitlab7/test2$ git push -u origin master
Username for 'http://vm-gitlab.com': master
Password for 'http://master@vm-gitlab.com':
Counting objects: 4, done.
Writing objects: 100% (4/4), 250 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to access master!
remote: error: hook declined to update refs/heads/master
To http://vm-gitlab.com/gitlab/master/test2.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://vm-gitlab.com/gitlab/master/test2.git'


配置改动之后,重新启动gitlab,一切正常。

/opt/gitlab-7.1.1-0/ctlscript.sh restart