2008-09-26 PHPmotionを導入してみた
■[PHP][PHPmotion]PHPmotionを導入してみた

PHPmotionを導入してみて、結構癖があるので導入方法をまとめます。
PHPmotionって?
PHPmotionは、Youtubeのクローン?で動画投稿サイトを作ることが出来るものです。
無料でDLすることが出来るので環境さえそろえばYoutubeのようなサイトを構築することができます。
PHPと一部Perlで構成されていて、中身もシンプルなので手を加えるのも楽です。
しかし、要求が少しシビアなので自宅サーバとかじゃないと導入出来ないと思われます。
ここで書かれている特徴は
# PHPmotion is 100% free to download and to use
# Template based design of PHPmotion means you change the look and feel.
# A growing user base of over 100 000 webmastes have already downloaded PHPmotion
# PHPmotion also has a fully featured admin area to manage your site
# Full support for mp3 audio (can be disabled)
# Supports playlists
# Fully CSS based template for easy editing
つまり、タダでテンプレートを使用しているので簡単に見た目を変えられるということと、管理画面で管理出来るよということ。
確かに管理画面もしっかりできていて、サイト自体もテンプレートできちんと分けられているので、デザインの変更が楽な印象でした。
広告を挿入するのも管理画面から簡単にできます。
場所の指定も可能。
Power Toolsとか追加テンプレートは実は有料ですが、使わないのでおk。
導入するよ!
今回は、Ubuntu 8.04 LTS Server Editionに導入。
まずは、公式サイトに書かれている必要なものを確認。
この他にもsendmailが必要だったりします。
また、PHPのセッティングとして
- open_basedir = (no value)
- upload_max_filesize = 100M
- post_max_size = 100M
- max_execution_time = 1500
- session.gc_maxlifetime = 14000
- safe_mode = off
- Thread saftery = disabled
- enable_dl = On
みてわかるとおり、レンサバとかじゃ無理ですね。
コーデックはこれだけだと実は足りないので、追加する必要があります。
で導入してください。
でも、これだと不十分なので後ほど、ソースからPHPを導入します。
では、順を追って説明します。
これらの導入は以前のUbuntu Serverにffmpegを入れるメモ - まめ畑で書いているので、こちらの通りにffmpegとffmpeg-phpを導入してください。
この時、ffmpeg-phpがうまくビルド出来なかったら、sudo apt-get install php5-ffmpegで導入してもかまいません。
- MencoderとMplayerとflvtool2
sudo apt-get install mencoder mplayer flvtool2
でおk
- phpshield
PHPのextensionでphpshieldが必要。
まずは、phpSHIELD loaders - php loaders for Windows, Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD and OpenSolarisからダウンロード。
loaderは無料です。
All loaders for Linux. PHP 4.3.x to PHP 5.x をDL
- 解凍してextensiondirへコピー
unzip phpshield.loaders.linux.zip
sudo cp phpshield.5.2.lin /usr/lib/php5/20060613+lfs/
- Configファイルを作成
/etc/php5/apache2/conf.d
sudo vim phpshield.ini
extension=phpshield.5.2.lin を書きます。
sudo /etc/init.d/apache restart
cd /usr/src
sudo apt-get install build-essential debhelper fakeroot
sudo apt-get source php5
sudo apt-get install libsnmp-dev
cd php5-5.2.4
設定ファイルの編集
–with-gd=shared,/usr –enable-gd-native-ttf
の行を
–with-gd=shared –enable-gd-native-ttf
と修正。,/usrを消すだけ。
sudo dpkg-buildpackage -rfakeroot
cd ..
sudo dpkg -i php5-gd_5.2.4-2ubuntu5.3_i386.deb
/etc/init.d/apache2 restart
sudoが面倒だったら、sudo -iを一番最初に投入する。
ビルドには時間がかかるので気長に待つ。
- その他
- PHP.iniの編集
sudo vim /etc/php5/apache2/php.ini
- open_basedir =
- upload_max_filesize = 100M
- post_max_size = 100M
- max_execution_time = 1500
- session.gc_maxlifetime = 14000
- safe_mode = off
- enable_dl = On
- Mysqlのセット
DBの名前は任意です。
今回は、DB名:hoge User:fuga PASS:piyo とします。
CREATE DATABASE 'hoge';
GRANT ALL PRIVILEGES ON hoge.* TO fuga@localhost IDENTIFIED BY 'piyo' WITH GRANT OPTION;
- mimeタイプの設定
sudo vim /etc/apache2/mods-available/mime.conf
の
を
AddHandler cgi-script .cgi .pl
と変更。
sudo vim /etc/apache2/sites-enabled/000-default
に以下を追加。
今回は、/var/www/hoge/にUPしたとします。
<Directory "/var/www/hoge/cgi-bin/"> AllowOverride All Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch -Indexes Order allow,deny Allow from all </Directory>
セットアップ
セットアップは以下のサイトを見ながら行います。
- ファイルのUP
PHPmotionのDownloadサイトからV2をDLします。
この際、登録が必要ですがDL終了したらアカウント消しても問題ないです。
/setup
/pictures
/classes
/temp
/logs
/addons
/uploads
/uploads/avi
/uploads/thumbs
/uploads/audio
/uploads/audio/temp
/uploads/pictures
以下のディレクトリの中身も変更されていることを確認
/cgi-bin/
/cgi-bin/audio/
- サブディレクトリの設定(documentRoot直下に配置した場合はこの設定は必要ないです)
/cgi-bin/uu_default_config.pm と /cgi-bin/audio/uu_default_config.pm を編集
config_file_name => 'uu_default_config',
temp_dir => $ENV{'DOCUMENT_ROOT'} . '/temp/',
upload_dir => $ENV{'DOCUMENT_ROOT'} . '/uploads/avi/',
redirect_url => '/uploader_finished.php',
path_to_upload => '/uploads/avi/',
を
config_file_name => 'uu_default_config',
temp_dir => $ENV{'DOCUMENT_ROOT'} . '/hoge/temp/',
upload_dir => $ENV{'DOCUMENT_ROOT'} . '/hoge/uploads/avi/',
redirect_url => '/hoge/uploader_finished.php',
path_to_upload => '/hoge/uploads/avi/',
uploader_conlib.php と audio_uploader_conlib.php を編集
$path_to_upload_script = '/cgi-bin/uu_upload.pl';
$path_to_ini_status_script = '/cgi-bin/uu_ini_status.pl';
を
$path_to_upload_script = '/hoge/cgi-bin/uu_upload.pl';
$path_to_ini_status_script = '/hoge/cgi-bin/uu_ini_status.pl';
- Uploadサイズの設定と受け入れファイルの拡張子の設定
php.iniでUploadMaxSizeを設定しましたが、こちらのファイルでaudioとvideoのUploadMaxSizeを設定しないと20MまでのファイルしかUP出来ません。
/cgi-bin/uu_default_config.pm と /cgi-bin/audio/uu_default_config.pm を編集
max_uploadの項目に受け入れる最大のファイルサイズを設定します。
単位はバイトです(100Mは104857600と書く)
allow_extensionsとdisallow_extensionsで許可するファイルを設定。
allow_extensionsはそのままでおkなんですが、disallow_extensionsは増やしておいた方がいいかも。
設定
ここまで設定できればあとは
http://yourAddress/hoge/setup/
にアクセスすると設定ウイザードが開始されるので指示に従ってください。
DBのテーブルなどが自動的に作成されます。
ここで注意なのはffmpegのパス。
事前に確認をしておいて下さい、今回の環境では/usr/local/bin/ffmpeg と書き直しました。
他のものは標準のパスでおkです。
もし、設定中にエラーが出たら適時修正してください。
設定が完了したらsetupディレクトリを削除してください。
これで使えるように
さて、http://yourAddress/hoge/ にアクセスしてみてください。
サイトが表示されていると思います。
赤いマークで×が表示されている箇所がありますが、Videoが一本も上がっていないと表示されます。
http://yourAddress/hoge/siteadmin/
が管理者用ページです。
標準ではID・PASS共に adminなので変更をして下さい。
少しだけ使い方
動画をUPするには登録が必要です。
登録フォームを入力すると、アドレス確認のメールが送信されるので、その中のアドレスにアクセスしてください。
動画をUPするとエンコードが始まるのでエンコード完了まで動画が表示されません
管理者ページの使い方は簡単。
- 動画を消す
- Media -> Active Videosで削除したい動画をチェックしてDeleteをクリック
- 実は動画やAudioはサーバから削除されていないので、動画やサムネを完全に消すには Management -> System Maintenance でDelete Completelyをクリック
- 元に戻すには同じページでUn-Deleteをクリック
- ユーザを消した時も同じ操作が必要です
- General中のAuto approve profile photoはYESにしておくと、ユーザがプロフィール写真を変更した際に承認しなくても即座に変更されて便利です
その他こまごまと
- 動画をサーバから消しても、DBには実は残っているのでグループを削除できなかったりします。バグなのかどうかわかりませんが、videosテーブルのapproveをdeletedに変更するだけで、完全削除時にこのエントリを消していないのが原因です。$sql = "DELETE FROM videos WHERE indexer = $video_id"";をDBにログインして発行すればおkなのですが面倒なのとエントリを消しても問題ないので、ソースにこの処理を追加して完全に削除するときはこのSQLを実行するようにした方が便利。本当は不具合があるのかも・・・。でも、動画ないのにカテゴリが消せないのはおかしい。
もしくは、カテゴリの情報を表示しているソースのSQLを修正して、deletedになっているものを除外するようにした方がいいかもしれないですが、結局エントリにはゴミが残るので考え物。
siteadminディレクトリのmaintain.phpが削除をしている箇所を含んでいるので、server maintenaceの項目の中の
$sql = "UPDATE videos SET approved ='deleted' WHERE indexer = $video_id";
を
$sql = "DELETE FROM videos WHERE indexer = $video_id"";
としてみた。
このあたりは、もっと検討が必要。
- 実は日本語もおk
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- これで管理者サイトでも日本語がおkに
- サムネイルは動画開始1秒後を採用しています、しかしフォームを追加してソースを書き換えると任意の位置をサムネイルにできます。
- UPしたオリジナルファイルをエンコード完了後削除するかどうかも設定可能
まとめ
いろいろと癖がりますが、なれると導入もらくなはず。今回は色々とはまってしまい時間がかかりましたが・・・。
ffmpegやmencoderでエンコードを行っているのでマシンスペックによては時間がかかります。
エンコードエラーを起こしても通知されないので注意が必要です。
管理者画面でいろいろと設定できるのでいろいろ試してみてはどうでしょうか?
何かありましたらコメントをいただけるとありがたいです。
また、わかる範囲でお答えします。
こういうものがフリーとはいい時代ですね。

phpmotionで作成されたページのサンプルとかお持ちですか???
御存知であれば教えていただければ幸いです。
また、有料設置はおいくらでしょうか?