カテゴリー : Server Notes

VirtualBox-4.2.16 仮想サーバーからUSBを利用する

今さら古い情報で価値はないのですが、VitrualBox 4.2.16の仮想サーバーからUSBを利用する際、どうやらExtension Packをインストールしなければならないということで、それを記事にしようとしてキャプチャした画像がデスクトップに散乱していたため、それをアップロードしてスッキリさせるための記事です。

今日(2013-12-01)VirtualBoxを起動したら4.2.18から4.3.4へアップデートされたので、記事にすることを思い付きました。

ところで毎回のことですが、アップデートするとWin7側のネットワークアダプタ「VirtualBox Host-Only Network」のIPアドレスの設定が初期化されるので、アップデート後は再設定を忘れずに。自分の場合はアダプタのIPは192.168.56.10、DNSを192.168.56.1にして仮想サーバー側を運用してます。

それでは以下画像のアップロードのみです。

vbubsd01

 

vbubsd02

 

vbubsd03

 

vbubsd04

 

vbubsd05

 

vbubsd06

 

vbubsd07

 

Ubuntu12.04 PHP5.5から5.4、Apache2.4から2.2へダウングレード

発端は、ノートPCのVirtual Boxで動作させていたサーバー上で、WordPressとSMTPプラグインを利用してローカルからメールを送信してみよう、という動作を試してみようとしたところ、WordPressを動作させると「Deprecated: mysql_connect()なんちゃら」とエラーが表示されたことからです。

PHP5.5からはMySQLのコマンドはmysqliかPDOのみになるため、WPのDEBUGフラグをセットすると非推奨の表示がされるのは仕方ないとして、「error_reporting(E_ALL ^ E_DEPRECATED)」で表示を消そうとしたけど消えません。はて?

いろいろと試して時間を潰してしまい腹が立ったので、PHP5.5を5.4へダウングレードする決断をしました。これは以前、「Ubuntu 12.04 PHP 5.4 から PHP 5.3 へダウングレード」でさんざん苦労したのでちゃっちゃっと済ませました。

手順はPHP5.5を削除して、レポジトリを書き換えておき、再インストールします。

$ sudo service apache2 stop
$ dpkg -l | grep php5
$ sudo apt-get --purge remove php5 php5-mcrypt …

apache2を停止し、php5.5に関するパッケージリストを参照してから削除します。

$ sudo apt-add-repository -r ppa:ondrej/php5
$ sudo apt-add-repository ppa:ondrej/php5-oldstable
$ sudo apt-get install php5

PHP5.5のリポジトリを削除して、PHP5.4をインストールするためのリポジトリを設定、PHP5をインストールし直してPHP5.3、PHP5.4へとインストール、アップデート完了。さぁ、phpinfo()だ、で、実行したらプログラムがダウンロードされてきました。

訳わかりませ~ん。

Google先生に尋ねまくっていると、PHPのモジュールがApacheに組み込まれているか確認しろ、とのこと。

$ sudo apache2ctl -M | sort

あらら、PHP5モジュールがないではありませんか?そう、これを忘れてました。

$ sudo apt-get install libapache2-mod-php5
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies: libapache2-mod-php5 : Depends: apache2.2-common but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

パッケージの依存状態がよくないような。もう、訳わかりません。ここからはドロ沼です。

Google先生に尋ねまくった結果、次のページでようやく原因が何となくわかりました。

libapache2-mod-php5 uninstalled after update impossible to put back

Ubuntu 12.04, PHP 5.4, Apache2 and ppa:ondrej/php5

そうです、Apache2が2.2から2.4へアップグレードされていたのです。2番目のリンク先に書いてありましたが、PHP5.5のアップデートでApache2.2からApache2.4へ依存の設定が変わり、Apache2.4が動作していたわけです。どうやらApache2.2へ戻さないとPHP5.4は動作しそうもありません。

でもApache2.4から2.2へのダウングレード方法が分かりません。

で、思い切って2.4を削除して、再インストールを試してみることにしました。

$ dpkg -l | grep apache2
$ sudo apt-get remove --purge apache2 apache2-bin …
$ sudo apt-get install apache2

エーと、忘れていたあれ。

$ sudo apt-get install libapache2-mod-php5
$ sudo service apache2 restart

phpinfo()を実行すると、無事、PHPが動作することが確認できました。

今日はこれで貴重な土曜日が潰れてしまいました。でもまだapacheとPHPの設定が残っているのでした(T_T)。

 

ubuntu 12.04 PHPUnitをComposerでインストール

最近のPHP界隈では、パッケージのインストールに「Composer」が利用されるようになり、複雑な依存関係を解決できる優れものの登場で作業が楽になった。

まだ使い始めたばかりなので、ComposerとPHPUnitを利用開始するまでのインストールについて備忘録を残しておく。

Composerを活用するための設定は今後の実践で学習するとし、その前にPHPを利用する上で必要となるフレームワークやテスト環境、その他パッケージのインストール(ダウンロード)について。なお、自分のパーソナル環境でのお話です。

現在PHPUnitやLaravel4を頻繁に利用しているが、有名どころのPHPライブラリはComposerのPackagistに登録されており、ここから容易にインストール可能な訳だ。PackagistはGitHubやPEARのようなリポジトリ(アーカイブ)で、Composerから利用するようになっている。GitHub側でもComposerに対応していれば、gitコマンドでなくcomposerコマンドでインストールできるようだ。

さてcomposerの導入だが、コマンドは「composer.phar」のPHPアーカイブファイルで、取り込むとパーミッションが755の実行可能ファイルになっている。

$ curl -sS https://getcomposer.org/installer | php

または

# curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin

自分はローカル内でどのプロジェクトからも利用できるように、「/usr/local/bin」に「composer」とリネームして利用することにした。

Composerのアップデート

導入してからしばらくほったらかしにしていたのだが、「composer –version」と実行すると「30日以上経過しているのでupdateするように」のようなメッセージが表示された。

Composer本体のアップデートは非常に簡単で、メッセージにも表示されるが次のようにして一発でアップデートしてくれる。

# composer self-update

PHPUnitのインストール

Composerを利用する前のインストールは、PEARでチャネルを指定してどうたらこうたら、と訳も分からず操作していた。

Composerでインストールする場合、依存関係を「composer.json」ファイルに記述して「install」パラメータを指定して取り込む。そうするとカレントディレクトリに「vendor」ディレクトリが作成され、「vendor/bin/phpunit」が目的のコマンドとして用意される。

先ずは「composer.json」だが、phpunitもプロジェクト共通で使えるようにしたいので「/usr/local/bin」に用意することにする。

「/usr/local/bin/composer-packages」ディレクトリを作成し、そこに次の「composer.json」ファイルを作成する。

{
    "require": {
        "phpunit/phpunit": "3.7.*"
    }
}

カレントが「/usr/local/bin/composer-packages」の状態でインストール実行。

# composer install

インストール直後は次のようなディレクトリ構成になった。

composer-packages/
 +- composer.json
 +- composer.lock
 +- vendor/
     +- autoload.php
     +- bin/
     |   +- phpunit
     +- composer/
     +- phpunit/
     +- symfony/

後はphpunitがどこらでも利用できるようにリンクを作成する。

# cd /usr/local/bin
# ln -s composer-packages/vendor/bin/phpunit phpunit

phpunitを更新する場合は「composer-packages」ディレクトリで「composer update」とすればOKだ。

迷宮の中で少し動けるようになった。

Ubuntu 12.04 PHP 5.4 から PHP 5.3 へダウングレード

サーバーに関して、あまりモノを知らない自分用の備忘録です。

Laravel 4 をインストールしようかと apt-get でアップデートしているうちに、ブラウザでPHP プログラムのソースがダウンロードされるようになり、プログラムが実行されなくなった。

最初は apache2 の設定を疑い、いろいろ設定を変更しても変化が起きない。で、端末から php が動作するか「php -v」を実行すると「5.5.1」と表示された。これが原因かどうか分からないが、5.4へのダウングレードの方法を検索しても分からず、とにかくもう一度インストールしてみることにした。

「sudo apt-get remove php5」で削除し「dpkg -l | grep php5」を実行すると、パッケージ名の前に「rc」フラグが表示され、削除はされているが設定ファイルが残っているので、もう一度「sudo apt-get purge php5-cgi php5-cli php5-common …」で削除した。これは remove する際「sudo apt-get remove –purge php5」で済んだかもしれないが未確認。

ここまでのカット&トライは次のサイトを参考にした。

Downgrade PHP 5.4 to 5.3 on Ubuntu 12.04

Ubuntu Server で単純にパッケージを削除しても設定ファイルは残る、残った設定ファイルを一括削除するには?

で、「sudo apt-get install php5」で再インストールするも、インストールされているバージョンは相変わらず「5.5.1」で変わらない。

PHP5が動作せずプログラムがダウンロードされる現象について検索していると、Ubuntuの「https://help.ubuntu.com/community/ApacheMySQLPHP」ページで「Troubleshooting PHP 5」のところに「ダウンロードが表示されるなら libapache2-mod-php5をインストールするように。PHP5のパッケージがインストールされたときPHPの異なるバージョンを動作させるため削除された可能性がある。」ような事が書かれていた。

そこで「sudo apt-get install libapache2-mod-php5」を実行したところインストールができず、「apache2-api-20120211の依存でそれがインストールされていない」とのメッセージが。

で、ようやく思い付いたのが、5.4 をインストールする際 リポジトリの追加を行っていた件だ。

「sudo add-apt-repository ppa:ondrej/php5」

これの意味が良く分からなかったので調べてみると、パッケージ管理でユーザー「ondrej」氏が管理するパッケージを利用するように追加したようで、PPA(Personal Package Archives)は誰でもパッケージ管理を公開、利用できるようになっているUbuntu用の仕組みらしい。

上記により「/etc/apt/sources.list.d」に保存されているので、それを削除するコマンドを実行することにした。

$ sudo apt-add-repository -r ppa:ondrej/php5
You are about to remove the following PPA from your system:
 This branch follows latest PHP packages as maintained by me & rest of the Debian pkg-php team.

It also includes some widely used PHP modules (if you need some other feel free to send me a request).

You might need to add additional PPAs to make some packages work:

????????ppa:ondrej/apache2
????????ppa:ondrej/systemd

If you are looking for latest MySQL packages you can use:

    ppa:ondrej/mysql

To re-build the packages you also need:

????????ppa:ondrej/debhelper

If you need to stay with PHP 5.4 you can use the oldstable PHP repository:

????????ppa:ondrej/php5-oldstable

P.S.: If you like my work and want to give me a little motivation, you can spoil me using PayPal: http://goo.gl/kKdCl or Flattr: https://flattr.com/submit/auto?user_id=oerdnj&url=http://www.sury.org/
 More info: https://launchpad.net/~ondrej/+archive/php5
Press [ENTER] to continue or ctrl-c to cancel removing it

これで削除して、もう一度「sudo apt-get install php5」を実行したところ、「Ver.5.3.10」や「libapache2-mod-php5」などが無事にインストールされ、PHPプログラムも動作するようになった。

やれやれだ。

なおPHP5.4を利用するには「ppa:ondrej/php5-oldstable」を利用すればいいらしい。

今回はUbuntuのパッケージ管理について少し勉強した。

モジュールの追加

実は現在開発はPHP5.4を利用するようにしているが、MySQLデータベースをアクセスできないと思ったらモジュールがインストールされていないことが分かった。そこでとりあえず以下のモジュールを追加でインストールした。

$sudo apt-get install php5-mysql php5-curl php5-gd php5-mcrypt

ところで PHP 5.5 以降は、MySQLの拡張モジュールは非推奨となり MySQLi か PDO_MySQL を利用するようにとの事。Laravel4は対応しているのだろうか?上のインストールではどちらのドライバも取り込まれているのでとりあえずはOKという事で。

(130820)

 

Ubuntu 12.04 PHP 5.3.10からPHP5.4.15へアップグレード

PHPのバージョンを5.3から5.4へアップグレードする際、ちょっと引っかかったのでその備忘録です。

検索すると「how do I upgrade from php 5.3 to php 5.4.6 in ubuntu?」のように割と簡単にできる感じだ。

$ sudo add-apt-repository ppa:ondrej/php5
$ sudo apt-get update
$ sudo apt-get install php5

で、そのまま実行したのだがうまくいかない。で、後で気がついたのだが「add-apt-repository」コマンドが command not found エラーだった。

そこでgoogle検索すると「How to Fix Error sudo: add-apt-repository: command not found」で、「python-software-properies」パッケージがインストールされていないということで、パッケージをインストールした。

$ sudo apt-get install python-software-properties

でこの後、前述の「apt-get install php5」を利用せず、あっちこっち検索していたときに見つけた「Upgrade PHP 5.3.x to 5.4.11 in UBUNTU 12.04」ページで説明されていた手順でアップグレードした。

$ sudo add-apt-repository ppa:ondrej/php5
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

以上でPHP5.3.10からPHP5.4.15へアップグレードが完了した。