My GitLab Guide

Kembali ke tujuan sebenarnya dari blog ini adalah sebagai catatan pribadi yang sewaktu-waktu mungkin akan diperlukan, disamping penerbitan beberapa tulisan/ arikel saya yang dimuat di beberapa situs sharing untuk dokumen (seperti Superkomputer di GNU/ Linux native dan topik lainnya – silahkan lihat disini https://tifosilinux.wordpress.com/category/artikel-hary/ )

Saat ini memang sudah banyak referensi yang dapat menunjang pekerjaan kita bahkan di berbagai aspek (baik teknologi/ IT, perbankan, kedokteran, dll). Salah satunya para manajer proyek yang tidak perlu repot bagaimana melakukan tracking code untuk para bawahan atau partner nya. Meskipun bukan hal yang baru dan satu-satunya tools, namun gitlab bisa dijadikan sebuah alternatif.

frontend
frontend2
Lihat, hal yang sederhana namun bug-nya akan cukup memakan waktu saat kita pertama kali melakukan instalasi. Berdasarkan pengalaman dahulu kala, saya coba explore situs github.com, kemudian saya tuliskan saja disini langkahnya. Saya coba praktikan pada VPS server office dengan spesifikasi CentOS 6 x86_64, RAM 1GiB (1 core of cpu), HDD 10GiB. (Perhatikan dengan cermat versi Ruby, bundler, dan git yang kita gunakan agar tidak terjadi conflict, kemudian sesuaikan path directory)
Terlalu teknis dan textbook, namun tidak akan pernah lupa untuk mencantumkan referensi nya :

1). wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://www.fedoraproject.org/static/0608B895.txt2). rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
3). rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
4). wget -O /etc/yum.repos.d/PUIAS_6_computational.repo https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/install/centos/PUIAS_6_computational.repo
5). wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-puias http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias
6). rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-puias
7). yum-config-manager –enable epel –enable PUIAS_6_computational
8). yum -y update
9). yum -y groupinstall ‘Development Tools’
10). yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64
11). yum-config-manager –enable rhel-6-server-optional-rpms
12). yum -y install vim-enhanced
13). update-alternatives –set editor /usr/bin/vim.basic
14). yum -y install python-docutils
15). git –version
16). yum -y remove git
17). yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel
18). mkdir /tmp/git && cd /tmp/git
19). curl –progress https://www.kernel.org/pub/software/scm/git/git-2.1.3.tar.gz | tar xz
20). cd git-2.1.3/
21). ./configure
22). make
23). make prefix=/usr/local install
24). which git # di langkah berikutnya, sesuaikan path nya, by default /usr/local/bin/ (baik untuk git, bundle, dan ruby)
25). yum remove ruby
26). cd <your-ruby-source-path>
27). make uninstall
28). mkdir /tmp/ruby && cd /tmp/ruby
29). curl –progress ftp://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz | tar xz
30). cd ruby-2.1.2
31). ./configure –disable-install-rdoc
32). make
33). make prefix=/usr/local install
34). gem install bundler –no-doc
35). which ruby
36). ruby -v
37). adduser –system –shell /bin/bash –comment ‘GitLab’ –create-home –home-dir /home/git/ git
38). visudo # sesuaikan path menjadi : Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
39). yum install -y mysql-server mysql-devel
40). chkconfig mysqld on
41). service mysqld start
42). mysql –version
43). mysql_secure_installation
44). mysql -u root -p
45). mysql> CREATE USER ‘git’@’localhost’ IDENTIFIED BY ‘$password’; # sesuaikn variabel password
46). mysql> SET storage_engine=INNODB;
47). mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
48). mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO ‘git’@’localhost’;
49). sudo -u git -H mysql -u git -p -D gitlabhq_production
50). chkconfig redis on
51). cp /etc/redis.conf /etc/redis.conf.orig
52). sed ‘s/^port .*/port 0/’ /etc/redis.conf.orig | sudo tee /etc/redis.conf
53). echo ‘unixsocket /var/run/redis/redis.sock’ | sudo tee -a /etc/redis.conf
54). echo -e ‘unixsocketperm 0770’ | sudo tee -a /etc/redis.conf
55). mkdir /var/run/redis
56). chown redis:redis /var/run/redis
57). chmod 755 /var/run/redis
58). if [ -d /etc/tmpfiles.d ]; then
echo ‘d  /var/run/redis  0755  redis  redis  10d  -‘ | sudo tee -a /etc/tmpfiles.d/redis.conf
fi;
59). service redis restart
60). usermod -aG redis git
61). cd /home/git
62). sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-4-stable gitlab
63). cd /home/git/gitlab
64). sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
65). sudo -u git -H editor config/gitlab.yml # ubah port pada section 1 ke 443 dan set https ke nilai true
66). chown -R git log/
67). chown -R git tmp/
68). chmod -R u+rwX log/
69). chmod -R u+rwX tmp/
70). sudo -u git -H mkdir /home/git/gitlab-satellites
71). chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites
72). chmod -R u+rwX tmp/pids/
73). chmod -R u+rwX tmp/sockets/
74). chmod -R u+rwX  public/uploads
75). sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
76). nproc
77). sudo -u git -H editor config/unicorn.rb # sesuaikan number workers sesuai core server kita
78). sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
79). sudo -u git -H git config –global user.name “GitLab”
80). sudo -u git -H git config –global user.email “example@example.com”
81). sudo -u git -H git config –global core.autocrlf input
82). sudo -u git -H cp config/resque.yml.example config/resque.yml
83). sudo -u git -H editor config/resque.yml
84). sudo -u git cp config/database.yml.mysql config/database.yml
85). sudo -u git -H editor config/database.yml # sesuaikan password di mysql2
86). sudo -u git -H chmod o-rwx config/database.yml
87). cd /home/git/gitlab
88). sudo -u git -H bundle install –deployment –without development test postgres aws
89). sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production
90). sudo -u git -H bundle exec rake gitlab:shell:install[v2.1.0] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
91). restorecon -Rv /home/git/.ssh
92). sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=newpassword # sesuikan password yg kita ingin gunakan
93). wget -O /etc/init.d/gitlab https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn
94). chmod +x /etc/init.d/gitlab
95). chkconfig –add gitlab
96). chkconfig gitlab on
97). cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
98). sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
99). sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
100). service gitlab start
101). yum update
102). yum -y install nginx
103). chkconfig nginx on
104). wget -O /etc/nginx/conf.d/gitlab.conf https://gitlab.com/gitlab-org/gitlab-ce/raw/master/lib/support/nginx/gitlab-ssl # sesuaikan FQDN nya
105). usermod -a -G git nginx
106). chmod g+rx /home/git/
107). service nginx start
108). nginx -t
109). lokkit -s http -s https -s ssh
110). service iptables restart
111). cd /home/git/gitlab
112). sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
113). sudo -u git -H editor /home/git/gitlab-shell/config.yml # ubah endpoint https ke alamat kamu. Misal: https://tifosilinux.com
114). mkdir -p /etc/nginx/ssl/
115). cd /etc/nginx/ssl/
116). sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out gitlab.crt -keyout gitlab.key
117). sudo chmod o-r gitlab.key
118). vim /etc/nginx/nginx.conf # Edit bagian user ke: user git root; dan worker_processes 1; serta keepalive_timeout 65;
119). service gitlab restart && service redis restart && service nginx restart

Done

Advertisements

Tinggalkan pesan atau komentar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s