(2014/08/10追記) Packageが提供されて、もっと簡単にインストールできるようになりました! → Omnibus GitLabをCentOSにインストール
GitHubクローンのGitLabの最新版6.5(Community Edition)をCentOS6.4に導入します。
コード管理のためにgitは必要不可欠だけど、GitLabがあるとコミット頻度が可視化されたりしてよりモチベーションが上がるのでより良いです。
公式サイトによると必要なのは
- ruby 1.9.3+
- git 1.7.10+
らしい。これらはもうすでにインストールされてるものとします。ググって下さい。ちなみに僕の環境では
- ruby-1.9.3-p429
- git-1.8.3.4
を入れてました。手順は公式のInstallationに従います。
- ユーザーの追加
- GitLab shellのインストール
- データベースの設定
- GitLabのインストール・起動
- nginxで振り分け
てな具合です。あと次のページもかなり参考になりました。
継続的インテグレーションツール「GitLab CI」を Amazon Linux にインストールしてみた | Developers.IO
以下の操作は全部rootになってやります。”?”は”#”と読み替えて下さい。コメントアウトされてしまうので?にしてます。
Contents
1. ユーザーの追加
gitlabの操作をするユーザー “git”を追加します
? adduser -c 'GitLab CE' git
おわり
2. GitLab shellのインストール
? cd /home/git ? sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0 ? cd gitlab-shell ? sudo -u git -H cp config.yml.example config.yml ? sudo -u git -H vi config.yml // 何か変更することがあれば。 ? sudo -u git -H ./bin/install
3. データベースの設定
今回はmysqlを使います。postgresqlのやり方も公式サイトには書いてます。ユーザー “git”を作って、gitlabhq_productionデータベースの操作権限を与えます。
? mysql -u root -p mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password'; mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost'; mysql> exit
4. GitLabのインストール・起動
? cd /home/git ? sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-5-stable gitlab ? cd /home/git/gitlab ? sudo -u git -H git checkout 6-5-stable ? sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml ? sudo -u git -H vi config/gitlab.yml
gitlab.ymlにはポートの設定があります。デフォルトは80で、サーバで使うアプリケーションがGitLabだけならそれでいいですが、まだいろいろ追加する予定なので変えます。大概8080とかにすることが多いようです。
... ## GitLab settings gitlab: ## Web server settings host: localhost port: 8079 https: false ...
8079にしてみました。(特に意味は無い)
続いてlogやプロセスID、ソケットを格納するディレクトリを作ります。
? sudo chown -R git log/ ? sudo chown -R git tmp/ ? sudo chmod -R u+rwX log/ ? sudo chmod -R u+rwX tmp/ ? sudo -u git -H mkdir /home/git/gitlab-satellites ? sudo -u git -H mkdir tmp/pids/ ? sudo -u git -H mkdir tmp/sockets/ ? sudo chmod -R u+rwX tmp/pids/ ? sudo chmod -R u+rwX tmp/sockets/ ? sudo -u git -H mkdir public/uploads ? sudo chmod -R u+rwX public/uploads
unicornの設定ファイルをいじる
? sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb ? sudo -u git -H vi config/unicorn.rb // 何かいじりたければ ? sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
ユーザー “git”の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
データベースの設定ファイルをいじる
? sudo -u git cp config/database.yml.mysql config/database.yml ? sudo -u git -H vi config/database.yml // githq_prodyctionのユーザーがgitになっていることを確認 // パスワードを3で設定済みのものに変更 ? sudo -u git -H chmod o-rwx config/database.yml
gemsのインストール
? sudo -u git -H bundle install --deployment --without development test postgres aws
ようやくgitlabのセットアップ
? sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
“Do you want to continue (yes/no)?”と聞かれるので秒速でyes
上手く行けば
Administrator account created: login.........admin@local.host password......5iveL!fe
と出るはず。最初のログインはこれで行うので忘れずに。ってもググれば出ますが。
で起動!のまえに、/home/git以下のパーミッションを全部変えちゃいましょう。これしないと後でnginxが tmp/sockets/gitlab.socketでpermission deniedやらなんらやらで502 bad gatewayになります。バッドエンドです。
? chmod -R o+x /home/git/
起動スクリプトをコピーして、
? cp lib/support/init.d/gitlab /etc/init.d/gitlab ? cp lib/support/init.d/gitlab.default.example /etc/default/gitlab ? chkconfig gitlab on ? cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
チェックして問題なければ
? sudo -u git -H bundle exec rake gitlab:env:info
起動します
? service gitlab start
assetsのコンパイルもしておきます
? sudo -u git -H bundle exec rake assets:precompile
5. nginx
nginxのインストールはどうにかしてやって完了しているとします。gitlabはdebian系がメインターゲットらしくて、/etc/nginx配下にsite-availableとsite-enabledという2つのディレクトリがあります。バーチャルホストの設定ファイルが全部site-availableに置いてあって、有効にしたいものだけsite-enabledからシンボリックリンクを張るというやり方が想定されていてとても便利なのでこれを採用しようと思います。
まずは/etc/nginx/nginx.confに次の行を加えます
... http { include mime.types; include /etc/nginx/sites-enabled/*; // この行を加える default_type application/octet-stream; ...
それであとは2つのディレクトリを作って、
? mkdir /etc/nginx/site-available ? mkdir /etc/nginx/site-enabled
gitlabの設定ファイルを次のようにします
? cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab ? ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab ? vi /etc/nginx/sites-available/gitlab
... server { listen 8079; // 8079で受ける server_name localhost; // ここも変更 server_tokens off; # don't show the version number, a security best practice root /home/git/gitlab/public; ...
nginxも起動して終了!
? chkconfig nginx on ? service nginx start
UI綺麗なサービスってなんか全能感ありますよねー。
ちなみに修論でメインだったプログラムのコミット頻度はこんな感じだった。
コメント