GitLabのインストール
さくらVPS(CentOS)にGitLabをインストールした際のメモ。
参考:https://github.com/gitlabhq/gitlabhq/blob/stable/doc/installation.md
yum
今回はDBにsqlite3を利用するため、あらかじめyumでインストールしておきます。
その他、gitは当たり前として、wgetやcurlもインストールしておくこと。
また、後でcharlock_holmesをインストールするときにlibicu-develも必要となるので、これもインストール。
さらに、redisもインストールして走らせておきます。
$ su - % yum install sqlite-devel libicu-devel redis % /etc/init.d/redis start
ユーザ作成
まずgitユーザとgitlabユーザを作成。
gitlabユーザはgitグループに入れます。
また、gitlabユーザが/home/gitにアクセスできるようにパーミッションを変更します。
$ sudo useradd git $ sudo passwd git $ sudo useradd gitlab $ sudo passwd gitlab $ sudo usermod -G git gitlab $ sudo chmod g+rx /home/git
また、後で必要になるため、一時的にgitlabユーザをsudoersに入れておきます。
(gitlabの動作を確認できたらsudoersから外しておく)
$ sudo vim /etc/sudoers gitlab ALL=(ALL) ALL
ruby(1.9.2-p320)のインストール
環境を汚さないよう、gitlabユーザのホームディレクトリ以下にインストールします。
gemのアップデートもやっておきます。
$ su - gitlab $ mkdir -p local/src $ cd local/src $ wget ftp://ftp.iij.ad.jp/pub/lang/ruby/1.9/ruby-1.9.2-p320.tar.gz $ tar xvfz ruby-1.9.2-p320.tar.gz $ cd ruby-1.9.2-p320 $ ./configure --prefix=$HOME/local/ruby-1.9.2-p320 $ make $ make install $ vim ~/.bashrc export PATH=$HOME/local/ruby-1.9.2-p320/bin:$PATH $ source ~/.bashrc $ gem i rubygems-update $ update_rubygems
python(2.7.3)のインストール
rubyと同様、環境を汚さないようにgitlabユーザのホームディレクトリ以下にインストールします。
後で必要になるため、libpythonへのパスも通しておきます。
$ su - gitlab $ cd local/src $ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz $ tar xvfz Python-2.7.3.tgz $ cd Python-2.7.3 $ ./configure --enable-shared --prefix=$HOME/local/python-2.7.3 $ make $ make install $ vim ~/.bashrc export PATH=$HOME/local/python-2.7.3/bin:$HOME/local/ruby-1.9.2-p320/bin:$PATH export LD_LIBRARY_PATH=$HOME/local/python-2.7.3/lib:$LD_LIBRARY_PATH
easy_install、pipのインストール
$ su - gitlab $ cd local/src $ wget http://peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.py $ easy_install pip
gitoliteのインストール
gitlabユーザのssh鍵を作成し、公開鍵をgitユーザのホームディレクトリに置いておきます。
$ su - gitlab $ mkdir .ssh $ ssh-keygen -t rsa -P "" -f .ssh/id_rsa $ sudo cp .ssh/id_rsa.pub /home/git/gitlab.pub $ sudo chmod 0444 /home/git/gitlab.pub
gitユーザのホームディレクトリ以下にインストールします。
$ su - git $ git clone -b gl-v304 git://github.com/gitlabhq/gitolite.git /home/git/gitolite $ ./gitolite/install -ln /home/git/bin $ PATH=$PATH:$HOME/bin $ gitolite setup -pk /home/git/gitlab.pub $ sed -i 's/0077/0007/g' /home/git/.gitolite.rc $ exit $ sudo chmod -R g+rwX /home/git/repositories/ $ sudo chown -R git:git /home/git/repositories/
リポジトリにアクセスできるかを確認します。
下の通りに表示され、/tmp/gitolite-adminが作成されていればOK(確認できたら削除)。
$ su - gitlab $ git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin Initialized empty Git repository in /tmp/gitolite-admin/.git/ remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0) Receiving objects: 100% (6/6), done. $ rm -rf /tmp/gitolite-admin
gitlabのインストール
まず必要となるライブラリを先にインストールし、。
$ su - gitlab $ gem i charlock_holmes --version '0.6.8' $ pip install pygments $ gem i bundler
gitlabをダウンロードしてきます。
$ git clone -b stable git://github.com/gitlabhq/gitlabhq.git gitlab
設定ファイルを設置します。
DBに関しては、今回はsqliteを利用します。
$ cd gitlab $ cp config/gitlab.yml.example config/gitlab.yml $ cp config/database.yml.sqlite config/database.yml
次にgemをインストールするのですが、その前にGemfileに書かれている'https://'の部分を'git://'に書き換えます。また、今回はDBにmysqlを利用しないため、mysql2のインストールも行わないようにします。
$ vim Gemfile (https://をgit://に書き換え、gem "mysql2"をコメントアウト) $ bundle install --without development test --no-deployment
gemのインストールを行いますが、下のコマンドは失敗します。
$ bundle install --without development test --deployment You are trying to install in deployment mode after changing your Gemfile. Run `bundle install` elsewhere and add the updated Gemfile.lock to version control.
この原因は、先ほどGemfileをいじったことのようです。
解決策はいまいち理解していないのですが、stackoverflowに書かれていた方法でうまく動いています。
参考:http://stackoverflow.com/questions/6785626/unable-to-update-gems-on-production-server
$ bundle install --without development test --no-deployment $ bundle update $ bundle install --without development test --deployment
gitの設定をしておきます。
$ git config --global user.name 'gitlab' $ git config --global user.email 'gitlab@example.com'
データベースのセットアップをします。
最後にadminのユーザ名・パスワードが表示されますので、これをメモっておきます。
/home/gitlab/gitlab/vendor/bundle/ruby/1.9.1/gems/blankslate-3.1.2/lib/blankslate.rb:51: warning: undefining `object_id' may cause serious problems
というエラーがでますが、とりあえず無視しておいて大丈夫そうです。
原因・解決策をお分かりになる方がいたら教えていただきたいです。
$ bundle exec rake gitlab:app:setup RAILS_ENV=production ..... Administrator account created: login.........admin@local.host password......5iveL!fe .....
フックのセットアップをします。
$ sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive $ sudo chown git:git /home/git/.gitolite/hooks/common/post-receive
最後に、正しくインストールが行われているかを確認します。
"NO"が出ていなければ問題ありません。
$ bundle exec rake gitlab:app:status RAILS_ENV=production
gitlab動作確認
まずgitlabを起動します。
デフォルトでは3000番ポートで起動しますので、必要に応じてiptablesの設定を行って下さい。
$ su - gitlab $ cd gitlab $ bundle exec rails s -e production
3000番ポートにアクセスして表示されたら、先ほどメモしておいたadminアカウントでログインします。
初回アクセス時には表示されるまでかなり時間がかかりますが、気長に待っていれば大丈夫です。
ログインが確認できたら動作確認完了ですが、adminのパスワードはすぐに変えておきましょう。もしくは、新たな管理者を作成して、adminアカウントを消しておきましょう。
設定変更
リポジトリを1つ作ってみると分かるのですが、httpアクセスのポート番号が80になっており、このままでは正しくアクセスできません。
正しいポート番号(デフォルトなら3000)を、config/gitlab.ymlに設定する必要があります。
その他、必要に応じてconfig以下のファイルを修正します。
auto mergeの有効化
gitlabはブランチ間でmerge requestを送ることができます。
手作業でマージしてもいいのですが、gitlabにはauto merge機能があり、この作業を楽にしてくれます。
ただし、デフォルトでは有効になっていないため、以下のコマンドを実行し、gitlabを再起動します。
$ bundle exec rake gitlab:app:enable_automerge RAILS_ENV=production
まとめ
以上でgitlabの全インストール工程が完了しました。
ここからさらにunicornで動かしたりといった作業があったりもしますが、これに関しては後日。
FuelPHP入門を読んだ
今月はじめに発売されたばかりのFuelPHP入門を読みました。
といっても、前半の半分を読んで、残りはまだざっと目を通した程度です。
まだ情報も少ない中で、これだけまとまった情報が得られるのは非常に貴重だと思います。
1.1をベースに書かれていますが、1.2RCに関する補足もあります(現在FuelPHPの最新版は1.2になっています)。
話の流れとしては、
- 概要
- インストール
- ディレクトリ構成
- コントローラ
- ビュー
- モデル
- フォーム処理
- 認証とセッション管理
- コアクラス
- コーディング規約
- コマンドラインツール
- 統合開発環境
となっています。
コーディング規約に数ページ割いているのは、「どんどん開発コミュニティに参加してよ」というメッセージでしょうか。
本を読みつつFuelPHPを触ってみた感想としては、特別すごい機能があるわけではないですが、とても気が利いてて、使いやすいフレームワークだなと感じました。
autoloaderのおかげでいちいちrequireを書く必要がありませんし、認証機能も標準で入っていています。Paginationも簡単に書けますし、キャッシュを利用したい場合にはmemcachedやredisを使えます。
PHP歴は2ヶ月もなく、CakePHPやSymfonyといった有名フレームワークもまだ使ったことがありませんが、最初に触るフレームワークとしてFuelPHPはとても良いのではないかと思っています。
他のフレームワークを知らないので「比べてみてこうだ」といったことが書けないのが残念ですが、非常にいいフレームワークであることは間違いないと思います。
しばらく使い倒しつつ、coreのコードも読んでいこうと思います。
- 作者: 早川聖司
- 出版社/メーカー: ソーテック社
- 発売日: 2012/06/02
- メディア: 単行本
- 購入: 10人 クリック: 192回
- この商品を含むブログ (8件) を見る
FuelPHPを動かす
インストール
FuelPHPをインストールする方法は2種類あるようで、1つはoilコマンドというものを使う方法。2つ目はzipでダウンロードしてくる、もしくはgit cloneする方法。
oilコマンドを使ってインストールするには、
$ curl get.fuelphp.com/oil | sh $ cd <document_root> $ oil create <project_name>
とします。一方、フレームワークをダウンロードしてきた場合には、
$ mkdir <project_name> && cd <project_name> $ unzip fuelphp.zip $ php oil refine install
とします。
これは公式サイトにのっている方法なのですが、oilを使うときにはsudoが必要になるため、sudoが入っていない環境ではcurlのとこで失敗します。ですので、
$ curl get.fuelphp.com/oil > install_oil.sh
としておいて、sudoを削除し、
$ su # sh install_oil.sh
としなければいけません。
動作確認
oil createした後、localhost/
このままでは、localhost/
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /<project_name> RewriteRule ^(/)?$ public/index.php/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ public/index.php/$1 [L] </IfModule>
のように.htacessを書いて、
(補足:テスト時にはこのようにしておくのもいいですが、publicディレクトリをDocumentRootにするようapacheの設定を変えた方が安全ですし、.htaccessを書く必要もありません)