示例环境: 软件 | 版本 | CentOS | 6.5 x86_64 | Git | 2.6.2 | Ruby | 2.2.3 | Node.js | 4.2.1
| Redis | 3.0.5 | MariaDB
| 10.0.21 | GitLab | 8.0.5汉化版 | GitLab Shell | 2.6.6
| Nginx | 1.8.0 | Go | 1.5.1 | Gitlab-git-http-server | 0.2.14 |
一、修改Yum源为阿里云提高下载速度
二、安装依赖软件包 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
四、安装Ruby
五、安装Node.js [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
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
|
/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,创建数据库并授权;
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
|
cd gitlab/
cp config/gitlab.yml.example config/gitlab.yml
|
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
|
cp config/database.yml.mysql config/database.yml
|
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
十二、初始化数据库并激活高级功能 1
| bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=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
|
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相关配置 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' 删除或添加 # 注释其余按照自己的邮箱正常配置即可 修改/config/environments/production.rb 配置为用smtp发送邮件 修改vim /home/git/gitlab/config/gitlab.yml
十九、启动GitLab实例 二十、浏览器打开登录页面
二十一、输入账号 root,密码为初始化数据库时自定义变量 GITLAB_ROOT_PASSWORD 值
|