RHEL/CentOS 6์ gitlab ์ค์น
์ค๋๋ ๋ฌธ์์ด๋ ๋์ ๋์ปค๋ก ๊น๋ฉ ์ค์นํ๊ธฐ(install gitlab using docker) ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ฐ์
giblab ์ ruby on rail framework ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋ githubย ์ ๋น์ทํย Web Base git repository management system์ด๋ค.
github ์ ๋ฌ๋ฆฌ community edition์ด ์๊ณ ๋ผ์ด์ ์ค๋ย MIT์ด๋ฏ๋ก ๊ธฐ์ ๋ด์์ ์์ ์ ์ฉ๋๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
github Enterprise ๊ฐ ๊ณ ๊ฐ๋ผ ์ฌ๊ธฐ ๋ฒ๊ฑฐ์ด ์คํํธ์ ์ด๋ ์๊ท๋ชจ ๊ธฐ์ ์์ ์ข์ ์๋ฃจ์ ์ด ๋ ์ ์๋ค.
ย ย |-- home
ย ย ย ย | |-- git
ย ย ย ย ย ย ย | |-- .ssh
ย ย ย ย ย ย ย | |-- gitlab
ย ย ย ย ย ย ย | |-- gitlab-satellites
ย ย ย ย ย ย ย | |-- gitlab-shell
ย ย ย ย ย ย ย | |-- repositories
- .ssh - openssh ๊ฐ ์ฌ์ฉํ๋ ๊ฐ์ธํค์ ๊ณต๊ฐํค, ๊ทธ๋ฆฌ๊ณ ์ ๋ขฐํ๋ ํธ์คํธ์ ๊ณต๊ฐํค ๋ชฉ๋ก์ด ๋ด๊ธดย authorized_keys ์ด ์๋ ๋๋ ํฐ๋ฆฌ์ด๋ค.ย authorized_keys ย ์ gitlab-shell ์ด ์ฌ์ฉํ๋ค.
- gitlab - gitlab ์ ํต์ฌ ์ํํธ์จ์ด๊ฐ ์กด์ฌํ๋ค.
- gitlab-satellites - Web UI ์์ ํ์ผ ํธ์ง๊ณผ Merge request ์ฒ๋ฆฌ๋ฅผ ์ํด ์ ์ฅ์๋ฅผ ์ฒดํฌ์์ํ๋ค. ์์ ์ ์์ ํ์ผ ๋๋ ํฐ๋ฆฌ์์ ์ด๋ฃจ์ด ์ง๋ค.
- gitlab-shell - gitlab ์ ํต์ฌ ์ปดํฌ๋ํธ๋ก SSH ๊ธฐ๋ฐ์ git ๋ณต์ ์ ๋ค๋ฅธ git ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ค.
repositories - ๋ค์์คํ์ด์ค๋ก ๊ตฌ์กฐํ๋ ์ค์ git ์ ์ฅ์๊ฐ ์กด์ฌํ๋ ๋๋ ํฐ๋ฆฌ์ด๋ค. ์ ์ฅ์์ push/pull ์ด ๋ฐ์ํ ๋ ์ด ๋๋ ํฐ๋ฆฌ์์ ์ด๋ฃจ์ด ์ง๋ค. git์ ๋ชจ๋ ์ด๋ ฅ์ ๋ด๊ณ ์๋ ๊ฐ์ฅ ๋ฏผ๊ฐํ ๋ฐ์ดํ์ด๋ฏ๋ก ๋ฐ๋์ ๋ฐฑ์ ํด์ผ ํ๋ค.
ํ๊ฒฝ
github์ ์๋ ์ค์น ๋ฌธ์์ ๋ค๋ฅด๊ฒ DB๋ MySQL๋ง ์ฌ์ฉํ๊ณ Web Server๋ apache httpd ๋ง ์ฌ์ฉํ๊ฒ ๋ฌธ์ ์์ ํจ
OS | CentOS 6.x | |
---|---|---|
ruby | 2.0.0p451 | |
gitlab | 6.7-stable | |
gitlab-shell | 1.9.4 | |
DBMS | MySQL 5.1 | |
Web Server | apache httpd 2.2.15(CentOS ๋ด์ฅ) |
์ฌ์ ์ค๋น ์ฌํญ
Red Hat Enterprise Linux 6 / CentOS 6 ์ด ์ค์น๋์ด ์์ด์ผ ํ๋ค.
EPEL repository ๋ฑ๋ก
fedora ์ repository ์ธ EPEL ์ด ๋ฑ๋ก๋์ด ์์ด์ผ ํ๋ค. ๋ค์ ๋ช ๋ น์ด๋ก ๋ฑ๋กํ์.
sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
ย ์์ธํ ๋ด์ฉ์ย RHEL/CentOS 5,6 ์ EPEL ๊ณผ Remi/WebTatic Repository ์ค์นํ๊ธฐ ์ ์ฐธ๊ณ
Git 1.8
ย git 1.8 ์ด ํ์ํ๋ CentOS6 ์๋ 1.7 ์ด ํ์ฌ๋์ด ์๋ค. ๋ค์ ๋ช ๋ น์ด๋กย 1.7 ์ด ์ค์น๋์๋ค๋ฉด ์ญ์ ํ๊ณ 1.8์ ์ค์นํ์.
yum -y remove git wget http://springdale.math.ias.edu/data/puias/computational/6/x86_64/git-1.8.3.1-1.sdl6.x86_64.rpm wget http://springdale.math.ias.edu/data/puias/computational/6/x86_64/perl-Git-1.8.3.1-1.sdl6.noarch.rpm yum localinstall git-*.rpm perl-Git-*.noarch.rpm
์ค์น
ํ์ ํจํค์ง ์ค์น
gitlab ์ ์ค์นํ๋ ๋ฐ ํ์ํ ์ปดํ์ผ๋ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค. ๋จผ์ ์์คํ ์ ์ ๋ฐ์ดํธ ํ์.
yum -y update
ย
์ปดํ์ผ๋ฌ์ ๋ง์ปค๋ฑ์ ๊ฐ๋ฐ ํจํค์ง ๊ทธ๋ฃน์ ์ค์นํ๋ค.
yum -y groupinstall 'Development Tools'
ย
redis์ ์๋ํฐ, compile ์ ํ์ํ library ๋ฅผ ์ค์นํ๋ค.
yum -y install vim-enhanced readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo crontabs logwatch logrotate perl-Time-HiRes patch
Configure redis
Key/Value store ์ธ redis ๋ฅผ ์ค์ ํด์ผ ํ๋ค. OS ๋ถํ ์ redis ๋ ๊ตฌ๋๋๊ฒ run level ์ ์กฐ์ ํ๋ค.
chkconfig redis on service redis restart
Mail server ์ค์น
gitlab ์ฌ์ฉ์ ์ด๋ฉ์ผ๋ก ๊ณต์ง๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ๋ฉ์ผ ์๋ฒ๋ฅผ ์ค์นํด์ผ ํ๋ค. RHEL 6 ๋ถํฐ๋ postfix ๊ฐ ๊ธฐ๋ณธ smtp ์๋ฒ์ด๋ค
yum -y install postfix
Ruby ์ค์น
gitlab ์ ruby on rails ํ๋ ์์ ๊ธฐ๋ฐ์ด๋ฏ๋ก ruby ๋ ๊ฐ์ฅ ์ค์ํ ์์์ค ํ๋์ด๋ค. .CentOS6 ์ ๊ธฐ๋ณธ ํ์ฌ๋ ruby ๋ 1.8.x ๋์ด๋ฏ๋ก gitlab ์ ๊ตฌ๋ํ์ง ๋ชปํ๋ฏ๋ก ์ญ์ ํด์ผ ํ๋ค. gitlab ์ rvm, rbenv,ย chruby ๊ฐ์ ruby manager ๋ฅผ ๊ถ์ฅํ์ง ์๋๋ค. gcc ๋ก ruby ๋ฅผ ์์ค์์ ๋น๋ํด์ ์ฌ์ฉํ๊ฑฐ๋ย ๋ย rpm ์ผ๋ก ๋ง๋ ํ์ ์ค์นํ ์ ์๋ค. (rpm ์ค์น ์ถ์ฒ)
rpm ์ผ๋ก ๋น๋ํ ์ค์น
- ruby 2.0, 2.1 ์ rpmbuild ํด์ yum ์ผ๋ก ์ค์นํ๊ธฐ ์ ์ฐธ๊ณ ํ์ฌ rpm ์ ๋น๋
ํจํค์ง๋ก ์ค์น
ย ๋ฏธ๋ฆฌ ๋น๋๋ rpm ์ ๋ค์ด๋ฐ์ ์ค์นํ๋ค.
wget https://github.com/lesstif/ruby-rpm/releases/download/v0.1/ruby-2.0.0p451-1.el6.x86_64.rpm yum localinstall ruby*
Source ์์ ๋น๋ํด์ ์ค์น
๋จผ์ ๊ธฐ๋ณธ ํ์ฌ๋ ruby ๊ฐ ์๋ค๋ฉด ์ญ์ ํ๋ค.
yum remove ruby
ruby ๋ฅผ ์์ค์์ ๋น๋ํ๋ค
wget http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz tar zxvf ruby-2.0.0-p451.tar.gz cd ruby-2.0.0-p451 CFLAGS=-O ./configure --disable-install-rdoc make install
gem ์ผ๋ก Ruby Dependency Management ์ธ bundlerย ์ค์น
gem install bundler --no-ri --no-rdoc
System User ์์ฑ
git ์ฌ์ฉ์ ์์ฑ. ์๋น์ค ๊ตฌ๋์ฉ ์ ์ฉ์ด๋ฉฐ ๋ณด์๋๋ฌธ์ย login ์ ์ ๋๊ฒ ์ค์ ํ๋ค.
adduser --system --shell /sbin/nologin --comment 'GitLab' --create-home --home-dir /home/git/ git usermod -s /bin/bash git
ruby ๋ฐ ๊ธฐํ ์ ํธ์ด /usr/loca/bin ์ ์์ผ๋ฉด PATH ์ ์ถ๊ฐํด์ผ ํ๋ค. git ๊ณ์ ์ ๋ก๊ทธ์ธ ๋ถ๊ฐ์ด๋ฏ๋ก /etc/sudoers ํ์ผ์ ์ฐพ์์ secure_path ์ /usr/local/bin ์ ์ถ๊ฐํ์.
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
gitlab shell
gitlab shell ์ ssh ์ ๊ทผ ๋ฐ ์ ์ฅ์ ๊ด๋ฆฌ๋ฅผ ํ๋ ์ ํธ๋ฆฌํฐ์ด๋ค. gitlab ์์ ์์ค๋ฅผ clone ํด์ ์ค์นํ๋ฉด ๋๋ค.
Go to home directory
cd /home/git
clone gitlab shellย
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.9.4
gitlab shell ์ค์
cd gitlab-shell sudo -u git -H cp config.yml.example config.yml
์๋ํฐ๋ก config.yml ์ ์ด์ด์ url์ ์ค์ ํด ์ค๋ค. gitlab์ API ํธ์ถ URL ๋ก gitlab ๊ธฐ๋ณธ ์ค์ ์ด http ๋ก ๋ค์ด์จ ๊ฒฝ์ฐ https ๋ก ํฌ์๋ฉํ๋ฏ๋ก https ๋ก ์ค์ ํ๋๊ฒ ์ข๋ค.
gitlab_url: "https://gitlab.example.com/"
HTTPS ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ๋ขฐํ๋ ์ธ์ฆ๊ธฐ๊ด์์ ๋ฐ๊ธ๋ฐ์ SSL ์ธ์ฆ์๊ฐ ์๋๋ผ๋ฉด self_signed_cert : ์ค์ ์ true ๋ก ํด์ผ ๊ฒ์ฆ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
gitlab-shell ์ค์น๋ฅผ ์งํํ๋ค
sudo -u git -H ruby ./bin/install
์ธ๋ถ์์ git ์์ ์(clone/push/[ull ๋ฑ) ssh ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํ๋๋ ํฐ๋ฆฌ์ .ssh ํด๋๋ฅผ ssh ๋ฐ๋ชฌ ํ๋ก์ธ์ค๊ฐ ์ฝ์ ์ ์๊ฒ SELinux context ๋ฅผ ์ค์ ํ๋ค.
SELinux context ๊ฐ ๋ถ์ฌ๋์ง ์์ ๊ฒฝ์ฐ ssh ๋ฐ๋ชฌ์ด /home/git/.ssh ๋ฅผ ์ฝ์ง ๋ชปํด์ ์๋ ๋ช ๋ น์ด ์คํ๋์ง ์์ ๊ฒฝ์ฐ "'repository/project.git'ย does not appear to be a git repository" ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
restorecon -Rv /home/git/.ssh
์ ์ ์ค์ ์ฌ๋ถ๋ ls -lZ /home/git/.ssh ๋ฅผ ์คํํ์ฌย ssh_home_t ๊ฐ ๋ณด์ด๋ฉด ๋๋ค.
DataBase ์ค์
gitlab์ MySQL ๊ณผ PostreSQL ์ ์ง์ํ๋ค.
MySQLย
๋จผ์ MySQL์ด ์ค์น๋์ด ์๊ณ ๊ตฌ๋๋์ด ์์ด์ผ ํ๋ค. ์ค์น๋์ด ์์ง ์๋ค๋ฉด yum ์ผ๋ก ์ค์นํด ์ค๋ค.ย gitlab ์ค์น์ค ruby ์ฉ mysql driver ๋ฅผ compileย ํ๋ ๋จ๊ณ๊ฐ ์์ผ๋ฏ๋ก mysql-devel ์ ๊ฐ์ด ์ค์นํด์ผ ํ๋ค.
yum install mysql mysql-server mysql-libs mysql-devel -y
/etc/my.cnf ์ character ์ utf-8๋ก ์ค์ ํด ์ฃผ๊ณ ์ฌ๊ตฌ๋ํ๋ค. (MySQL ๊ธฐ๋ณธ ์บ๋ฆญํฐ ์ ์ค์ ํ๊ธฐ - RHEL/CentOS 6 ์ฐธ๊ณ )
[mysqld] max_allowed_packet = 32M default-character-set=utf8 ย [client] default-character-set=utf8 [mysql] default-character-set=utf8
MySQL root ๋ก ์ฐ๊ฒฐํ์ DB ์ ๊ณ์ ์ ์์ฑํ๋ค.
# Create a user for GitLab. (change supersecret to a real password) CREATE USER 'git'@'localhost' IDENTIFIED BY 'supersecret'; # Create the GitLab production database CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; # Grant the GitLab user necessary permissions on the table. GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost';
์ ์์ ์ผ๋ก ์์ฑ๋์๋์ง ํ์ธํ๋ค.
mysql -u git -psupersecret -D gitlabhq_production
GitLab ์ค์น
Source Clone
git home directory ๋ก ์ด๋
cd /home/git
Clone GitLab repository
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-7-stable gitlab
gitlab ์ค์
- cd /home/git/gitlab
gitlab ์ ์์ ์ค์ ํ์ผ์ ๋ณต์ฌํ์ฌ ์ค์ ์ ์์ ํ ์ ์๊ฒ ์ค๋นํ๋ค.
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
์ด์ ์ ํธํ๋ ์๋ํฐ๋ก config/gitlab.yml ์ ํธ์งํ์ฌ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์๋ค. ์์ ํด์ผํ ํญ๋ชฉ์ ๋ง์ง ์์ผ๋ฉฐ gitlab ์ด ์ฌ์ฉํ๋ ruby ๋ก ๊ตฌํ๋ Unicorn ์ด๋ผ๋ ์น์๋ฒ์ ํฌํธ(๊ธฐ๋ณธ๊ฐ 8080)์ ์ด๋ฉ์ผ ์ ์ก์ ์ฃผ์ ์ ๋๋ง ์์ ํ๋ฉด ๋๋ค. ์ ๋์ฝย ย ์น์๋ฒ์ ํฌํธ๋ ํน๋ณํ ์ด์ ๊ฐ ์๋ค๋ฉด ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ๋๊ฑธ ๊ถ์ฅํ๋ค.ย
sudo -u git -H vim config/gitlab.yml
gitlab: ## ๋๋ฉ์ธ ๋ช ์ผ๋ก ์์ (repository ์์ฑ์ git clone URL ์ ์ฌ์ฉ๋ ์ฃผ์์ด๋ FQDN ์ผ๋ก ์ง์ ํด์ผ ํ๋ค) host: gitlab.exampl.ecom port: 443 https: true ## gitlab ์ด ๊ณต์ง์ฉ ์ด๋ฉ์ผ์ ๋ณด๋ผ๋ From ์ ๋ค์ด๊ฐ ์ฃผ์ email_from : gitlab@example.com ## true ๋ก ์ค์ ํ๋ฉด ์ฌ์ฉ์๊ฐ ์ง์ ๊ณ์ ์ ๋ฑ๋กํ ์ ์๋ค. ๊ธฐ๋ณธ๊ฐ์ false ์ด๋ฉฐ ๊ด๋ฆฌ์๊ฐ ๊ณ์ ์ ๋ฑ๋กํด์ผ ํ๋ค. signup_enabled: true
gitlab์ ๊ธฐ๋ณธ ์ค์ ์ด https ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์ด ์์ผ๋ฏ๋ก port ๋ 443, https ๋ true ๋ก ์ค์ ํด์ผ ํ๋ค. ์ด ์ค์ ๊ฐ์ git ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด ํ์ํ๋ ์ํฌํ๋ก์ฐ์๋ ์ถ๋ ฅ๋๋ฏ๋ก ์ ์ค์ ํด์ผ ํ๋ค.
gitlab ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ ์์ ๋๋ ํฐ๋ฆฌ์ ์ธ ์ ์๊ฒ ๊ถํ์ ๋ถ์ฌํ๋ค.
chown -R git log/ tmp chmod -R u+rwX log/ tmp
satellites ๋ชจ๋์ ์ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
sudo -u git -H mkdir /home/git/gitlab-satellites
sockets๊ณผ pids ๊ธฐ๋ก์ ์ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ gitlab ์ด ์ธ์ ์๊ฒ ๊ถํ์ ๋ถ์ฌํ๋ค.
sudo -u git -H mkdir tmp/{pids,sockets} sudo chmod -R u+rwX tmp/{pids,sockets}
๋ฐฑ์ ์ ์ํ public/uploads ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
sudo -u git -H mkdir public/uploads sudo chmod -R u+rwX public/uploads
์ ๋์ฝ ์น์๋ฒย ์ค์ ์ ์ํด ๊ธฐ๋ณธ ์ค์ ํ์ผ์ ๋ณต์ฌํ๋ค.
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
์ ํธํ๋ ์๋ํฐ๋ก config/unicorn.rb ํ์ผ์ ํธ์งํ๋ค. ์์ ํด์ผ ํ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
worker_processes 2 -> ๊ธฐ๋ณธ worker ๋ 2 ์ง๋ง ๋ง์ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ์๋ฒ๋ผ๋ฉด 3 ๋๋ 4๋ก ์ง์ ํ๋ค. worker ๋ฅผ 3์ผ๋ก ์ง์ ์ ์ต์ย ย 2GB ์ด์์ RAM ์ด ์์ด์ผ ํ๋ค. 4GB ์ด์์ผ ๊ฒฝ์ฐ worker ๋ฅผ 4๋ก ์ง์ ํ๋ค.
- listen "127.0.0.1:8080" -> unicorn ์น์๋ฒ๊ฐ ์ฌ์ฉํ ํฌํธ๋ฅผ ์ง์ ํ๋ค. 8080์ด ์๋ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ SELinux ์ค์ ๊ณผ apache httpd(gitlab-ssl.conf)ย ์ค์ ๋ ๊ฐ์ด ๋ณ๊ฒฝํด์ผ ํ๋ค.
Web ์ ํตํ ์ธ๋ถ ๊ณต๊ฒฉ์ ๋ง๊ธฐ ์ํ ํ๋ ์์ํฌ์ธ Rack attack ์ ์ค์ ํ๋ค.ย
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
git user๋ฅผ ์ํ git ย ์ ์ญ ์ค์ ์ ํ๋ค.
sudo -u git -H git config --global user.name "GitLab" sudo -u git -H git config --global user.email "gitlab@localhost" sudo -u git -H git config --global core.autocrlf input
gitlab DB ์ค์
์ค์ ํ์ผ ๋ณต์ฌ(MySQL)
sudo -u git -H cp config/database.yml.mysql config/database.yml
- ์๋ํฐ๋ก database.yml ์ ์ด์ด์ DB ๋ช , id, pwd ๋ฅผ ํ๊ฒฝ์ ๋ง๊ฒ ํธ์งํ๋ค.
Install Gems
cd /home/git/gitlab
ruby ์ฉ ํจํค์ง ์์กด์ฑ ๊ด๋ฆฌ์์ธ bundle ์ ์ค์นํ๋ค.
gem install bundle
MySQL ์ผ ๊ฒฝ์ฐ ์คํ(without postgres)
sudo -u git -H bundle install --deployment --without development test postgres aws
Database ์ด๊ธฐํ ๋ฐ advanced ๊ธฐ๋ฅ ํ์ฑํ
๋ค์ ๋ช ๋ น์ด ์ ๋ ฅํ yes ๋ฅผ ์ ๋ ฅํ๋ฉด database table ์ด ์์ฑ๋๋ค.
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
์ ์์ ์ผ๋ก ์๋ฃ๋๋ฉด 'Administrator account created:' ๋ฉ์์ง์ ์ด๊ธฐ ๋ก๊ทธ์ธ id/pwd๋ฅผ ๋ณผ ์ ์๋ค.
ย
Install Init Script
init script ๋ฅผ ๋ค์ด๋ก๋ํ๋ค. (/etc/init.d/gitlab ์ผ๋ก ์ ์ฅ๋๋ค)
wget -O /etc/init.d/gitlab https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn
์คํ ์์ฑ์ ๋ถ์ฌํ๊ณ ๋ถํ ์ ์๋์ผ๋ก ๊ตฌ๋๋๊ฒ run level ์ ์กฐ์ ํ๋ค.
chmod +x /etc/init.d/gitlab chkconfig --add gitlab chkconfig gitlab on
Set up logrotate
gitlab ์ด ์๋ ๋ก๊ทธ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์๋ฅด๊ธฐ ์ํด logrotate ๋ฅผ ์ค์ ํ๋ค.
cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
Check Application Status
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
Start your GitLab instance:
service gitlab start
Compile assets
asset ์ ๋ฏธ๋ฆฌ ์ปดํ์ผํ์ง ์๊ณ gitlab ์ ์ต์ด ๋ก๊ทธ์ธ์ asset ์ปดํ์ผ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค์ timeout exception ์ด ๋ฐ์ํด ๋ก๊ทธ์ธ์ด ๋ถ๊ฐ๋ฅํ ์ ์๋ค.
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
Apache httpd ์ค์
apache httpd ์ SSL์ฉ ๋ชจ๋์ธ mod_ssl ์ ์ค์นํ๋ค.
yum -y install httpd mod_ssl chkconfig httpd on
apache httpd ์ฉ gitlab ์ค์ ํ์ผ์ ๋ค์ด๋ก๋ ํ๋ค.
wget -O /etc/httpd/conf.d/gitlab.conf https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/web-server/apache/gitlab-ssl.conf
gitlab ์ค์ ํ์ผ์ ๋ชจ๋ linux ์ฉ์ด๋ผ RHEL/CentOS ์ ํ์ค ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด์ง ์์ผ๋ฏ๋ก ์ฝ๊ฐ์ ์์ ์ด ํ์ํ๋ค.
## log directory mkdir /var/log/httpd/logs/ mkdir /etc/httpd/{ssl.crt,ssl.key} ## SSL ์ค์ . ์ด๋ฏธ ๊ฐ์ธํค์ ์ธ์ฆ์๊ฐ ์๋ค๋ฉด ๊ทธ๊ฑธ ์ฌ์ฉํ๊ณ ์์ ๊ฒฝ์ฐ์๋ง ์๋ ๋ช ๋ น์ด ์คํ cp /etc/pki/tls/certs/localhost.crt /etc/httpd/ssl.crt/gitlab.example.com.crt cp /etc/pki/tls/private/localhost.key /etc/httpd/ssl.key/gitlab.example.com.key cp /etc/pki/tls/certs/ca-bundle.crt /etc/httpd/ssl.crt/your-ca.crt
gitlab-ssl.conf ํ์ผ๋ด ServerName ์ ์น์๋ฒ์ FQDN ์ผ๋ก ๋ณ๊ฒฝํ๊ณ unicorn ์ด 8080 ์ด ์๋ ํฌํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋์ฒ๋ผ ProxyPass,ProxyPassReverse ๋ฅผ ์์ ํ๋ค.
gitlab-ssl.confServerName gitlab.example.com ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/
์ํ์น ์น์๋ฒ๋ฅผ ์ฌ๊ตฌ๋ํ๋ค.
service httpd restart
iptable ๋ฐฉํ๋ฒฝ ์คํ
80, 443 ๋ฐฉํ๋ฒฝ์ด ์ด๋ฆฌ์ง ์์๋ค๋ฉด iptable ์ค์ ์ ๋ณ๊ฒฝํ๋ค.
lokkit -s http -s https -s ssh service iptables restart
SELinux ๋ฌธ์ ํด๊ฒฐ
- gitlib ์๋ unicorn ์ด๋ผ๋ Web ์๋ฒ๊ฐ ๋ด์ฅ๋์ด ์๋๋ฐ ๊ธฐ๋ณธ ํฌํธ๊ฐ 8080 ์
- SELinux ์์ 8080 ์ย http_cache_port_t context ์ ํ ๋น๋์ด ์๊ณ ์ด ํฌํธ๋ http_port_t ์ ๋ค๋ฅด๋ฏ๋ก apache ๊ฐ ์ฐ๊ฒฐ ๋ถ๊ฐ
ํด๊ฒฐ์ฑ 1(์ถ์ฒ)
8080์ ํ ๋น๋ OBJECT RECORD Name ์ http_port_t ๋ก ๋ณ๊ฒฝ
semanage port -m -t http_port_t -p tcp 8080
ํด๊ฒฐ์ฑ 2
apache httpd ๊ฐ ๋ชจ๋ ๋คํธ์ ํฌํธ์ ์ฐ๊ฒฐ ๊ฐ๋ฅํ๋๋ก sebool ์ค์ (์ถ์ฒํ์ง ์์)
setsebool -P httpd_can_network_connect 1
ํด๊ฒฐ์ฑ 3
unicorn ์ด ์ฌ์ฉํ๋ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋ณ๊ฒฝ๋ ํฌํธ ๋ฒํธ๋ฅผ SELinux ์ http_port_t ์ ์ถ๊ฐ
- su - gitlab
- cd gitlab
- vi config/unicorn.rb
- listen "127.0.0.1:8080" ์ ์ฐพ์์ ์ ๋นํ ํฌํธ ๋ฒํธ(Ex: 10000ย ์ผ๋ก ๋ณ๊ฒฝ)
SELinux context ์ถ๊ฐ
semanage port -a -p tcp -t http_port_t 10000
- gitlab.conf ์ ํฌํธ ์์
- viย /etc/httpd/conf.d/gitlab.conf
- 8080 ์ ์์์ ๋ณ๊ฒฝํ ํฌํธ(10000 ์ผ๋ก ๋ณ๊ฒฝ)
- service httpd restart
์ต์ด ๋ก๊ทธ์ธ ๋ฐย ๋์ ํ์ธ
์น๋ธ๋ผ์ฐ์ ๋ก ์ค์ ํ ์ฌ์ดํธ์ ์ฐ๊ฒฐํ์ฌ ์ ์ ์ค์น ์ฌ๋ถ๋ฅผ ํ ์คํธํ๋ค. ย ๋ก๊ทธ์ธ id/pwd ๋ ๋ค์ ๊ฐ์ ์ฌ์ฉํ๊ณ ๋ก๊ทธ์ธํ ๋ฐ๋ก ๋ณ๊ฒฝํ์.
admin@local.host
5iveL!fe
See Also
Ref
- https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos
- http://tecadmin.net/how-to-install-ruby-2-0-0-on-centos-6-using-rvm/
- http://stackoverflow.com/questions/5507489/git-server-like-github