首页 > 代码库 > 一键安装 gitlab7 on rhel6.4 并设置邮件发送

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

一键安装 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

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


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

以上在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








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