oil refine install時に"It is not safe to rely on the system's timezone settings"と出る場合の対処法
FuelPHPのプロジェクト作成時に
$ oil refine install
としたら以下のようなエラーが表示されるようになりました。
Fatal error: Uncaught exception 'Fuel\Core\PhpErrorException' with message 'date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.'
1.4以前ではタイムゾーンが指定されていない場合にデフォルトでUTCが選択されていましたが、1.4から上記のようなエラーがでるようになったようです。
http://fuelphp.com/forums/discussion/11506/uncaught-exception-with-message-date-unsafe-to-rely-on-systems-timezone
このページに書かれてる通り、php.iniにタイムゾーンを設定することで正しく動くようになりました。
; php.ini date.timezone = "Asia/Tokyo"
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件) を見る