カテゴリー : Server Notes

Ubuntu 12.04 PHPUnitのインストール

Windows 7 に VirtualBoxを利用してUbuntu Server 12.04 をセットアップ、Apache2の Virtual Hostの設定や ProFTPD のインストールを終え、開発環境ももう少しで整います。で、PHPUnitをインストールしようとしたところうまくいかなかったので、その備忘録です。

最初「PHPUnit インストール方法(http://d.hatena.ne.jp/tarurut/20110125/1295906030)」というページを参考にして、「#apt-get install phpunit」でインストール「$phpunit –version」で動作確認したら

$ phpunit --version
PHP Warning: require_once(PHP/CodeCoverage/Filter.php): failed to open stream: No such file or directory /usr/share/php:/usr/share/pear') in /usr/bin/phpunit on line 38

のように表示されて動作しなかった。そこで「#apt-get remove phpunit」として削除、当該ページにリストされているpearコマンドを使った以下の入力を試した。

#pear upgrade-all
#pear channel-discover pear.phpunit.de
#pear channel-discover pear.symfony-project.com
#pear channel-discover components.ez.no
#pear install --alldeps phpunit/PHPUnit

で、最後の行のコマンドを実行したところ、しばらく何の表示もなかったのでCtrl-Cで終了し、今度は次のようにしてインストールした。

#pear install -a pear.phpunit.de/PHPUnit

ここで何故か「#apt-get install phpunit」を実行していたのですが、それは伏せておきます。で、「#phpunit –version」としたところ以下のようなメッセージが表示された。

PHP Fatal error: Call to undefined method PHP_CodeCoverate_filter::getInstance() in /usr/bin/phpunit on line 39

どうしたものかとググっていると以下のページを見つけたので、さっそく試してみた。

Call to undefined method PHP_CodeCoverage_Filter::getInstance()

http://stackoverflow.com/questions/9186000/call-to-undefined-method-php-codecoverage-filtergetinstance

すると「#pear install –alldeps phpunit/PHPUnit」を入力したところで次のメッセージが。

#pear install --alldeps phpunit/PHPUnit
Unknown remote channel: pear.symfony.com
phpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml" (version >= 2.1.0)
No valid packages found
install failed

そこで

#pear channel-discover pear.symfony.com

として

#pear install --alldeps phpunit/PHPUnit

としたところ、良い雰囲気にインストールが完了。

#phpunit --version
PHPunit 3.7.8 by Sebastian Bergmann.

となったのであります。もう一度コンソールに表示されたメッセージを眺めてみると、実は「#pear install -a pear.phpunit.de/PHPUnit」を実行したときに「Unknown remote channel: pear.symphony.com」とメッセージが表示されていたのでした。

お粗末さまでした。

ところでpearのインストールについて

$ sudo apt-get install php-pear

pearのアップデートは

$ sudo pear upgrade PEAR

(130724)

実は簡単にインストールできた

Ubuntu 12.04 サーバーのセットアップで再度インストール操作したが、実はPHPUnitのサイトのインストール操作通りで簡単にできた。pear インストール後

$ sudo pear config-set auto_discover 1
$ sudo pear install pear.phpunit.de/PHPUnit

ただし Stable の PHPUnit 3.7.22 がインストールされた。3.8をインストールする場合は Composer を使うのかな?

アップグレードの確認は

以前にインストールしたサーバーで

$ sudo pear list-upgrades

としたところ

Channel pear.php.net: No upgrades available
pear.phpunit.de Available Upgrades (stable):
============================================
Channel Package Local Remote Size
pear.phpunit.de PHPUnit 3.7.20 (stable) 3.7.22 (stable) 114kB
pear.phpunit.de PHP_CodeCoverage 1.2.10 (stable) 1.2.12 (stable) 156kB
pear.phpunit.de PHP_Invoker 1.1.2 (stable) 1.1.3 (stable) 3.7kB
pear.symfony.com Available Upgrades (stable):
=============================================
Channel Package Local Remote Size
pear.symfony.com Yaml 2.2.1 (stable) 2.3.2 (stable) 40kB

と表示された。で、アップグレードは、

$ sudo pear upgrade --alldeps phpunit/phpunit

したところ

phpunit/PHP_CodeCoverage can optionally use PHP extension "xdebug" (version >= 2.0.5)
downloading PHPUnit-3.7.22.tgz ...
Starting to download PHPUnit-3.7.22.tgz (116,042 bytes)
.........................done: 116,042 bytes
downloading PHP_CodeCoverage-1.2.12.tgz ...
Starting to download PHP_CodeCoverage-1.2.12.tgz (158,796 bytes)
...done: 158,796 bytes
downloading Yaml-2.3.2.tgz ...
Starting to download Yaml-2.3.2.tgz (40,003 bytes)
...done: 40,003 bytes
downloading PHP_Invoker-1.1.3.tgz ...
Starting to download PHP_Invoker-1.1.3.tgz (3,734 bytes)
...done: 3,734 bytes
upgrade ok: channel://pear.phpunit.de/PHP_CodeCoverage-1.2.12
upgrade ok: channel://pear.symfony.com/Yaml-2.3.2
upgrade ok: channel://pear.phpunit.de/PHP_Invoker-1.1.3
upgrade ok: channel://pear.phpunit.de/PHPUnit-3.7.22

となり、アップグレード終了。

Win7VirtualBoxのUbuntu12.04のMySQL設定

ノートPCにWebアプリ開発環境を集約する試みの第1段階「Win7(64bit)にVirtualBox4.2を利用してubuntu12.04(64bit)をインストール」の続きです。

サーバーのソフトで当面必要になるのがMySQLとApacheとPHPで、それらはサーバーのインストールで既に組み込んであるので、第2段は使い易いようにする設定の備忘録となります。

MySQLの設定

「/etc/mysql/my.ini」が設定ファイルであるが、Ubuntu12.04では直接このファイルを編集せず、「/etc/mysql/conf.d」ディレクトリに「xxx.cnf」のようなエクステンション名を「cnf」とした設定ファイルがあれば、それを読込んでオーバーライトするようになっている。

今回はデータファイルのディレクトリなどは変更せず次の2点のみ設定する。

  • SSH接続でmysqlを使う時のコンソールでプロンプトにDB名を表示する
  • DBデータでUTF8の日本語を扱えるようにする

インストールしたままの設定でデータを日本語入力したところ文字化けした。確認のため。

# mysql -h localhost -u root -p

でmysqlにログインしコンソールから

>status

として表示させると、Server characterset と Db Characterset が latin1 になっている。そこで上記2点の設定を「/etc/mysql/conf.d/myadd.cnf」ファイルに次のように入力して保存。

[mysqld]
character-set-server=utf8

[mysql]
prompt="\d> "

# service mysql restart

で再起動。再度SSHでmysqlにログインしてstatusを確認する。

ちょっとつまずいたので注意点。この設定をする前にcreateしたデータベースはstatusで Db characterset が latin1 のままとなり、UTF8には変換されない。なので必要であればデータベースを再createする。

MySQLのユーザー設定

開発用なので頻繁にデータベースを作成することになる。rootユーザーでそれらを利用しても良いのだろうが、気持ち悪いのでrootユーザー以外のユーザーを登録してアクセス権限を与えておく事にする。

以下はデータベースをtestとしたきのユーザー名userをrootで設定する手順。

> create database test;
Query OK, 1row ...
> grant usage on test.* to user@localhost identified by 'password';

以上、MySQLはこれで利用する事にした。

Win7(64bit)にVirtualBox4.2を利用してubuntu12.04(64bit)をインストール

ASUS(えいすーす、と発音する事に最近決まったらしい)のU24Aを購入してSSDを組み込んだので(U24A SSDを換装)開発環境を整えるべく、概念では理解していた仮想マシンにUbuntuをインストールして、ローカルマシンのみで仮想ネットワーク環境を構築してみました。

多くの人が同じようなことをしているので簡単にセットアップできると思いきや、あちこちハマって悩んでようやくベース(Win7からSSHでubuntu serverへ接続する)が整いました。本記事は次回のための備忘録です。

Ubuntu Serverのバージョンは12.04でCD-ROM書き込み用(ISO形式)をダウンロード、VirtualBoxはオラクルのサイトから最新版4.2(Win版)をダウンロード。以下、作業の順番で内容を箇条書きします。

インストール前に

1.CD-ROMドライブ無くてもセットアップ可能
2.仮想ドライブをCドライブ以外のドライブ(別パーティション)に作成
3.ゲスト(Ubuntu)はデフォルト(eth0)でホスト(Win7)からインターネットと接続可能
4.Win7とUbuntuはネットワークの設定をしないと通信できない

セットアップ開始

  1. VirtualBox 4.2をサクッとインストール(ストレージは後で変更可能)
  2. 新規で仮想マシンを生成、設定ーストレージーIDEコントローラのCD/DVDドライブで、CDのアイコンをクリックしてUbuntuのISOファイルを指定する
  3. 同じく設定ーネットワークーアダプター2にホストオンリーアダプターを割り当て、アダプターを有効化しておく
  4. 仮想マシンを起動してUbuntuをインストール(通常と同様)、ネットワークはeth0を通常使用
  5. Win7のコントロールパネルーネットワークと共有センターを実行すると、「VirtualBox Host-Only Network」という接続があるので、ここからプロパティを開いてIPv4のIPアドレスを設定(Windows側のアドレス)
    デフォルトは192.168.56.1になっているが1をサーバー側にしたかったので、Win7側は192.168.56.10にしておいた
  6. Ubuntuは/etc/network/interfaces に以下を追加
    auto eth1
    iface eth1 inet static
    address 192.168.56.1
    netmask 255.255.255.0
    network 192.168.56.0
    broadcast 192.168.56.255

    ちなみにeth0は
    auto eth0
    iface eth0 inet dhcp

さて、これでsshとapacheの接続は確認できた。

次にWindows 7のhostsにサーバー名を登録する。

メモ帳を開く際右クリックして管理者権限で実行し、C:\Windows\System32\drivers\etc\hostsを開くのだが、エクステンションがtxtでフィルタリングされて見えないので、「すべてのファイル」を指定してからhostsを書き換える。

今日はここまで。

XREAでPHP5.3をCGIとして動作させる

XREAサーバーでPHPをCGIとして動作させる方法は次のページに掲載されている。

PHPをCGIとして動かす方法について

以下、実際に試したときの備忘録です。

PHP5.3をCGIで動作させるため .htaccess に次の1行を、サブドメインのトップディレクトリにある .htaccess に追加。

AddHandler application/x-httpd-php53cgi .php

設定後phpinfo()を実行して確認すると

Server API | CGI/FastCGI

とひょうじされた。何も設定しないモジュールモードだと「Apache」と表示される。また、53を指定しないと「CGI」とだけ表示される。

なお、PHP 5.3.8 が動作しており、5.3.13 より前のバージョンという事で PHP の CGI 動作での query string に関する脆弱性問題(CVE-2012-1823)について、運営者からは「影響ない」事が2012-5-8付けでアナウンスされていた。

 

Cシェル プロンプトの設定 備忘録

Cシェルのプロンプト表示「%」を、「カレントディレクトリパス>」に変更したかったので Google 先生にお尋ねした。結果、ホームディレクトリにある「.cshrc」設定ファイル内で、「if ($?prompt) then」以下を次のように追加設定する。

if ($?prompt) then
	alias set_prompt 'set prompt="$cwd> "'
	alias cd 'chdir \!* ; set_prompt'
	cd $cwd
endif

vi で編集保存後、「source .cshrc」と実行してシェルの再設定をする。