今度こそインストールしてみる。

今朝日本語化のパッチだったことが判明して、ショックも覚めやらない間に今度こそとチャレンジ。
まずはダウンロード

ダウンロード

% wget http://codeigniter.com/download.php -O codeigniter.zip

解凍したら適当な場所に置く。
ちなみに、一昨日まで、自分のMacMySQLやらPHPやらをインストールしていたけど、
よくよく考えると、会社のみんなで使っているレンサバがあって、PHPとか、MySQLやら環境がそろっているし、なにより、外からもアクセスできるから
そっちでよくね?ということに気がついたので、そのレンサバで勉強することにしました。

なぜあんな無駄な時間を・・・

とは思いませんが、はじめからそうしたら良かったとちょっと後悔。
話は戻って、今回はこんな感じでセットアップ。
まずはサーバーの環境

サーバーのディレクトリ構成

~/htdocs   # 自分用DocumentRoot
~/var/apps # いろんなアプリケーション置き場

マニュアルみたら、解凍してできたフォルダをごっそりDocumentRoot配下に置きなさい的なことが書いてあったが、
いろんなソースをDocumentRoot配下に置くのは好きくないので、エントリポイントだけDocumentRootにおいて、アプリ部分を外から見れない他のディレクトリに展開することにする。

まずは解凍したフォルダをアプリ置き場に展開

cp -Rp ~/tmp/CodeIgniter_1.7.1 ~/var/apps/hello_igniter

エントリポイントの設定

index.phpってファイルがあるのでそれをDocumentRootに置く

~/var/apps/hello_igniter/index.php ~/htdocs/

エントリポイントのファイルをいじる

単純に考えてエントリポイントのindex.phpにアプリへのパス的なものが書いてあるんだろうと思って開いて見ると案の定パスが書いてあったので、パスを修正

% vim ~/htdocs/index.php

14〜26行目付近を見てみると、
systemのフォルダがこのファイル(index.php)と違うディレクトリにあるなら、ここを書き直せよ的なことが書いてあったので
この$system_holderってところを修正する

<?php
・・・
/*
|---------------------------------------------------------------
| SYSTEM FOLDER NAME
|---------------------------------------------------------------
|
| This variable must contain the name of your "system" folder.
| Include the path if the folder is not in the same  directory
| as this file.
|
| NO TRAILING SLASH!
|
*/
#        $system_folder = "system";
        $system_folder = "../../var/apps/hello_igniter/system";

これでおk

ブラウザで確認

あとはブラウザでアクセスするとwelcomeページが見れる。

http://hogehoge/hello_igniter/

ばっちり

一つのプロジェクトで複数のRailsアプリを管理したい

ひとつのプロジェクトで複数のRailsアプリケーションを開発する際のお約束ふたつ

を読んで、フムフムとおもっていたけど、
branchとかtag切ったときはexternalsの設定ってどうなるんだろうと思って試してみたら
externalsの設定はそのまま引き継がれてしまうので、branche側でもexternalsのところはtrunkを向いたままになる。
こいつは微妙だと思って調べたらexternalsは相対パスが切れるとのこと。

svn:externals で相対パスのサポート

おぉ!すげー!これでバッチリじゃん。
とおもったけど会社のsubversionは1.4でした。


ほんとに残念。
さてどうするか。。。

そろそろ本気出す。

いい加減MySQLやらApacheやらPHPやらを入れて勉強した気になっているのもまずいかな?
とおもって、そろそろ冗談抜きにCodeIgniterをやってみよう。
で、さっそくCodeIgniterでググる。
なんかチュートリアルの動画があったので見てみたが、一番はじめの動画を半分くらいみて挫けた。
挫けたとはいいつつも、なんなくノリがわかったので早速使ってみる。

マニュアルをみる

zipを解凍したらuser_guide_jaというマニュアルが入ってた。
HTMLなので、いつでも見れるように適当なサーバーにアップしておく。
えらいおれ。


で、ちょっとやってみようと思ったが、上記のURLでとってきたファイルの中身が全然足りない気がする。
マニュアルに載っているファイルがふつうにない。。。
要調査だなぁ。

今日は劇的に眠いのでねることにするけど、
きっと明日朝起きたらファイルができているに違いない。

今日はApacheとPHPを入れてCodeIgniterを勉強した気になることにする

昨日はMySQLを入れてただけでCodeIgniterをだいぶ勉強した気になったので
今日はApacheとPHP5を入れてCodeIgniterを勉強した気になってみることにした。
ApachePHPMacには標準で入っているけど、あえてportで入れ直すんだ。

ちなみに今回はid:unlearnedブログを参考にした。というかまんま。
id:unlearnedはほんとにおもしろい人で、ほんとにおもしろい人なんだ。
どれくらいおもしろいかって言われても僕の安っぽい比喩ではとても表現しきれないくらいおもしろいんだ。

さて、インストールをしよう。

インストール

% sudo port install php5 +pear +apache2

途中、port clean php5しろ、とか言われる。port installedで見ても入っていないのに何でだろうと思いながらも
言われたとおりにやる。

% sudo port clean php5

今度はsqlite3をcleanしろとか言われたので、こちらも実行

% sudo port clean sqlite3

自分のよくわかっていなさにびっくりだ。

php.iniを作る。

テンプレートがあるので、コピーして使う。

% sudo cp /opt/local/etc/php.ini-dist /opt/local/etc/php.ini

apxsを使ってhttpd.confに書き込む

% cd /opt/local/apache2/modules
% sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

httpd.confを修正

%sudo vim /opt/local/apache2/conf/httpd.conf

以下を追記

Include conf/extras-conf/*.conf

動作確認用にphpファイルをDocumentRootにおく

% sudo vim /opt/local/apache2/htdocs/hoge.php
<?php
phpinfo();
?>

apache起動

% sudo /opt/local/apache2/bin/apachectl start

ブラウザで確認

http://localhost/hoge.php

apache終了

% sudo /opt/local/apache2/bin/apachectl stop

ふむ。今日もたくさんCodeIgniterの勉強をした気になれた。
しめしめ。

MySQLをインストール

そういえば、インターンではMySQLを使うと聞いたような気がするのでMySQLの環境も作ることにする。
家ではたいしたコードを書かないのでいつもSQliteにお世話になっていたため、MySQLの環境を作らないといけない。
漢はだまってMacPorts

インストール

% sudo port install mysql5-devel +server

初期化

% sudo /opt/local/bin/mysql_install_db5 --user=mysql

my.cnfの編集

defaultのやつをコピー

% sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf

innoDBを使いたいので[mysqld]の以下のコメントアウトをはずしてencodingの設定をしておく

#innodb_data_home_dir = /opt/local/var/db/mysql5/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /opt/local/var/db/mysql5/
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

# set encode
default-character-set=utf8

そういえば、起動したときに

#innodb_log_arch_dir = /opt/local/var/db/mysql5/

コメントアウトを外してたらエラーが出ていたのでこの行はコメントアウトのままにした。

パーミッションを変更

% sudo chown -R mysql:mysql /opt/local/var/db/mysql5/
% sudo chown -R mysql:mysql /opt/local/var/run/mysql5/

起動

% sudo /opt/local/bin/mysqld_safe5 --user=mysql &

接続してみる

% mysql5 -u root

終了

% sudo /opt/local/bin/mysqladmin5 -u root shutdown

今日はここまで。

CodeIgniterを勉強しなければいけない

PHPフレームワークでCodeIgniterというフレームワークの勉強をしなければいけないようだ。

http://codeigniter.jp/

会社のインターンでこのフレームワークを使って演習をさせるとかさせないとか。
P弱(PHP,Perl,Python)の僕にでも簡単にわかる軽量フレームワークだとか。

ほほう、早速インストールだ!
とおもったけど、僕のMacにはPHPの環境を作ってないことを思い出したので
勉強はまた今度。

デプロイにはrsyncを使う予定

ステージングから本番にアップするときはrsyncを使う予定。

キャハハ、railsrsyncが許されるのは(ry

と言われるかもしれないけど、
capistranoは使わない。
こまごまと理由はあるけど、一番大きな理由はコレ↓

svnにコミットはされていてもアップしたくないファイルがある。

本番にあげる要件、機能毎にブランチ切るべきなんだろうけど、結構細かい修正が多いので
その運用は億劫。そもそもデザイナにそれを強要できないし、毎回システム側でそれをやるのも
めんどくさい。


分散環境で運用するので、capistranoを使ってデプロイするのが楽なんだけど
諸所考えてrsyncを使う。
というわけでrakeにデプロイ用のタスクでも作ることにする。


capistranorsyncのexcludeみたいにできればいいのだが。。。