ソフトウェアのバージョン:
CentOS 7.2 Git 2.12.0 Ruby 2.3.3 Node.js 6.10.1 Redis 3.2.8 MariaDB 10.1.20 GitLab 8.8.5漢化版 GitLab Shell 2.7.2 Nginx 1.10.3 Go 1.8 GitLab-Workhorse 0.7.1 一、インストール依存
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 /App/src/
wget https://www.kernel.org/pub/software/scm/git/git-2.12.0.tar.xz
tar Jxf git-2.12.0.tar.xz
cd git-2.12.0
./configure --prefix=/App/git
make && make install
echo 'export PATH=/App/git/bin:$PATH' >> /etc/profile
. /etc/profile
ln -s /App/git/bin/git /bin/
ln -s /App/git/bin/git-receive-pack /bin/
ln -s /App/git/bin/git-upload-pack /bin/
三、Rubyを取り付ける
cd /App/src/
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz
tar zxf ruby-2.3.3.tar.gz
cd ruby-2.3.3
./configure --prefix=/App/ruby --disable-install-rdoc
make && make install
ln -s /App/ruby/bin/ruby /bin/
echo 'export PATH=/App/ruby/bin:$PATH' >> /etc/profile
. /etc/profile
RubyGemsミラーを変更してダウンロード速度を向上:gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
gem install bundler --no-ri --no-rdoc
四、インストールNode.js
cd /App/src/
wget https://nodejs.org/dist/v6.10.1/node-v6.10.1-linux-x64.tar.xz
tar Jxf node-v6.10.1-linux-x64.tar.xz
mv node-v6.10.1-linux-x64 /App/node
echo 'export PATH=/App/node/bin:$PATH' >> /etc/profile
. /etc/profile
五、Goのインストール
cd /App/src/
wget http://www.golangtc.com/static/go/1.8/go1.8.linux-amd64.tar.gz
tar zxf go1.8.linux-amd64.tar.gz
mv go /App/
/etc/profile
環境変数構成の追加:export GOROOT=/App/go
export GOPATH=/root/code/go
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
六、Redisのインストール
cd /App/src/
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar zxf redis-3.2.8.tar.gz
cd redis-3.2.8
make PREFIX=/App/redis install
echo 'export PATH=/App/redis/bin:$PATH' >> /etc/profile
. /etc/profile
追加Redis構成/App/redis/redis.conf
:daemonize yes
pidfile /App/redis/redis.pid
port 0
unixsocket /tmp/redis.sock
unixsocketperm 777
tcp-backlog 60000
timeout 0
tcp-keepalive 60
loglevel warning
logfile "/App/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 /App/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:/App/redis/bin/redis-server /App/redis/redis.conf
七、MariaDBを取り付ける
cd /App/src/
wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.1.20/source/mariadb-10.1.20.tar.gz
tar zxf mariadb-10.1.20.tar.gz
cd mariadb-10.1.20
cmake . \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH=/App/mariadb \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EMBEDDED_SERVER:BOOL=OFF \
-DWITH_UNIT_TESTS:BOOL=OFF \
-LAH
make && make install
cp /App/mariadb/support-files/mysql.server /etc/init.d/mariadb
chmod u+x /etc/init.d/mariadb
echo 'export PATH=/App/mariadb/bin:$PATH' >> /etc/profile
. /etc/profile
MariaDB構成の追加/etc/my.cnf
:[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
server-id = 1
log-bin = bin.log
log-error = error.log
pid-file = mysql.pid
long_query_time = 1
slow_query_log
slow_query_log_file = slow.log
binlog_cache_size = 4M
binlog_format = mixed
max_binlog_cache_size = 16M
max_binlog_size = 1G
expire_logs_days = 30
ft_min_word_len = 4
back_log = 4096
max_allowed_packet = 64M
max_connections = 65536
max_connect_errors = 100
join_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
sort_buffer_size = 1M
query_cache_size = 64M
table_open_cache = 2048
thread_cache_size = 256
max_heap_table_size = 64M
tmp_table_size = 64M
thread_stack = 192K
connect_timeout = 600
interactive_timeout = 600
wait_timeout = 600
thread_concurrency = 8
local-infile = 0
skip-show-database
skip-name-resolve
skip-external-locking
#*** MyISAM
key_buffer_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 32M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1
myisam_recover
#*** INNODB
innodb_buffer_pool_size = 1G
innodb_additional_mem_pool_size = 32M
innodb_data_file_path = ibdata:32M:autoextend
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 10
innodb_thread_concurrency = 16
#innodb_force_recovery = 4
#*** Replication Slave
#read-only
#skip-slave-start
relay-log = relay.log
log-slave-updates
初期化MariaDB:useradd -s /bin/false -M mysql
/App/mariadb/scripts/mysql_install_db --basedir=/App/mariadb --datadir=/App/mariadb/data --user=mysql
起動MariaDB:/etc/init.d/mariadb start
実行コマンドmysql -uroot
登録MariaDBデータベース作成および認可:CREATE DATABASE `gitlabhq_production` DEFAULT CHARSET utf8;
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 ' ';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `gitlabhq_production`.* TO 'git'@'localhost' IDENTIFIED BY ' ';
FLUSH PRIVILEGES;
QUIT;
八、GitLabを取り付ける
useradd --system -s /bin/bash --comment 'GitLab' -m -d /home/git git
gitホームディレクトリ権限を変更し、そうでなければgitlabにアクセスする.socketレポート権限エラー:chmod 755 /home/git
gitユーザーcloneコードに切り替え:su - git
git clone https://gitlab.com/larryli/gitlab.git -b 8-8-zh gitlab
コピーGitLab構成:cd gitlab/
cp config/gitlab.yml.example config/gitlab.yml
修正gitlab.yml
配置、行host: localhost
をネイティブIPアドレスまたはドメイン名に変更し、ドメイン名の場合、ドメイン名が解析されていることを確認します. コピー例構成、変更権限: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/
mkdir public/uploads/
chmod 0700 public/uploads
chmod -R u+rwX builds/
chmod -R u+rwX shared/artifacts/
mkdir -p shared/pages/
chmod -R ug+rwX shared/pages/
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
git config --global gc.auto 0
git config --global repack.writeBitmaps true
cp config/resque.yml.example config/resque.yml
Redis関連構成の変更config/resque.yml
コンテンツproduction: unix:/var/run/redis/redis.sock
はproduction: unix:/tmp/redis.sock
である. コピーデータベース関連構成:cp config/database.yml.mysql config/database.yml
修正config/database.yml
前段PRODUCTION
部分内容、password: "secure password"
修正password: " "
に変更します.chmod o-rwx config/database.yml
インストールGems:bundle config mirror.https://rubygems.org https://gems.ruby-china.org
bundle install --deployment --without development test postgres aws kerberos
インストールGitLab Shell:bundle exec rake gitlab:shell:install REDIS_URL=unix:/tmp/redis.sock RAILS_ENV=production SKIP_STORAGE_VALIDATION=true
インストールGitLab-Workhorse:cd /home/git
git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
git checkout v0.7.1
make
データベースを初期化し、高度な機能を有効にします:cd /home/git/gitlab
bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=root
GITLAB_ROOT_PASSWORD
値はGitLab管理者root
パスワードです. rootユーザーに切り替えてサービススクリプトをコピー:exit
cp /home/git/gitlab/lib/support/init.d/gitlab /etc/init.d/
構成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
九、インストールNginx
rootユーザーインストールに切り替え:exit
cd /App/src/
wget http://nginx.org/download/nginx-1.10.3.tar.gz
tar zxf nginx-1.10.3.tar.gz
cd nginx-1.10.3
./configure --prefix=/App/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_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-workhorse
{
server unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.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-workhorse;
}
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: false
に変更し、openssl_verify_mode: 'peer'
行の前に#
注釈を追加し、残りは自分のメールボックスの正常な配置に従えばよい. 十一、GitLabの起動例
/etc/init.d/gitlab start