(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に従います。

  1. ユーザーの追加
  2. GitLab shellのインストール
  3. データベースの設定
  4. GitLabのインストール・起動
  5. nginxで振り分け

てな具合です。あと次のページもかなり参考になりました。
継続的インテグレーションツール「GitLab CI」を Amazon Linux にインストールしてみた | Developers.IO

以下の操作は全部rootになってやります。”?”は”#”と読み替えて下さい。コメントアウトされてしまうので?にしてます。

 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

スクリーンショット_021214_113520_PM

UI綺麗なサービスってなんか全能感ありますよねー。

ちなみに修論でメインだったプログラムのコミット頻度はこんな感じだった。

スクリーンショット_021214_113612_PMうーんこの

関連記事

Pythonでプロセスを監視して終了したらgmailを使ってメール送信する(Python3版)

もはやこれは地球ではない。ルーブルアブダビの異次元の美しさ

あなたは光の護封剣の絵を描けますか?

300ドル15W中華半導体レーザーカッター買った その4

300ドル15W中華半導体レーザーカッター買った その3

numpyでsequence too largeエラーの回避法

コメント

コメントを返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です