设为首页 收藏本站
查看: 875|回复: 0

[经验分享] CentOS源码安装GitLab汉化版

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-12 11:28:49 | 显示全部楼层 |阅读模式
示例环境:
软件版本
CentOS6.5 x86_64
Git2.6.2
Ruby2.2.3
Node.js4.2.1
Redis3.0.5
MariaDB
10.0.21
GitLab8.0.5汉化版
GitLab Shell2.6.6
Nginx1.8.0
Go1.5.1
Gitlab-git-http-server0.2.14
一、修改Yum源为阿里云提高下载速度
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
二、安装依赖软件包
yum -y install libicu-devel patch gcc-c++ readline-devel zlib-devel libffi-devel openssl-devel make autoconf automake libtool bison libxml2-devel libxslt-devel libyaml-devel zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker cmake pcre-devel
三、安装Git
  • 查看当前git版本

git --version
  • 如果git版本小于1.7.10则先卸载

rpm -e --nodeps git
  • 下载最新git源码包并编译安装

cd /jinglian
wget https://www.kernel.org/pub/software/scm/git/git-2.6.2.tar.xz
tar Jxf git-2.6.2.tar.xz
cd git-2.6.2
./configure --prefix=/jinglian/git
make && make install

echo 'export PATH=/jinglian/git/bin:$PATH' >> /etc/profile

四、安装Ruby
cd /jinglian
wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz --no-check-certificate
tar zxf ruby-2.2.3.tar.gz
cd ruby-2.2.3
./configure --prefix=/App/ruby --disable-install-rdoc
make && make install

echo 'export PATH=/jinglian/ruby/bin:$PATH' >> /etc/profile
  • 退出shell重新登录后修改RubyGems 镜像为淘宝提高下载速度

gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
gem install bundler --no-ri --no-rdoc

五、安装Node.js
cd /jinglian
[size=1em]wget https://nodejs.org/dist/v4.2.1/node-v4.2.1-linux-x64.tar.gz [size=1em]--no-check-certificate
tar zxf node-v4.2.1-linux-x64.tar.gz
mv node-v4.2.1-linux-x64 /jinglian/nodejs

echo 'export PATH=/jinglian/nodejs/bin:$PATH' >> /etc/profile
[size=1em]六、安装Go
cd /jinglian/src/
wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz --no-check-certificate
tar zxf go1.5.1.linux-amd64.tar.gz
mv go /jinglian/

cat >> /etc/profile << EOF
export GOROOT=/jinglian/go
export GOARCH=amd64
export GOOS=linux
export GOBIN=\$GOROOT/bin
export GOPATH=/root/code/go
export PATH=\$GOBIN:\$PATH
EOF
[size=1em]七、安装Redis
cd /jinglian/src/
wget http://download.redis.io/releases/redis-3.0.5.tar.gz
tar zxf redis-3.0.5.tar.gz
cd redis-3.0.5
make PREFIX=/jinglian/redis install

echo 'export PATH=/jinglian/redis/bin:$PATH' >> /etc/profile

  • 添加Redis配置 /jinglian/redis/redis.conf

daemonize yes
pidfile /jinglian/redis/redis.pid
port 6379
tcp-backlog 60000
timeout 0
tcp-keepalive 60
loglevel warning
logfile "/jinglian/redis/redis.log"
syslog-enabled no
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /jinglian/redis
slave-serve-stale-data yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-ping-slave-period 10
repl-timeout 60
repl-disable-tcp-nodelay no
slave-priority 100
maxclients 60000
maxmemory-policy noeviction
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

  • 启动Redis

/jinglian/redis/bin/redis-server /jinglian/redis/redis.conf
redis启动脚本:
#!/bin/bash
#
# redis - this script starts and stops the redis-server daemon
#
# chkconfig:  - 80 12
# description: Redis is a persistent key-value database
# processname: redis-server
# config:   /usr/local/redis/etc/redis.conf
# pidfile:   /usr/local/redis/var/redis.pid

source /etc/init.d/functions

BIN="/jinglian/redis/bin"
CONFIG="/jinglian/redis/redis.conf"
PIDFILE="/jinglian/redis/redis.pid"


### Read configuration
[ -r "$SYSCONFIG" ] && source"$SYSCONFIG"

RETVAL=0
prog="redis-server"
desc="Redis Server"

start() {

    if [ -e $PIDFILE ]
    then
       echo "$desc already running...."
       exit 1
    fi

    echo -n $"Starting $desc: "
    daemon $BIN/$prog $CONFIG

    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
}

stop() {
    echo -n $"Stop $desc: "
    killproc $prog
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
    return $RETVAL
}

restart() {
  stop
  start
}

case "$1" in
start )
    start
    ;;
stop )
    stop
    ;;
restart )
    restart
    ;;
condrestart)
    [ -e /var/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
status)
    status $prog
    RETVAL=$?
    ;;
  *)
    echo$"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
esac

exit $RETVAL




八、安装配置mysql

安装步骤不在复述。
登陆mysql,创建数据库并授权;
mysql -uroot -p
CREATE DATABASE `gitlabhq_production`;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `gitlabhq_production`.* TO 'git'@'127.0.0.1' IDENTIFIED BY 'PASSWORD';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `gitlabhq_production`.* TO 'git'@'localhost' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;
QUIT;

九、安装配置GitLab
useradd --system -s /bin/bash --comment 'GitLab' -m -d /home/git git
  • 修改git家目录权限,否则访问 gitlab.socket 报权限错误

chmod 755 /home/git
  • 切换至git用户

su - git
git clone https://gitlab.com/larryli/gitlab.git -b 8-0-zh gitlab
  • 配置GitLab

cd gitlab/
cp config/gitlab.yml.example config/gitlab.yml
  • 修改 gitlab.yml 配置,将行host: localhost 修改为本机IP地址或者域名,如为域名,确保域名映射本机地址,此时需修改 /etc/hosts 文件
  • 修改 gitlab.yml ,配置git路径行 bin_path: /usr/bin/git 为 bin_path: /App/git/bin/git
  • 新建卫星目录,拷贝示例文件,修改权限

mkdir -p /home/git/gitlab-satellites
cp config/secrets.yml.example config/secrets.yml
chmod 0600 config/secrets.yml
chmod -R u+rwX,go-w log/
chmod -R u+rwX tmp/
chmod -R u+rwX tmp/pids/
chmod -R u+rwX tmp/sockets/
chmod -R u+rwX public/uploads/
chmod 0750 public/uploads/
mkdir -p /home/git/repositories

chmod -R ug+rwX,o-rwx /home/git/repositories/
chmod -R ug-s /home/git/repositories/
find /home/git/repositories/ -type d -print0 | xargs -0 chmod g+s
cp config/unicorn.rb.example config/unicorn.rb
cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
git config --global core.autocrlf input
cp config/resque.yml.example config/resque.yml
  • 修改Redis相关配置 config/resque.yml 文件 production: unix:/var/run/redis/redis.sock为 production: redis://127.0.0.1:6379
  • 数据库配置

cp config/database.yml.mysql config/database.yml
  • 修改 config/database.yml 前段 PRODUCTION 部分内容, password: "secure password" 修改为password: "PASSWORD"

chmod o-rwx config/database.yml

bundle install --deployment --without development test postgres aws kerberos

十、安装GitLab Shell
bundle exec rake gitlab:shell:install[v2.6.6] REDIS_URL=redis://127.0.0.1:6379 RAILS_ENV=production

十一、安装gitlab-git-http-server
cd /home/git
git clone https://gitlab.com/gitlab-org/gitlab-git-http-server.git -b 0.2.14
cd gitlab-git-http-server
make
  • 注意:GitLab 8.0对应0.2.14版,安装最新版可能有未知问题。本人首次安装最新版0.3.0时,clone代码报错如下图:


十二、初始化数据库并激活高级功能
1
bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=newpassword
  • GITLAB_ROOT_PASSWORD 值为管理员 root 登录密码本例设为 newpassword


十三、切换为root用户后拷贝服务脚本
exit
cp /home/git/gitlab/lib/support/init.d/gitlab /etc/init.d/

十四、root权限配置Logrotate
cp /home/git/gitlab/lib/support/logrotate/gitlab /etc/logrotate.d/

十五、检查应用状态
su - git
cd gitlab/
bundle exec rake gitlab:env:info RAILS_ENV=production

十六、编译静态文件
bundle exec rake assets:precompile RAILS_ENV=production

十七、切换至root用户安装Nginx
exit
cd /App/src/
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure \
--prefix=/App/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--without-http_auth_basic_module \
--without-http_autoindex_module \
--without-http_browser_module \
--without-http_empty_gif_module \
--without-http_geo_module \
--without-http_limit_conn_module \
--without-http_limit_req_module \
--without-http_map_module \
--without-http_memcached_module \
--without-http_referer_module \
--without-http_split_clients_module \
--without-http_ssi_module \
--without-http_userid_module \
--without-mail_imap_module \
--without-mail_pop3_module \
--without-mail_smtp_module \
--without-poll_module \
--without-select_module

make && make install
useradd -s /bin/false nginx
  • 修改Nginx配置 /App/nginx/conf/nginx.conf

user  nginx nginx;
worker_processes  auto;

error_log  logs/error.log error;

pid        logs/nginx.pid;
worker_rlimit_nofile    65536;

events
{
    use epoll;
    accept_mutex off;
    worker_connections  65536;
}

http
{
    include       mime.types;
    default_type  text/html;

    charset UTF-8;
    server_names_hash_bucket_size   128;
    client_header_buffer_size       4k;
    large_client_header_buffers  4 32k;
    client_max_body_size            20m;

    open_file_cache max=65536  inactive=60s;
    open_file_cache_valid      80s;
    open_file_cache_min_uses   1;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile    on;
    server_tokens off;

    keepalive_timeout  60;

    gzip  on;
    gzip_min_length 1k;
    gzip_buffers  4   64k;
    gzip_http_version   1.1;
    gzip_comp_level 2;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    upstream gitlab
    {
        server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0;
    }

    upstream gitlab-git-http-server
    {
        server unix:/home/git/gitlab/tmp/sockets/gitlab-git-http-server.socket fail_timeout=0;
    }

    server {
        listen      80;
        server_name _;
        root        /home/git/gitlab/public;

        location /
        {
            try_files $uri $uri/index.html $uri.html @gitlab;
        }

        location /uploads/
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto   $scheme;
            proxy_set_header    X-Frame-Options     SAMEORIGIN;
            proxy_pass http://gitlab;
        }

        location @gitlab
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto   $scheme;
            proxy_set_header    X-Frame-Options     SAMEORIGIN;
            proxy_pass http://gitlab;
        }

        location ~ [-\/\w\.]+\.git\/
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            proxy_buffering off;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto   $scheme;
            proxy_pass http://gitlab-git-http-server;
        }

        location ~ ^/(assets)/
        {
            root /home/git/gitlab/public;
            gzip_static on;
            expires max;
            add_header Cache-Control public;
        }

        error_page 502 /502.html;
    }
}

十八、SMTP相关配置
  • 复制smtp示例配置

cp /home/git/gitlab/config/initializers/smtp_settings.rb.sample /home/git/gitlab/config/initializers/smtp_settings.rb
  • 修改 smtp_settings.rb 将 enable_starttls_auto: true 修改为 enable_starttls_auto: falseopenssl_verify_mode: 'peer' 删除或添加 # 注释其余按照自己的邮箱正常配置即可
    spacer.jpg
    修改/config/environments/production.rb 配置为用smtp发送邮件
    spacer.jpg
    修改vim /home/git/gitlab/config/gitlab.yml
    spacer.jpg


十九、启动GitLab实例
/etc/init.d/gitlab start
二十、浏览器打开登录页面

二十一、输入账号 root密码为初始化数据库时自定义变量 GITLAB_ROOT_PASSWORD 值



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-313264-1-1.html 上篇帖子: Centos6.5 yum源安装gitlab 下篇帖子: Git与Repo入门
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表