Link Search Menu Expand Document

サマリ:OpenPNE3をインストールしました

phpコマンド環境がない場所でOpenPNE3をインストールする

PHPコマンドがない環境にOpenPNE3をインストールするには、サーバサイドの知識や技術だけでなく、Makefileを読むことができることが必要です。

が、これができれば、手嶋屋さんに頼まなくても大体の環境でインストールできちゃったりします。

まずは、試験環境づくりから。今回は公開領域に非公開ファイルなども詰め込んでしまいます。本当に上手くいくと分かってから、ディレクトリを切ればいいと思います。きちんと考えすぎると、失敗したときの回復手順も複雑になりえますので。

あと、Windows Server系は知りません。

環境

サーバ環境と同じ環境を手元に構築します。VMWare でもVirtual PCでも構いません。サーバ環境を厳密に知っておく必要がありますが、エラーメッセージから推測することもできます。基本的には何度も何度もTrial and Errorを繰り返すものと覚悟してください。

サーバ環境を知るには、以下のようにreleaseファイルを覗くことが一番いいと思います。以下のどれかのファイルが引っかかると思います(引っかからない場合はTrial and Errorの数は増えるかもしれません)。

cat /etc/lsb-release
cat /etc/redhat-release
cat /etc/debian_version
cat /etc/SuSE-release
cat /etc/mandriva-release
cat /etc/vine-release
cat /etc/issue

lsbの場合はubuntu系、redhatの場合はRHEL/CentOS系といった具合に、サーバと同じディストリビューションを手元に構築できれば、サーバサイドに移したときにもエラーがでる可能性は低くなります。

PHP compilation

まずはPHPのコンパイルから。インストールするわけではないので、一般ユーザで問題ありません。githubにもソースがありますが、backup用途で置いているだけなので、以下のリポジトリから落とせとreadme.mdに書いてあります(2012/10/01時点)。

cd ~/
git clone https://git.php.net/repository/php-src.git
cd php−src
./buildconf
./configure --enable-static \
--with-mysql \
--with-mcrypt \
--with-mhash \
--with-curl \
--enable-ftp \
--with-openssl \
--enable-sockets \
--with-pear \
--enable-soap \
--with-pdo-mysql \
--with-mysqli

buildconfのためにはautoconf/automake/bison/gccなどの各パッケージが必要になりますので、エラーが出るたびにインストールしながらすすめてください。

configureのオプションですが、バックスラッシュの前は半角空白を忘れずに。あと、関係ありそうなものを全部のせしてますが、enable-static/with-mysql/with-pdo-mysqlあたりだけでいいのではないかと思います。たぶん。そこまで確認するだけの気力はありませんでした..。

completeだとか、正常に終了した旨のメッセージはでません。エラーがでていなければ成功です。

次が少し面倒です。configure後、Makefile(Mは大文字、それ以外小文字)ができています。.inとかついてるファイルは無視してください。

以下の箇所を見つけてください。ファイル内に一箇所しかないはずです。

BUILD_CLI = ... $(ZEND_EXTRA_LIBS) -o $(SAPI_CLI_PATH).

以下のように変更(-all-staticを追加)します。

BUILD_CLI = ... $(ZEND_EXTRA_LIBS) -all-static -o $(SAPI_CLI_PATH).

準備完了です。サーバに慣れている場合、make;make installみたいなことするかもしれませんが、しないでください。ローカル(作業)環境のPHPが置き換わりますよ。

make

確認方法

static compilationによって、外部ライブラリに依存せず、スタンドアロンで動作する、cli/phpが作成できたはずです。

確認するには以下のコマンドを発行してください。

ldd sapi/cli/php

『ldd: sapi/cli/php: not a dynamic ELF executable』のようにでると成功です。

以下のような場合はstatic compilationに失敗しています。ただ、サーバ側に各ライブラリがすべて用意されていれば問題ないのですが..。安全策を取りたい場合は、上記の内容のどこかに問題がなかったか、確認してください。

	linux-gate.so.1 =>  (0xffffe000)
	libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7f7f000)
	librt.so.1 => /lib/librt.so.1 (0xb7f76000)
	libresolv.so.2 => /lib/libresolv.so.2 (0xb7f63000)
	libm.so.6 => /lib/libm.so.6 (0xb7f3e000)
	libdl.so.2 => /lib/libdl.so.2 (0xb7f39000)
	libnsl.so.1 => /lib/libnsl.so.1 (0xb7f24000)
	libc.so.6 => /lib/libc.so.6 (0xb7e04000)
	libpthread.so.0 => /lib/libpthread.so.0 (0xb7df0000)
	/lib/ld-linux.so.2 (0xb7fc3000)

OpenPNE3に同梱

先ほど作成したPHPバイナリとOpenPNE3に同梱した上で、サーバ側にアップロードします。

OpenPNE3のダウンロード

最新版で試してみたいので、githubから落としてます。設定ファイルはインストール時にエラーにならないように、コピーしているだけで、とりあえず、内容はそのままにします。

cd ~/
git clone git://github.com/openpne/OpenPNE3.git
cd OpenPNE3
cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration
.class.php
cp config/OpenPNE.yml.sample config/OpenPNE.yml

PHPを同梱

cli版phpをコピーするだけです。

cp ~/php-src/sapi/cli/php ~/OpenPNE3/

リパッケージング

zipに固めるだけです。

cd ~/
zip -9 -r OpenPNE3.zip OpenPNE3/

インストールなど

サーバ側のインストールはOpenPNE3の公式に委ねます。一点だけ異なるのは、インストール時のコマンドです。上記で作成したphpを利用するよう、以下のようにしてください。

unzip OpenPNE3.zip
cd OpenPNE3/
./php symfony openpne:install

./symfonyとやると、システム固有のパスからphpコマンドを探すので、not foundエラーになるはずです(むしろ、ならないなら、上記の作業は必要ありませんでした)。

注意点

ELF binary type “0” not known.

Linuxで作成したバイナリをBSD系で実行していると思われます。上記手順に則って、BSD系でバイナリを作りなおしてください。

なお、以下のようなコマンドを発行すれば、問題は解決できます。という記事が色々ありますが、結局のところ、次のエラーが生じますので、トラブルシュートとしては賢明ではありません。

cd ~/OpenPNE3
brandelf -t Linux ./php

サーバ側にbrandelfがなければ、そもそもお手上げになります。

ELF interapter /lib/ld-linux.so.2 not found

static compilationしましょう。上記手順の通りで上手くいく「はず」

以上。


Back to top

Copyright © 2021- Akira Otaka All rights reserved.