※4/01 追記
公開している「Harada’s Theater」ですが、期間が過ぎましたので非公開とさせて頂きます。
短い間でございましたが、ご愛顧頂きありがとうございます。
Harada’s Theater / http://video.hdserver.mydns.jp
※一般公開ができないためBasic認証をかけてます。
ID:harada
Pass:いつもの
とまぁこんな感じで某動画サイト風なサイトを構築することができます。
今回はこちらの構築メモを載せます。
ClipBucketについて
YouTubeのような動画共有サイトを自分で持つ、そんな願いを叶えてくれるのが ClipBucketです。
動画や写真のアップロード・閲覧・評価やコメントの投稿など一通りの機能を備えています。
とはいうものの、映像にはセンシティブな情報が映り込むことや
著作権の観点から公衆に向けて送信するに適さないものなどがあり、
不特定多数への公開を原則とする YouTubeを使った共有に余り向いていないケースもあります。
ClipBucketなら、閉じたグループの中だけでまるで YouTubeのような動画共有ができるので、
そのような場合にとても適していると言えるでしょう。
概要
Clipbucketの構築にはたくさんのミドルウェアやソフトウェアが必要になります。
今回はCentOS最新版の7.3で構築を進めます。
#構築環境 CentOS Linux release 7.3.1611 (Core) #ミドルウェア LAMP環境 # Apache Server version: Apache/2.4.6 # MySQL(MariaDB) mysql Ver 15.1 Distrib 5.5.52-MariaDB # PHP PHP 5.4.16 (cli) #ソフトウェア ImageMagick :動画のサムネイル生成などに使用されます FFMPEG :動画と音声の変換をします。所謂エンコーダと呼ばれるもの FLVTool2 :アップロードされた動画をFLVに変換して、ストリーミングできる形にエンコードしてくれる MP4Box :MP4ファイルの変換を行います。※FFMPEGではmp4形式は読み込めない
1.LAMPインストール
yumで必要なパッケージを揃えます。
# yum install httpd mariadb-server mariadb php php-gd php-mysql php-curl php-xsl php-cli php-mbstring php-pear php-devel unzip
2.ImageMagickのインストール
# yum install ImageMagick ImageMagick-devel ImageMagick-perl
PHPモジュール用のImageMagickも必要になるので、下記PECLにてインストールします。
# pecl install imagick WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update downloading imagick-3.4.3RC1.tgz ... Starting to download imagick-3.4.3RC1.tgz (245,140 bytes) ...................................................done: 245,140 bytes 19 source files, building running: phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 Please provide the prefix of Imagemagick installation [autodetect] : #Enterキーを押す ====== 省略 ====== Build process completed successfully Installing '/usr/lib64/php/modules/imagick.so' Installing '/usr/include/php/ext/imagick/php_imagick_shared.h' install ok: channel://pecl.php.net/imagick-3.4.3RC1 configuration option "php_ini" is not set to php.ini location You should add "extension=imagick.so" to php.ini
最後に、/etc/php.iniにextension=imagick.soを追記してあげましょう。
# echo extension=imagick.so >> /etc/php.ini
2.FFMPEGインストール
FFMPEGはCentOSの標準のレポジトリで提供されていないので
EPELとNUX Dextop Releaseをレポジトリに追加します。
# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm # yum install epel-release
# yum install ffmpeg
3.FLVTool2インストール
FLVTool2のインストールにはrubyが必要になるのでrubyをインストールします。
# yum install ruby
rubyのライブラリ管理用コマンドgemでflvtool2をインストールします。
# gem install flvtool2 Fetching: flvtool2-1.0.6.gem (100%) Successfully installed flvtool2-1.0.6 Parsing documentation for flvtool2-1.0.6 Installing ri documentation for flvtool2-1.0.6 1 gem installed
4.MP4Boxインストール
yum上ではmp4boxはgpacという名前になります。
# yum install gpac mediainfo
5.PHPの設定
上記すべてがインストール完了したら、PHPの設定を構成する必要があります。
php.iniファイルを下記の通り修正しておきます。
# vi /etc/php.ini upload_max_filesize = 2048M max_execution_time = 8000 max_input_time = 300 memory_limit = 256M post_max_size = 2048M output_buffering = off display_errors = on date.timezone = "Asia/Tokyo"
保存が完了したら、apacheを再起動しておきます。
# systemctl restart httpd
6.MariaDBの初期設定
MySQLをインストールすると使えるようになる、mysql_secure_installationコマンドを実行し、
インストール後の初期設定を行います。
# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): <----- 起動したてでrootパスワードが設定されていないので、そのまま「Enter」。 OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. Set root password? [Y/n] Y <----- Rootパスワードを設定するので「Y」。 New password: <----- パスワードを設定 Re-enter new password: <----- パスワードを再入力 Password updated successfully! Reloading privilege tables.. ... Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y <----- 誰でもログインできる状態になっているのでそれをRemoveするので「Y」。 ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y <----- RootでMySQLにリモートログインできるのはセキュリティ的にNGなので「Y」。 ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y <----- testデータベースは不要のため「Y」。 - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y <----- 上記設定による権限の変更等を即時反映したいので「Y」。 ... Success! Cleaning up... All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL!
初期設定が完了したらclipbucket用のデータベースを作成します。
“PASSWORD”の箇所は任意の文字を指定します。
> CREATE DATABASE clipbucketdb; > CREATE USER 'clipbucketuser'@'localhost' IDENTIFIED BY 'PASSWORD'; > GRANT ALL PRIVILEGES ON clipbucketdb.* TO 'clipbucketuser'@'localhost'; > FLUSH PRIVILEGES; > EXIT;
# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 14 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE clipbucketdb; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> CREATE USER 'clipbucketuser'@'localhost' IDENTIFIED BY 'PASSWORD'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON clipbucketdb.* TO 'clipbucketuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> \q Bye [root@video ~]#
7.Apacheの設定
続いてApacheの設定になります。
/etc/httpd/conf.d以下にVirtualhostを用のconfを以下の様に作成します。
vi /etc/httpd/conf.d/clipbucket.conf <VirtualHost *:80> ServerAdmin root@example.com DocumentRoot /var/www/html/clipbucket/ ServerName video.hdserver.mydns.jp ServerAlias www.video.hdserver.mydns.jp <Directory /var/www/html/clipbucket/> Options FollowSymLinks AllowOverride All </Directory> ErrorLog /var/log/httpd/cb_error_log CustomLog /var/log/httpd/cb_access_log common </VirtualHost>
後は保存をして、apacheの再起動をしましょう。
# systemctl restart httpd
8.ClipBucketをダウンロード
clipbucketをダウンロードします。
最新版は公式サイトにあるので、こちらからダウンロードしてきます。
# cd /usr/local/src/ # wget http://downloads.sourceforge.net/project/clipbucket/ClipBucket%20v2/clipbucket-2.8.v3354-stable.zip --2016-12-20 23:15:18-- http://downloads.sourceforge.net/project/clipbucket/ClipBucket%20v2/clipbucket-2.8.v3354-stable.zip downloads.sourceforge.net (downloads.sourceforge.net) をDNSに問いあわせています... 216.34.181.59 downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: http://jaist.dl.sourceforge.net/project/clipbucket/ClipBucket%20v2/clipbucket-2.8.v3354-stable.zip [続く] --2016-12-20 23:15:18-- http://jaist.dl.sourceforge.net/project/clipbucket/ClipBucket%20v2/clipbucket-2.8.v3354-stable.zip jaist.dl.sourceforge.net (jaist.dl.sourceforge.net) をDNSに問いあわせています... 150.65.7.130, 2001:df0:2ed:feed::feed jaist.dl.sourceforge.net (jaist.dl.sourceforge.net)|150.65.7.130|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 10710544 (10M) [application/octet-stream] `clipbucket-2.8.v3354-stable.zip' に保存中 100%[===================================================================================================================================================================================================>] 10,710,544 4.81MB/s 時間 2.1s 2016-12-20 23:15:21 (4.81 MB/s) - `clipbucket-2.8.v3354-stable.zip' へ保存完了 [10710544/10710544]
ダウンロードが完了したらunzipで解凍します。
# unzip clipbucket-2.8.v3354-stable.zip
解凍したフォルダの中にはuploadとdo_not_uploadディレクトリがあるので
uploadディレクトりの中身をDocumentRootにコピーします。間違ってもdo_not_uploadの中身はコピーしない様に。
# mkdir /var/www/html/clipbucket # cp -r /usr/local/src/clipbucket-2.8.v3354-stable/upload/* /var/www/html/clipbucket/ # cp /usr/local/src/clipbucket-2.8.v3354-stable/upload/.htaccess /var/www/html/clipbucket/
9.ディレクトリのパーミッション設定
以下のディレクトリはフルアクセスの許可が必要になるので権限を追加します。
# chmod -R 777 /var/www/html/clipbucket/includes/ # chmod -R 777 /var/www/html/clipbucket/files/ # chmod -R 777 /var/www/html/clipbucket/images/ # chmod -R 777 /var/www/html/clipbucket/cache/ # chmod -R 777 /var/www/html/clipbucket/cb_install/
また、clipbucketディレクトリの所有者はapacheユーザに変更します。
# chown apache:apache -R /var/www/html/clipbucket/
10.cronのセットアップ
動画の変換を自動で実行する場合、
phpスクリプトをcronで定期的に実行させる必要があるので、下記を登録します。
# crontab -e * * * * * php -q /var/www/html/clipbucket/actions/video_convert.php * * * * * php -q /var/www/html/clipbucket/actions/verify_converted_videos.php 0 0,12,13 * * * php -q /var/www/html/clipbucket/actions/update_cb_stats.php
11.ファイヤウォールの許可設定
80番ポートを制限している場合、許可設定を入れてあげましょう。
systemdなので、iptablesではなくfirewalldになるので注意。
# firewall-cmd --permanent --add-service=http # firewall-cmd --reload
12.ブラウザでのインストール作業
ここからはWEB上で作業を進めます。
ブラウザでhttp://IPアドレス/ 若しくは http://ドメインでアクセスして、Okをクリック
clipbucketのサーバ要件を満たしているか事前チェックになります。
PHPShieldがnot installになっていますが、こちらは特に気にしなくて大丈夫なので、そのままOKへ。
それ以外の項目でエラーが出ていたら、パッケージが足りていないので別途インストールしましょう。
各ディレクトリの書き込み権限の確認が入ります。
もし、エラーが出たら、対象のディレクトリの権限を変えてあげましょう。
DBの設定です。
先ほど設定したMariaDBのデータベース情報を記載します。
adminユーザの設定です。
clipbucket上の管理者ユーザを設定してあげます。
最後にClipbucketのHP設定です。
自由にタイトルを、キャッチフレーズを決めましょう。
ここまででインストール作業は完了になります。
13.インストールディレクトリの削除
セキュリティの為、インストールディレクトリは削除しましょう。
# rm -rf /var/www/clipbucket/cb_install/
14.WEBページの再設定
インストール自体は完了しましたが、一部設定に若干の不備が残っているので修正します。
adminユーザでログイン後、Dashborad > Stats And > Website Configurationへ移動して
下記箇所を書き換えます。
FFMPEGとMP4Boxのパスが違う箇所になっているので、サーバ内の正しいパスを記載しておきます。
いかがでしたでしょうか。
今後のイメージとして、アップロードされた動画はキャッシュとして保存され
1分毎に実行されるcronのPHPスクリプトで変換が行われ、完了次第動画が閲覧できる、という流れになります。
なので、基本的にサーバのスペックが大事になります。
CPU、メモリ、ディスク、どれかが弱いとエンコードは全体的に時間がかかります。
ちなみにCentの6系だとソフトウェアの互換性の問題で、うまくインストールできなかったです。。
また、トラフィックを鬼の様に食うので、家庭用の回線では実装は難しいかと思います。
今回は回線上限のないサーバを使用している為実現できていますが、くれぐれも自宅サーバとかではやらないでね。。
参考サイト
How to Setup ClipBucket to Start Video Sharing Website in Linux
How to Setup ClipBucket to Start Video Sharing Website in Linux
http://qiita.com/knife0125/items/3d685f1368a654d5187d