GitHub Pull Requestのレビュアー情報を出すChrome拡張を作ってみた

まいど。超久々の鳥だ。
とりあえずまだ生きてるよー。
最近は業務柄あまり外部に公開できるようなものが無くて、だいぶ久しぶりの更新になってしまった・・・

GitHub Pull Request Reviewers - Chrome ウェブストア

何で作ったかというと・・・

  • メンバーがリーダーにレビュー依頼を出す
  • リーダーがレビュアを割り当てる

という流れになっているんだが・・・

  • リーダーがどれにレビュアを割り当てたか分からない!
  • レビュアに割り当てられた側もどれに自分が割り当てられてるのかぱっと見分からない!

・・・というGitHubさんの痒いところに手が届くのを作りたかった感じ。
トークンの登録無くても(たぶん)一応動くと思うけど、PR1ページ辺り50回APIにアクセスする事になるので、登録するのをオススメ。

一応の補足情報として、公開ボタンをポチっとしてからストアへ反映されるまでは1時間ほどかかるみたい。

特に目新しい事は何もやってないけど、GitHub.comにも公開してみたよ。
GitHub - baado/github-pr-reviewer

あまり目新しいものは無いけど、参考にしたURLを貼っておくよ。

iOSデバイスの回転前を検出してみる

やぁ。鳥のようなものだ。
もしかしたら島かも知れないし烏かもしr(ry
あ、毎度うるさいですねすみません(´・ω・`)

今日はチマっとした記事だよん。

iOSバイスiPhoneとかiPadとか)の回転後を検知するには、
EZ-NET: iPhone デバイスの回転を検出する : Objective-C プログラミング辺りを
参考にすれば上手くいくんだけど、回転の検知前に、
ビューのリサイズとか、スクロールとか、なんか色々と発生するわけさ。

それを差っ引いても、回転に色々やりたいよね。

ビューが一番上のビューなら、ビューコントローラー(UIViewController)に
ふつーに「willAnimateRotationToInterfaceOrientation」を書いてやれば検出できる。

でも、トップビューでない場合、回転の検出がなぜか出来ない(ぉぃ
そこで、以下のコードを書いてやれば検出できるようになったさ。

ヘッダーに以下。
- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation;

実装に以下。
- (void) viewWillAppear: (BOOL) animated {
  [super viewWillAppear: animated];
  [self updateLayoutForNewOrientation: self.interfaceOrientation];
}

- (void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation duration: (NSTimeInterval) duration
{
  [self updateLayoutForNewOrientation: interfaceOrientation];
}

- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation
{
  //ここに回転前の処理を色々書く
}

ただこの方法だと、取得できるのは回転後のサイズだったりするので、
回転前の値はどっか変数で保持しとかないといけない。。
なんか方法ないかの〜?

参考)
iphone - willAnimateRotationToInterfaceOrientation not called on popViewControllerAnimated - Stack Overflow

でわでわノシ

Google Analytics SDK for iOS V2(バージョン2)のマクロを作ってみた

やぁ。鳥だ。

iOS向けのGoogle Analytics SDKの、バージョン2のベータ版が出たわけさ。

何が嬉しいって、専門になってアプリ、OSのバージョンのトラッキングをしてくれるようになったわけさ〜。
それに、ソーシャルやら色々とトラッキングできるよーになったっ
Androidに限って言えば、Playストアからのアクセスも見られちゃう。

ちなみにバージョン1のほうは過去の記事を参照してねん。

で、一式マクロを作ってみたよ。

最初に呼び出す初期化マクロ。
PERIODは溜まったログをGoogle Alanyticsに吐き出す間隔ね。秒単位。

#ifdef DEBUG
#define GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
[GAI sharedInstance].trackUncaughtExceptions = YES; \
[GAI sharedInstance].dispatchInterval = PERIOD; \
[GAI sharedInstance].debug = YES; \
id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:ACCOUNT]; \
tracker.useHttps = true; \
}
#else
#define GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
[GAI sharedInstance].trackUncaughtExceptions = YES; \
[GAI sharedInstance].dispatchInterval = PERIOD; \
[GAI sharedInstance].debug = NO; \
id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:ACCOUNT]; \
tracker.useHttps = true; \
}
#endif

イベントをトラッキングするマクロ。
これはほぼバージョン1系と一緒。

#define GA_TRACK_EVENT(EVENT,ACTION,LABEL,VALUE) [[[GAI sharedInstance] defaultTracker] trackEventWithCategory:EVENT withAction:ACTION withLabel:LABEL withValue:VALUE];

ユーザーが何秒その画面に居たかを記録するマクロ。
TIMEで指定した秒数分いた場合に記録されるよっ
(居た時間が記録されるわけではない点に注意)

#define GA_TRACK_TIMING(CATEGORY,TIME,NAME,LABEL) [[[GAI sharedInstance] defaultTracker] trackTimingWithCategory:CATEGORY withValue:TIME withName:NAME withLabel:LABEL];

ソーシャルトラッキング
現時点では記録が見れる画面は無いよ。

#define GA_TRACK_SOCIAL(NETWORK,ACTION,TARGET) [[[GAI sharedInstance] defaultTracker] trackSocial:NETWORK withAction:ACTION withTarget:TARGET];

クラスのトラッキング。呼びたい部分で「GA_TRACK_CLASS」って書く。

#define GA_TRACK_CLASS GA_TRACK_PAGE(NSStringFromClass([self class]));

メソッドのトラッキング
呼びたいメソッドのどっかで「GA_TRACK_METHOD」と書く。

#define GA_TRACK_METHOD GA_TRACK_EVENT(NSStringFromClass([self class]), NSStringFromSelector(_cmd), @"", [[NSNumber alloc] initWithInt:-1]);

ページ(画面?Googleはスクリーンと呼んでる)のトラッキング
呼びたいビューのviewDidLoadの最初とか最後とかで「GA_TRACK_PAGE(@"ページ名")」。

#define GA_TRACK_PAGE(PAGE) [[[GAI sharedInstance] defaultTracker] trackView:PAGE];

例外系が結構ややこしくなってるので省いてる。

また、EC向けの設定もあるけど、それはマクロにするとややこしくなるだけなので、本家を見てね〜。

本家: Google Analytics SDK for iOS v2 - Overview - Google Analytics - Google Developers

えぇ、難点としてはカスタム変数のトラッキングが無くなってるとこね。。

でわでわ。

RackhubのphpMyAdminの警告を黙らせてみた

やぁ。鳥のようなものだ。

今回は以前作ったRackhubのphpMyAdminのワーニングを黙らせてみるよ〜。

もくじ

  1. mysqliワーニング、mcryptワーニングを黙らせる
  2. phpMyAdmin 環境保管領域ナンタラ警告を黙らせる

 

mysqliワーニング、mcryptワーニングを黙らせる

今回はコマンドだけザーっと書いていくよん。

これらのエラーを解決するには、どっちもPHPの再コンパイルっていうめんどーくっさい作業が必要だ。
ついでなので、PHP自体のアップデートも行っちゃうよ。

まず、mcrypt導入に必要なライブラリ、"libmcrypt"をゲットしてくる。
URLはmcrypt - Browse /Libmcrypt at SourceForge.netからゲットしてくる。

以下コマンドで、ダウンロード→解凍→コンパイルまでやっちゃうよ。
コンパイルの際に、"--disable-posix-threads"オプションを指定して./configureしている点に注意。
PHP: Mcrypt: インストール手順 - Manual

$ cd ~
$ wget http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmcrypt%2Ffiles%2FLibmcrypt%2F2.5.8%2F&ts=1347858671&use_mirror=jaist
$ mv libmcrypt-2.5.8.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fmcrypt%2Ffiles%2FLibmcrypt%2F2.5.8%2F libmcrypt.tar.gz
$ tar xvzf libmcrypt.tar.gz
$ cd ./libmcrypt-2.5.8
$ sudo ./configure --disable-posix-threads
$ sudo make
$ sudo make install

次に、最新のPHPをゲット、解凍して配置。この時の最新バージョンは5.4.7。
PHPのダウンロードURLは、PHP: Downloadsからゲットしてね〜。

$ cd ~
$ wget http://jp2.php.net/get/php-5.4.7.tar.gz/from/jp.php.net/mirror
--2012-09-16 06:59:25-- http://jp2.php.net/get/php-5.4.7.tar.gz/from/jp.php.net/mirror
:
$ tar xvzf mirror
$ sudo mv ~/php-5.4.7 /usr/local/php-5.4.7
$ cd /usr/local/php-5.4.7

で、次に./configure。こっからすごーーーく時間かかるから覚悟してね。

$ sudo ./configure --prefix=/usr/local/php-5.4.7 --with-apxs2=/usr/bin/apxs --enable-mbstring --with-mysql --with-pdo-mysql --with-unixODBC=/usr --with-gd --with-openssl --with-zlib --enable-phar --with-mysqli --with-mcrypt

ほとんどは元からあったオプションのコピー。
今回追加したのは、以下の2つだよ。

  • --with-mysqli:mysqliを導入するためのオプション
  • --with-mcryptmcryptを導入するためのオプション(要libmcrypt)

その後、いつもどおりmake、make installする。
場合によるかもだけど、トータルで1時間程度。

$ sudo make
$ sudo make install

PHPへのシンボリックリンクがそこここにあるので、全部更新。

$ sudo ln -sf ../local/php-5.4.7/bin/php /usr/bin/php
$ sudo ln -sf ../local/php-5.4.7/include/php /usr/include/php
$ sudo ln -sf ../local/php-5.4.7/lib/php /usr/lib/php
$ sudo ln -sf php-5.4.7 /usr/local/php
$ sudo ln -sf local/php-5.4.7/php /usr/php
$ sudo ln -sf ../local/php-5.4.7/bin/php-cgi /usr/bin/php-cgi
$ sudo ln -sf ../local/php-5.4.7/bin/php-config /usr/bin/php-config
$ sudo ln -sf ../local/php-5.4.7/bin/phpize /usr/bin/phpize
$ sudo ln -sf ../local/php-5.4.7/bin/pear /usr/bin/pear

で、バージョンアップされたことと、拡張が無事に導入されたことを確認しませう!

$ php -v
PHP 5.4.7 (cli) (built: Sep 17 2012 05:45:30)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
$ php -m
:
mcrypt
:
mysqli
:

今のところ要らないかもだけど、初期はphp.iniが居ないので、コピーして作っておくよ。
今回は開発用のをコピる。

$ sudo cp /usr/local/php-5.4.7/php.ini-development /usr/local/php-5.4.7/lib
$ sudo mv /usr/local/php-5.4.7/lib/php.ini-development /usr/local/php-5.4.7/lib/php.ini

これだけだと、「設定ファイルが無い」と怒られるので、
違うディレクトリにある設定ファイルへのショートカット(シンボリックリンク)をディレクトリ内に作る。

$ cd /usr/local/httpd/htdocs/phpmyadmin
$ ln -s /etc/phpmyadmin/config.inc.php config.inc.php

で、Apacheを再起動。

$ sudo apachectl restart

phpMyAdminの画面から"mysqli"、"mcrypt"のメッセージが消えていれば成功だ!
※config.inc.phpの$cfg['Servers'][$i]['extension']の設定を"mysql"から"mysqli"に戻すのを忘れずに!

 

phpMyAdmin 環境保管領域ナンタラ警告を黙らせる

こっちはとてもカンタン。

まず、phpMyAdminにログインして、"phpmyadmin"というユーザーと、同名の空のDBを作る。

次に、"examples/create_tables.sql"にあるクエリを実行する。

で、config.inc.phpを編集し、
「User used to manipulate with storage」「Storage database and tables」セクションの
コメントアウトを全部取る。
"controluser"と"controlpass"の設定は適宜。

一旦phpMyAdminからログアウトし、再度ログイン。
するとエラーは消えてるはずだよん。

以上!
でわでわ。

gruntを使ってCSS/JS周りを自動化するのが、なうでペヤングらしいので使ってみた

やほほ。

はてなダイアリーの使いづらいインタフェースなんとかしてくれって思ってる鳥さんだ。

さて、gruntっていうnode.jsを使うと、CSSJavaScript周りを色々と自動化できると聞いて、使ってみたよ。

gruntでできること

「grunt watch」で監視しておくと、上書き保存した際に自動的に色んなことをしてくれるんだ。例えば・・・

  • ファイルの結合
  • JavaScriptファイルのバリデーション
  • JavaScriptファイルの軽量化(圧縮、minify)

機能を追加すれが、こんなこともできるようになるよ。(他にも探せばあるかも)

 

gruntの導入

さて、環境を構築しよ〜。

まず、node.jsのインストールと、node.jsのパッケージ管理システムnpmのインストール。

WindowsMacOSの場合、何も考えずにnode.jsの公式サイトにアクセスして、「INSTALL」をクリック、
ダウンロードされたインストーラーを「次へ」でどんどん進めば、両方ともインストールされ、
環境変数も設定される。

で、ターミナルを開いて以下のような応答があれば、それ以上することはないお。

$ node -v
v0.8.8
$ npm -v
1.1.59

で、次にgruntのインストール。
コマンドラインから以下のとおり。
MacOSでは管理者権限で!

$ npm install -g grunt

ザーっと表示が流れるので、完了したところで以下のような反応があればおk!

$ grunt --version
grunt v0.3.15

 

gruntちゃまを使ってみる

てきとーにディレクトリを作ってみるとする。

grunt_test
├css_in
│├a.css
│└b.css
├grunt.js
└css_out
 └(空)

で、grunt.jsの中身はこんなスクリプトを書く。

module.exports = function(grunt) {
grunt.initConfig({
concat: {
'all.css' : [
'css_in/*.css'
]
},
watch: {
files: [
''css_in/*.css'
],
tasks: 'concat'
}
});
};

a.cssとb.cssの中身はてきとーでOK。

このgrunt.jsは、css_inディレクトリの中のCSSを監視(watch)して、変更があったら、
全部"all.css"ファイルにまとめて出力(concat)してね☆という、
ごく単純なものだよ。

で、ターミナルから以下コマンドを実行。

$ grunt watch
Running "watch" task
Waiting...

監視が開始されるので、この時点で、a.cssの中身をてきとーに書き換える。
すると、以下のようにコマンドが流れ、一連のタスクが実行される。

Running "watch" task
Waiting...OK
>>
File "css_in/a.css" changed.

Running "concat:all.css" (concat) task
File "all.css" created.

Running "watch" task
Waiting...

ディレクトリ直下にall.cssってファイルが出来てて、
a.cssとb.cssの中身がガッチャンコされてればOK!

あ、ちなみに監視はCtrl+Cで停止できるよん。

 

gruntのプラグインを入れてみる

gruntのプラグインには色々とあるけど、
今回はCSSで試してるので、CSSをminifyできるプラグインを入れてみる。
色々と便利ものがパッケージになってる、"grunt-contrib"っていうプラグインを入れるよ。

以下のコマンドを実行(「"-g"」が無いところに注意!)

$ npm install grunt-congrib

で、表示がダーっと流れるので、終わったら、
以下のコマンドを実行してインストールされていることを確認。(これも「"-g"」無し)

$ npm ls|grep grunt-contrib
└─┬ grunt-contrib@0.1.7

で、こんな感じにちょっと書き換える。

module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib');

grunt.initConfig({
concat: {
'all.css' : [
'css_in/*.css'
]
},
watch: {
files: [
''css_in/*.css'
],
tasks: 'concat mincss'
},
mincss: {
'all.min.css': [ 'all.css' ]

}
});
};

で、書きなおしたのち、また"grunt watch"を開始して、てけとにb.cssを修正してみる。
すると、こんな感じでちょっち増える。

Running "watch" task
Waiting...OK
>>
File "css_in/a.css" changed.

Running "concat:all.css" (concat) task
File "all.css" created.

Running "mincss:all.min.css" (mincss) task

Running "watch" task
Waiting...

で、 "all.min.css"というファイルが増えて、中にはa.cssとb.cssを圧縮したファイルができてるはず(mincss)。

この状態で作業していけば、ファイル保存時に勝手に圧縮作業まで完了していて、
ひととおり作業が終わったら、後はFTPでファイルをアップするだけ、というわけ。

 

gruntのびみょー足りないところ

さて、そんなステキに自動化してくれるgruntだけど、
ちょっち足りないところがあると思ってる。
私が不満に思ったことをチラホラ書くよ〜。

Sassのように、ディレクトリをサブディレクトリも含めて監視〜!ってのが出来ない
ワイルドカード(*)は使えるみたいだけど、サブディレクトリまでは対象にならない。

相対的なディレクトリに、コンパイルされたファイルを置く!ってのも出来ない
例えば、coffee/app/hoge.coffeeをapp/hoge.jsにコンパイルするとか、そうゆうの。
sassだとそうゆうのがあって、とても便利。

プラグインはgrunt.jsがあるディレクトリにローカルにインストールしないといけない。
つまり、grunt.jsの数分、プラグインが増える。
"--npm"オプションでプラグインを指定できるけど、これもローカルを見に行くようになってた。
ぬーん・・・なんか違うくね?( ̄▽ ̄;

でわでわ。

RackhubのphpMyAdminをアップデートしてみた

諸君 私は手羽先が好きだ。
諸君 私は手羽先が大好k

あ、うるさいですかすみません(´・ω・`) 鳥です。

さて、手前味噌だけど以前作ったRackhubのphpMyAdminをアップデートしてみることとする。

phpMyAdminは、自身をアップデートする仕組みを持ってない。
んで、前回の"apt-get"だと、ちょっち古いバージョンが入る。
そんなわけで、「バージョンアップしろー」っていう表示が出ちゃうわけさ。

さて、実際には何やるかっていうと、ファイルをゲットしてZIPを解凍して入れ替えるだけ。
そこに一手間をかけるのが、プロと素人との違いなのさ( ̄^ ̄)b(ホントか?)

ホームディレクトリでもどこでも良いので、HTMLファイルをダウンロードする。
ダウンロードのURLは、phpMyAdminの公式サイトから、ちょっと面倒くさい方法で取得する。

まず、ふつーのブラウザでphpMyAdminのサイトにアクセスする。

右上のダウンロードリンクをクリック。

ダウンロード一覧から、「phpMyAdmin-x.x.x.x-all-languages.zip」をクリック。

そしたらSouceForgeの画面が開くので、そっから「direct link」ってところを右クリックして、URL(リンク アドレス)をコピーする。

これでやっと、phpMyAdminのダウンロードURLがゲットできた。
で、SSHの画面に戻ろっか。
先ほどコピペしたURLを貼り付ける。URL貼り付けの刑に処す!

$ wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php&ts=1347072439&use_mirror=jaist
[1] 20587
[2] 20588
--20XX-XX-XX XX:XX:XX-- http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... xxx.xxx.xxx.xxx

[1]- Done wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php
[2]+ Done ts=1347072439

で、"ls"でダウンロードできていることを確認。そしたらダダ長いファイル名が( ̄▽ ̄;

$ ls
perl5
phpMyAdmin-x.x.x.x-all-languages.zip?r=http:%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php

やってらんないので、ファイル名を"mv"コマンドで変更する。

$ mv phpMyAdmin-x.x.x.x-all-languages.zip?r=http:%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php phpmyadmin.zip

続いて、ZIPファイルを解凍。

$ unzip phpmyadmin
Archive: phpmyadmin.zip
creating: phpmyadmin/
inflating: phpmyadmin/ChangeLog
:

で、念の為に旧phpMyAdminのバックアップを削除した上でphpMyAdminディレクトリを上書き。

$ sudo cp -rapd /var/www/phpmyadmin /var/www/phpmyadmin_old
$ sudo cp -rapd ~/phpmyadmin /var/www

これだけだと、「設定ファイルが無い」と怒られるので、
違うディレクトリにある設定ファイルへのショートカット(シンボリックリンク)をディレクトリ内に作る。

$ cd /var/www/phpmyadmin
$ ln -s /etc/phpmyadmin/config.inc.php config.inc.php

さて、できたかどーだか食べて見てみよー。
ブラウザで、「http://(ラック名).rackbox.net/phpmyadmin/」にアクセスしてログイン。

右下のバージョン表示欄に、「最新版」と付いていれば成功だ!

では後始末。DLしたZIPファイルと、旧ディレクトリを削除しよう。

$ rm ~/phpmyadmin.zip
$ rm -r /var/www/phpmyadmin_old

以上!
でわでわ。

RackhubでWordPressを動かしてみた

やほい!

鳥だ!飛行機だ!やっぱり鳥だった!
ここんところはRackhubっていう、最初からある程度環境が整ってるVPSで遊んでるよ!

今日はRackhubでWordPressを動かすところまでやってみたよ〜。
WordPressは世界で一番名の知れたCMSだ。

もくじ

  1. Rackhubとは?
  2. Rackhubの初期設定!
  3. PHP 5.4.Xの動作確認
  4. MySQLをインストろーるする
  5. WordPressをインスールする
  6. WordPressのためにFTPサーバーを設定してあげる

Rackhubとは?

Ruby、node.js、nginx等、最近流行りのアレとかソレが最初から準備されてるVPSなのさ♪
紹介については割愛するので、 いまからPerl/Ruby/Node.jsやるならRackhubを使わない手はない - Cside::Weblog を見てくださいまし。
半月260円という、いかにも「テストに使ってください!」という料金体系でありますっ
ボタンひとつでサーバー初期化だって、ホラ簡単!

使ってみた感じは、何かと「潰しが利かない」系のVPSとあまり変わらない感じのにほひがするのですが( ̄▽ ̄;
※本人がサーバー技術に疎いだけって話もありつつw

さてさて、今日はWordPress動かしてみようかい。
今のところこれでうまくいってるけど、変遷が早いから上手くいかなくなる可能性もあるヨ!

 

Rackhubの初期設定!

初期設定は以下の辺りを参考に設定しておくんなまし。慣れない人はSSHの鍵設定の辺りでまごつくカモー。

!ここから先の注意!
この記事の執筆者は、Rackhubを使って実験しているだけで、サーバー知識には疎いです。
セキュリティ面で甘々の可能性があります。
飽くまで参考程度に留めてください。
ご指摘は歓迎します。

 

PHP 5.4.Xの動作確認

SSHでログインするまで完了してる前提でいくよん。
以下のコマンドは、ユーザーがタイピングするところを太字にしてるよ。(一部除く)

まず最初に、色々とちょい古い状態なので"apt-get"でアップデート実行。
時間かかるよ〜!

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

ここからずっと"grub-pc"がエラー吐くんだけど、どうも最新版の"grub-pc"のバグっぽい。
ちょい調べたレベルだと原因、対処法不明。

旧サーバーの画面を確認しておこう。
とりあえず、設定画面にある、ここのURLをブラウザで表示してみんさい。

ここで「php -v」でバージョン確認できるけど、CGI的に動くものが別物な可能性があるから、
実際にはphpinfo()を表示して確かめる必要があったりするのね。

なので、phpinfo();を 実行してみよう。
公開ディレクトリは「/usr/local/httpd/htdocs/」なので、ここにPHPファイルを作る。
ターミナルに戻って以下入力。

$ cd /usr/local/httpd/htdocs
$ sudo vi phpinfo.php

すると、Linuxなエディタ"vi"が開くので、以下のように入力。
操作方法は独特、この辺を参考にしてね! vi / vim コマンド一覧(検索・置換・コピー)

<?php phpinfo();

え?閉じタグ?面倒だから書かない( ̄▽ ̄;

保存したら、Apacheを起動する。

$ sudo apachectl start

起動したら下記URLをブラウザで表示してみよう!
http://(アカウント名).rackbox.net/phpinfo.php

そしたら、こんな感じの画面が表示される。

これでPHP 5.4.xの確認は完了!

なお、このままだと、Indexes設定されっぱでディレクトリ一覧が見えちゃったり、
Apacheのバージョン情報が表示されちゃったりするので、その辺はきちんと設定しよう!

Indexes設定の削除方法は以下のとおり。

$ sudo vi /usr/local/httpd-x.x.x/conf/conf.d/default

Options Indexes FollowSymLinks

で、ローカルでの.htaccessファイルを有効化する

AllowOverride None

AllowOverride All

ディレクトリ指定で"index.php"や"index.cgi"が見られるようにする。
以下の行を"AllowOverride"の下辺りに追加する。

DirectoryIndex index.php index.cgi index.shtml index.html

また、入ってるPHPモジュールは、「php -m」コマンドでも確認できるよ!
ちなみに、設定を反映するにはApacheを再起動な。

$ sudo apachectl restart

 

MySQLをインストろーるする

はいお次はMySQLのインストール。
驚くなかれ、MySQLは初期状態では入ってないw
入ってるけど、動かし方がわかんない( ̄▽ ̄;

でもご心配なく、優秀な"apt-get"執事が頑張って働いてくれる。

$ sudo apt-get install mysql-server

こんだけ。
PHPRubyPythonなんかで必要なモジュールも、勝手にインストールしてくれます。
後は画面の指示に従って、rootのパスワードを設定するだけさ〜。
終わったら、ちょっち中身を覗いてみよっか。

$ mysql -uroot -p
Enter password: (パスワードを入力)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is XX
Server version: 5.5.XX

Copyright (c) 20XX, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select host,user from mysql.user;


mysql> quit
Bye

さて、MySQLは無事動いた。
しかし「CUIでなんかやってられっか!」と思う人も多いだろね。
そういう人にはphpMyAdmin。最近なんか迷走気味だけど。。

でも設定が面倒。面倒だけど設定するw

さて、実際には何やるかっていうと、ファイルをゲットしてZIPを解凍して入れ替えるだけ。
そこに一手間をかけるのが、プロと素人との違いなのさ( ̄^ ̄)b(ホントか?)

ホームディレクトリでもどこでも良いので、HTMLファイルをダウンロードする。
ダウンロードのURLは、phpMyAdminの公式サイトから、ちょっと面倒くさい方法で取得する。

まず、ふつーのブラウザでphpMyAdminのサイトにアクセスする。

右上のダウンロードリンクをクリック。

ダウンロード一覧から、「phpMyAdmin-x.x.x.x-all-languages.zip」をクリック。

そしたらSouceForgeの画面が開くので、そっから「direct link」ってところを右クリックして、URL(リンク アドレス)をコピーする。

これでやっと、phpMyAdminのダウンロードURLがゲットできた。
で、SSHの画面に戻ろっか。
先ほどコピペしたURLを貼り付ける。URL貼り付けの刑に処す!

$ wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php&ts=1347072439&use_mirror=jaist
[1] 20587
[2] 20588
--20XX-XX-XX XX:XX:XX-- http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... xxx.xxx.xxx.xxx

[1]- Done wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/x.x.x.x/phpMyAdmin-x.x.x.x-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php
[2]+ Done ts=1347072439

で、"ls"でダウンロードできていることを確認。そしたらダダ長いファイル名が( ̄▽ ̄;

$ ls
perl5
phpMyAdmin-x.x.x.x-all-languages.zip?r=http:%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php

やってらんないので、ファイル名を"mv"コマンドで変更する。

$ mv phpMyAdmin-x.x.x.x-all-languages.zip?r=http:%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Findex.php phpmyadmin.zip

続いて、ZIPファイルを解凍。

$ unzip phpmyadmin
Archive: phpmyadmin.zip
creating: phpMyAdmin-x.x.x.x-all-languages/
inflating: phpMyAdmin-x.x.x.x-all-languages/ChangeLog
:

で、phpMyAdminディレクトリを公開ディレクトリへ移動。

$ sudo cp -rapd ~/phpMyAdmin-x.x.x.x-all-languages /usr/local/httpd/htdocs/
$ sudo mv /usr/local/httpd/htdocs/phpMyAdmin-x.x.x.x-all-languages /usr/local/httpd/htdocs/phpmyadmin

よっしゃー以上終了!って思って、喜んでphpMyAdminの管理画面にアクセス!
http://(アカウント名).rackbox.net/phpmyadmin/
するとこんな風にエラーメッセージ。


「 mysqli 拡張がありません。PHP の設定をチェックしてみてください。 」

ちなみにRackhubさんスペックがしょんぼりなので、もし以下のような画面が出たら、更新してくらさい。

にょーん。。。
これをマジで解決しようとすると時間がかかっちゃうので(次回以降のエントリーで紹介)、
取り敢えずの回避策を取るよ。

$ cd /usr/local/httpd/htdocs/phpmyadmin
$ sudo cp config.sample.inc.php config.inc.php
$ sudo vi config.inc.php

で、以下のようにファイルを編集。

$cfg['Servers'][$i]['extension'] = 'mysqli';

$cfg['Servers'][$i]['extension'] = 'mysql';

さて、できたかどーだか食べて見てみよー。
ブラウザで、「http://(ラック名).rackbox.net/phpmyadmin/」にアクセスしてログイン。

で、下記URLにアクセスして表示確認だ!
http://(アカウント名).rackbox.net/phpmyadmin/

すると今度は、ログインしようとすると、

「#2002 MySQL サーバにログインできません」

orz

こいつはどーやら、php.iniにMySQLのソケットの設定してやってないことが原因らしい。
てことで、SSHターミナルから、以下コマンドでMySQLにログインして、MySQLのソケット情報を取得する。

$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
:
mysql> status
--------------
mysql Ver x.x Distrib x.x.x
:
UNIX socket: /var/run/mysqld/mysqld.sock
:
Threads: 1 Questions: 573 Slow queries: 0 Opens: 421 Flush tables: 1 Open tables: 41 Queries per second avg: 0.386
--------------

mysql>quit
Bye

で、php.iniを編集。

$ sudo vi /usr/local/php-5.4.0/lib/php.ini

以下の設定が空欄になっているので、先ほど出てきたパスを書く。

pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
mysql.default_socket = /var/run/mysqld/mysqld.sock

Apacheを再起動。

$ sudo apachectl restart

で、ログインできることを確認。 ∩( ・ω・)∩ばんじゃーい

phpMyAdminの管理ユーザーが無いどー」っていう問題と、
mcryptありまへんがなー」って言われる問題は、次回以降のエントリーで( ー`дー´)キリッ

では後始末。DLしたZIPファイルと、旧ディレクトリを削除しよう。

$ rm ~/phpmyadmin.zip
$ rm -R phpMyAdmin-x.x.x.x-all-languages

このままだと公開ディレクトリで誰からでも見えちゃうので、
実際にはBASIC認証IPアドレス制限をかけるとかしておこう!

 

WordPressをインスールする

この人一回もマトモにインストールって言わなかったよ!
お褒めのお言葉ありがとうございます(褒めてないし誰も言ってない)

最後に本丸のWordPressをインストールしようか。

でもその前に、phpMyAdminからでもCUIからでも良いので、
WordPress用のDBと、そのDBに対するフル権限を持ったユーザーを作成しねネ!
やり方は、、SQLのコマンドリファレンスとか、phpMyAdmin適当にいじるとかして
設定してくらはい( ̄▽ ̄;

で、DBの設定終わったら、日本語WordPressサイトへGO!

この辺からURLをゲット。

で、wget→展開→公開ディレクトリへ移動→ディレクトリの権限変更。

$ cd ~
$ wget http://ja.wordpress.org/wordpress-x.x.x-ja.zip
$ unzip wordpress-x.x.x-ja.zip
Archive: wordpress-x.x.x-ja.zip
creating: wordpress/
inflating: wordpress/wp-app.php
:
$ rm wordpress-x.x.x-ja.zip
$ sudo cp -rapd ~/wordpress /usr/local/httpd/htdocs/
$ sudo chmod a+w -Rf /usr/local/httpd/htdocs/wordpress

※これだと誰でも書き込めるディレクトリになっちゃうので、できればもう少し狭めの権限を!

保存したら下記URLをブラウザで見てみよー!
http://(アカウント名).rackbox.net/wordpress/

で、改めてURLにアクセス!
http://(アカウント名).rackbox.net/wordpress/
するとインストール画面が!(∩´∀`)∩

頑張ってインストールまでやったってください。
WordPressさんDBのパスワードを入力する時にパスワード丸見えだけど、気にしないであげてください。
SSLじゃないんで通信横取りされたら丸見えだけど、気にしないd(ry

で、ウェブ画面でのインストールが完了してログインしたら、一旦ログアウト。
SSHのほうに戻って、"wp-config.php"を編集するよ。

$ sudo vi /usr/local/httpd/htdocs/wordpress/wp-config.php

FTP利用しないようにするため、どっかに以下の一行を追加。

define('FS_METHOD', 'direct');

さて、これでインストール完了だ!
http://(アカウント名).rackbox.net/wordpress/

wp-admin以下やwp-contentには、きちんと閲覧権限振ったげてね〜。

 

おまけ:WordPressのためにFTPサーバーを設定してあげる

WordPressはデフォルトでFTP利用になってるんだけど、
前述の通り、wp-config.phpを設定すりゃダイレクトに取ってきてくれる。
なんつーか、だったら最初からそうしとけよってゆーね。。

不要だけど、FTPで遣り取りさせたい時は以下の方法で設定してくだし。
※ちなみに、この方法だと自分(localhostからしか接続できないみたいなので、外部からの接続が必要な時は別途設定方法を調べてねー。

導入するのはProFTPD、有名なヤツ。たぶん。

まず最初に、現在のポートの状況を確認しよう。
こんか感じになってるはず。

$ netstat -anp
Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 172.XX.XX.XX:22 172.XX.XX.XX:XXXXX ESTABLISHED -
tcp6 0 0 :::22 :::* LISTEN -
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path

3306がMySQL、80がHTTPd、22がSSHだね。

さて、またも"apt-get"でProFTPDのインストール。

$ sudo apt-get install proftpd

インストールが終わったら、下記コマンドを実行してみる。

$ proftpd -v
ProFTPD Version 1.3.4a

入ったね!
さて、まずは設定ファイルの編集だす。

$ sudo vi /etc/proftpd/proftpd.conf

以下のニ行をどこかに追加。

AuthUserFile                    /etc/proftpd/ftpd.passwd
AuthOrder mod_auth_file.c

また、ポート番号を3000番に変更する。
開発用HTTPポートを無理やり大体するかたちだけど、
21番を空けようとするとお金がかかるので。。w

Port 21

Port 3000

次に、アカウントファイルを生成する。

$ sudo ftpasswd --file /etc/proftpd/ftpd.passwd --passwd --name (アカウント名、任意) --uid 2000 -gid 2000 --home /var/www/ --shell /bin/sh

ftpasswd: using alternate file: /etc/ftpd.passwd
ftpasswd: creating passwd entry for user ftp

Password: (パスワードを入力)
Re-type password: (パスワードを再入力)

ftpasswd: entry created

さて、アカウントも作ったので、やっとこ起動だ☆

$ sudo /etc/init.d/proftpd start

で、ポートが増えてるかを確認。

$ netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 172.XX.XX.XX:22 172.XX.XX.XX:XXXXX ESTABLISHED -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::3000 :::* LISTEN -
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path

こんな風に1つ増えたはずだ。
この状態だと、外からは繋げないみたいだけど、WordPressは中から中のFTPサーバーにつなぐ(自己完結)ので、これで問題なし。

さて、CUIにも飽き飽きしてきている頃だろうと思う。
WordPressの管理画面にログインして、実際にFTPプラグインが追加できるか確かめてみよー☆
日本語版だと標準の、「 WP Multibyte Patchプラグインを入れてみるといーと思うよっ

FTP接続時に、こんな風に設定するのさぁ。

で、「開始」して↓の感じの画面が出れば成功だよ!(プラグインは適当)

以上!

お疲れ様でした!

2012/9/16 デフォルトでPHP5.4.0が入るようになっていたのと、ApachePHPの二重化の回避方法が分かったので書き直し