このチュートリアルでは、CentOS 7を使用したAlibaba Cloud Elastic Compute Service (ECS)インスタンスにClipBucketとNginxをインストールして設定します。
Alibaba Cloud Tech Share 執筆、アルスラーン・ウド・ディン・シャフィク(Alslan Ud Din Shafiq)。Tech Shareは、技術的な知識やベストプラクティスをクラウドコミュニティ内で共有することを奨励するAlibaba Cloudのインセンティブプログラムです。
ClipBucketはオープンソースのメディア・動画管理システムで、無料版と有料版があります。ClipBucketを使えば、マルチスクリーンでブランド化されたビデオオンデマンド(VOD)コンテンツを立ち上げることができます。ClipBucketにはLDAPが統合されており、広告の認証情報を設定することができます。ClipBucketのレベニューシェアリングシステムでは、地域別のRPM(1,000インプレッションあたりの収益)を管理することもできます。
ClipBucketは、特定のOS(オペレーティング・システム)にインストールを制限しません。お好きなOSをお使いいただけますが、インストールの手順はOSによって異なります。
このチュートリアルでは、CentOS 7を使用したAlibaba Cloud Elastic Compute Service (ECS)インスタンスにClipBucketとNginxをインストールして設定します。
前提条件
- Alibaba Cloud Elastic Compute Service (ECS)を有効化し、支払い方法を確認する必要があります。新規ユーザーの場合は、Alibaba Cloudアカウントで無料アカウントを取得することができます。ECSインスタンスのセットアップ方法がわからない場合は、このチュートリアルまたはクイックスタートガイドを参照してください。ECSインスタンスは、少なくとも1GBのRAMと1つのCoreプロセッサを搭載している必要があります。
- Alibaba Cloudから登録されたドメイン名。すでにAlibaba Cloudまたは他のホストからドメインを登録している場合は、そのドメインネームサーバーレコードを更新することができます。
- セキュリティグループでTCP接続用の80番ポートと443番ポートを開いてください。
RPMFusion リポジトリのインストール
ClipBucketには、FFmpegやMP4Boxなどのバックエンドのマルチメディアソフトが必要です。これらのソフトウェアは、アップロードされた動画をバックエンドと互換性のあるように変換するために必要です。これらのソフトウェアは、EpelのリリースやCentOSの公式リポジトリにはありません。
RPMFusion Repositoryをインストールするには、以下のコマンドを実行します。
sudo yum localinstall --nogpgcheck [https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm](https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm?spm=a2c65.11461447.0.0.71bb26daJjXlHH&file=rpmfusion-free-release-7.noarch.rpm) -y
以下のコマンドでシステムを再起動します。
sudo yum update -y && sudo shutdown -r now
再起動後、再度Putty経由でECSにアクセスする必要があります。ECSへのログインには、新しく追加したユーザ名とsudo権限を使用することを忘れないでください。圧縮されたフォルダを解凍するために、unzipをインストールする必要があります。以下のコマンドを実行します。
sudo yum -y install unzip
FFmpegをインストールするには、以下のコマンドを実行します。
sudo yum install ffmpeg gpac -y
先に進むにはRubyをインストールする必要があります。Rubyをインストールするには、まず以下のコマンドでyamlライブラリをインストールします。
sudo yum install libyaml -y
最新版のRubyをインストールするには、以下のコマンドを実行します。
sudo rpm -ivh [https://github.com/feedforce/ruby-rpm/releases/download/2.5.0/ruby-2.5.0-1.el7.centos.x86_64.rpm](https://github.com/feedforce/ruby-rpm/releases/download/2.5.0/ruby-2.5.0-1.el7.centos.x86_64.rpm?spm=a2c65.11461447.0.0.71bb26daJjXlHH&file=ruby-2.5.0-1.el7.centos.x86_64.rpm)
最新版の RubyGems パッケージングプログラムをインストールします。
sudo yum install rubygems -y
そして、最新版のFLVツール2をインストールします。
sudo gem install flvtool2
最後に、MPlayer、Mediainfo、ImageMagickの最新版をインストールするには、以下のコマンドを実行します。
sudo yum install ImageMagick mediainfo mplayer -y
MariaDBサーバーのインストール
CentOSにはデフォルトでMariaDBが搭載されています。デフォルトのMariaDBのバージョンは5.5.xで、CentOSのデフォルトリポジトリで利用可能です。最新版のMariaDBサーバーをインストールするには、MariaDB RPMのリポジトリを追加する必要があります。最新バージョンの場合は、以下の手順に従ってください。
以下のsedコマンドを実行して/etc/yum.repos.d/ディレクトリにカスタムファイルMariaDB.repoを作成します。
sudo su -c "echo -e '[mariadb]nname = MariaDBnbaseurl = [http://yum.mariadb.org/10.2/centos7-amd64ngpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB](https://yum.mariadb.org/RPM-GPG-KEY-MariaDB?spm=a2c65.11461447.0.0.71bb26daJjXlHH)ngpgcheck=1' > /etc/yum.repos.d/MariaDB.repo”
以下のコマンドを実行して、MariaDBサーバーのインストールに進みます。
sudo yum install MariaDB-server -y
以下のコマンドを実行して、システムが再起動したときに自動的に起動するように、MariaDBサーバを有効にして起動します。
sudo systemctl start mariadb
sudo systemctl enable mariadb
MariaDB サーバーをセキュアにするには、コマンドを実行します。
sudo mysql_secure_installation
ルートパスワードはデフォルトでは空白になっていますので、Enterキーを押して進み、Yを選択してパスワードを選択します。一連の質問が表示されます。MariaDB サーバーのセキュリティが正常に確保されたことを確認するまで、すべてを受け入れます。
企業でこのソリューションを使用することを計画している場合、Alibaba Cloud Aspara DB for RDSはデータベースのためのより良いオプションです。Alibaba Cloud AsparaDB for RDSを使用すると、データベースの管理から解放され、ビジネスに集中することができます。
PHPと拡張機能のインストール
PHPを処理するためには、PHP-FPMデーモンのインストールと設定が必要です。新しいバージョンのPHP-FPMをインストールするには、REMIリポジトリが必要です。以下の手順で必要なものを実現してください。
REMIリポジトリをインストールするには、以下のコマンドを実行します。
sudo yum install [http://rpms.remirepo.net/enterprise/remi-release-7.rpm](http://rpms.remirepo.net/enterprise/remi-release-7.rpm?spm=a2c65.11461447.0.0.71bb26daJjXlHH&file=remi-release-7.rpm) -y
PHPの必要な拡張機能をインストールするには、以下のコマンドを実行します。
sudo yum install php70-php-cli php70-php-pecl-imagick php70-php-fpm php70-php-mysql php70-php-opcache -y
ディレクトリ /etc/opt/remi/php70/ に php-fpm.conf ファイルのバックアップを作成し、以下のコマンドを実行して php-fpm.conf.real にリネームします。
sudo mv /etc/opt/remi/php70/php-fpm.conf /etc/opt/remi/php70/php-fpm.conf.real
ディレクトリ/etc/opt/remi/php70/にあるphp.iniファイルのバックアップを作成し、以下のコマンドを実行してphp.ini.realにリネームします。
sudo mv /etc/opt/remi/php70/php.ini /etc/opt/remi/php70/php.ini.real
ディレクトリ /etc/opt/remi/php70/php-fpm.d/ にある www.conf ファイルのバックアップを作成し、以下のコマンドを実行して www.conf.real に名前を変更します。
sudo mv /etc/opt/remi/php70/php-fpm.d/www.conf /etc/opt/remi/php70/php-fpm.d/www.conf.real
以下のコマンドを実行して、php-fpm.confという名前のファイルを新規作成します。
sudo su -c "echo -e 'include=/etc/opt/remi/php70/php-fpm.d/*.confn[global]ndaemonize = yesnemergency_restart_threshold = 2nemergency_restart_interval = 1mnerror_log = /var/log/php-fpm/php-fpm-7.0-error.lognpid = /var/run/php-fpm-7.0.pidnprocess_control_timeout = 10。 0-error.lognpid = /var/run/php-fpm-7.0.pidnprocess_control_timeout = 10s' > /etc/opt/remi/php70/php-fpm.conf”
以下のコマンドを実行して www.conf という名前の新しいファイルを作成します。
sudo su -c "echo -e '[www]ngroup = apachenlisten = /var/run/php-fpm-7.0.socknlisten.backlog = 65536nlisten.owner = apachenlisten.group = apachenpm = staticnpm.max_children = 2npm.max_requests = 10240nuser = apache' > /etc/opt/remi/php70/php-fpm.d/www.conf”
以下のコマンドを実行してphp.iniという名前のファイルを新規作成します。
sudo su -c "echo -e '[PHP]nallow_url_fopen = Onnalways_populate_raw_post_data = -. 1ndisplay_errors = Offnerror_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICTnexpose_php = Offnlog_errors = Onnmax_execution_time = 7201nmemory_limit = 7201nmemory_limit 256Mnoutput_buffering = 4096npost_max_size = 256Mnregister_argc_argv = Offnrequest_order = "GP "nupload_max_filesize = 256Mnvariables_order = "GPCS "n[Date]ndate. timezone = America/New_Yorkn[Session]nsession.cache_limiter =nsession.gc_divisor = 1000nsession.hash_bits_per_character = 5nsession.save_handler = filesnsession. save_path = "/var/opt/remi/php70/lib/php/session/"nurl_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"'> /etc/opt/remi/php70/php.ini”
var/log/ディレクトリに移動します。
cd /var/log
以下のコマンドでphp-fpmという名前のフォルダ/ディレクトリを作成します。
sudo mkdir php-fpm
php-fpmサーバーを起動し、再起動後に自動的に起動するように有効化します。
sudo systemctl enable php70-php-fpm
sudo systemctl start php70-php-fpm
Nginxサーバーのインストール
最新版のNginx Web Serverをインストールするには、以下のコマンドを実行する必要があります。
sudo yum install nginx -y
nginx.confファイルのバックアップを作成し、名前を変更する必要があります。このファイルは /etc/nginx ディレクトリにあります。バックアップして nginx.conf.real に名前を変更するには、以下のコマンドを実行します。
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.real
新しいnginx.confファイルを作成します。そのためには、以下のコマンドをコピーして実行するだけです。
sudo su -c "echo -e 'error_log /var/log/nginx/error_log info;nevents { multi_accept on; worker_connections 1024; }nhttp {ntaccess_log none;ntcharset utf-8;ntclient_body_timeout 10s;ntclient_header_timeout 10s;ntclient_max_body_size 256M;ntdefault_type application/octet-stream;ntgzip_comp_level 6;ntgzip on;ntgzip_proxied any;ntgzip_types application/json application/javascript application/x-javascript application/xml application/xml+rss text/css text/javascript text/plain text/xml;ntgzip_vary on;ntinclude /etc/nginx/mime.types;ntinclude /etc/nginx/conf.d/headers.conf;ntinclude /etc/nginx/sites-enabled/*.conf;ntindex index.html index.php;ntkeepalive_timeout 8 8;ntreset_timedout_connection on;ntsend_timeout 2s;ntsendfile on;ntserver_tokens off;nttcp_nopush on;nttcp_nodelay on;ntupstream php-7.0 { server unix:/var/run/php-fpm-7.0.sock; }n}nuser apache apache;nworker_processes auto;' > /etc/nginx/nginx.conf"
etc/nginxディレクトリに、コマンドを実行してsite-enabledとsite-availableのディレクトリを作成します。
sudo mkdir /etc/nginx/{sites-available,sites-enabled}
XSS の悪用、クリックジャック、スニッフィングなどを防ぎ、git や .htaccess などの隠しファイルや機密ファイルへのアクセスを防ぐには、ディレクトリ /etc/nginx/conf.d に headers.conf, expires.conf, deny-log-not-found.conf というファイルをいくつか作成する必要があります。そのためには、以下のコマンドを実行します。
sudo su -c "echo -e 'location ~ /. { deny all; }nlocation = /(favicon.ico|robots.txt) { log_not_found off; }' > /etc/nginx/conf.d/deny-log-not-found.conf" && sudo su -c "echo -e 'location ~* ^.+. (atom|bmp|bz2|css|doc|eot|exe|gif|gz|ico|jpeg|jpg|js|mid|midi|mp4|ogg|ogg|ogv|otf|pdf|png|ppt|rss|rft|svg|svgz|tar|tgz|ttf|wav|woff|woff2|xls|zip)$ { expires max; log_not_found off; }' > /etc/nginx/conf. d/expires.conf" && sudo su -c "echo -e 'add_header X-Content-Type-Options "nosniff";nadd_header X-Frame-Options "SAMEORIGIN";nadd_header X-Robots-Tag "noarchive,noodp,noydir";nadd_header X-Xss-Protection "1; mode=block"; '> /etc/nginx/conf.d/headers.conf”
imarslan.com.conf ファイルを作成します。このファイルの作成時と同様に、以下のコマンドで imarslan.com をあなたのドメイン名に置き換えてください。
jsudo su -c "echo -e 'server {\n\tinclude /etc/nginx/conf.d/deny-log-not-found.conf;\n\tinclude /etc/nginx/conf.d/expires.conf;\n\tindex index.php;\n\tlocation / {\n\t\ttry_files \$uri \$uri/ /index.php;\n\t\trewrite ^/(.*)v([0-9]+) /watchvideo.php?v=\$2&\$query_string;\n\t\trewrite ^/([a-zA-Z0-9-]+)/?\$ /view_channel.php?uid=\$1&seo_diret=yes;\n\t\t}\n\tlocation ~ \.php\$ { fastcgi_pass php-7.0; include /etc/nginx/fastcgi.conf; }\n\tlocation /categories {\n\t\trewrite ^/categories/?\$ /categories.php;\n\t\t}\n\tlocation /channel {\n\t\trewrite ^/channel/(.*) /view_channel.php?user=\$1;\n\t\t}\n\tlocation /channels {\n\t\trewrite ^/channels/(.)/(.)/(.)/(.)/(.*) /channels.php?cat=\$1&sort=\$3&time=\$4&page=\$5&seo_cat_name=\$2;\n\t\trewrite ^/channels/([0-9]+) /channels.php?page=\$1;\n\t\trewrite ^/channels/?\$ /channels.php;\n\t\t}\n\tlocation /collection {\n\t\trewrite ^/collection/(.)/(.)/(.*) /view_collection.php?cid=\$1&type=\$2&\$query_string;\n\t\t}\n\tlocation /collections {\n\t\trewrite ^/collections/(.)/(.)/(.)/(.)/(.*) /collections.php?cat=\$1&sort=\$3&time=\$4&page=\$5&seo_cat_name=\$2;\n\t\trewrite ^/collections/([0-9]+) /collections.php?page=\$1;\n\t\trewrite ^/collections/?\$ /collections.php;\n\t\t}\n\tlocation /contact {\n\t\trewrite ^/contact/?\$ /contact.php;\n\t\t}\n\tlocation /create_group {\n\t\trewrite ^/create_group /create_group.php;\n\t\t}\n\tlocation /group {\n\t\trewrite ^/group/([a-zA-Z0-9].+) /view_group.php?url=\$1&\$query_string;\n\t\t}\n\tlocation /groups {\n\t\trewrite ^/groups/(.)/(.)/(.)/(.)/(.*) /groups.php?cat=\$1&sort=\$3&time=\$4&page=\$5&seo_cat_name=\$2; rewrite ^/groups/([0-9]+) /groups.php?page=\$1;\n\t\trewrite ^/groups/?\$ /groups.php;\n\t\t}\n\tlocation /item {\n\t\trewrite ^/item/(.)/(.)/(.)/(.) /view_item.php?item=\$3&type=\$1&collection=\$2;\n\t\t}\n\tlocation /members {\n\t\trewrite ^/members/?\$ /channels.php;\n\t\t}\n\tlocation /my_account {\n\t\trewrite ^/my_account /myaccount.php;\n\t\t}\n\tlocation /page {\n\t\trewrite ^/page/([0-9]+)/(.*) /view_page.php?pid=\$1;\n\t\t}\n\tlocation /photo_upload {\n\t\trewrite ^/photo_upload/(.*) /photo_upload.php?collection=\$1;\n\t\trewrite ^/photo_upload/?\$ /photo_upload.php;\n\t\t}\n\tlocation /photos {\n\t\trewrite ^/photos/(.)/(.)/(.)/(.)/(.*) /photos.php?cat=\$1&sort=\$3&time=\$4&page=\$5&seo_cat_name=\$2;\n\t\trewrite ^/photos/([0-9]+) /photos.php?page=\$1;\n\t\trewrite ^/photos/?\$ /photos.php;\n\t\t}\n\tlocation = /rss {\n\t\trewrite ^(.*)\$ /rss.php;\n\t\t}\n\tlocation /rss {\n\t\trewrite ^/rss/([a-zA-Z0-9].+)\$ /rss.php?mode=\$1&\$query_string;\n\t\t}\n\tlocation /search {\n\t\trewrite ^/search/result/?\$ /search_result.php;\n\t\t}\n\tlocation /signup {\n\t\trewrite ^/signup/?\$ /signup.php;\n\t\t}\n\tlocation = /sitemap.xml {\n\t\trewrite ^(.*)\$ /sitemap.php;\n\t\t}\n\tlocation /upload {\n\t\trewrite ^/upload/?\$ /upload.php;\n\t\t}\n\tlocation /user {\n\t\trewrite ^/user/(.*) /view_channel.php?user=\$1;\n\t\t}\n\tlocation /users {\n\t\trewrite ^/users/?\$ /channels.php;\n\t\t}\n\tlocation /video {\n\t\trewrite ^/video/(.)/(.) /watch_video.php?v=\$1&\$query_string; rewrite ^/video/([0-9]+)(.*) /watchvideo.php?v=\$1&\$query_string;\n\t\t}\n\tlocation /videos {\n\t\trewrite ^/videos/(.)/(.)/(.)/(.)/(.*) /videos.php?cat=\$1&sort=\$3&time=\$4&page=\$5&seo_cat_name=\$2;\n\t\trewrite ^/videos/([0-9]+) /videos.php?page=\$1;\n\t\trewrite ^/videos/?\$ /videos.php?\$query_string;\n\t\t}\n\tlocation /view_topic {\n\t\trewrite ^/view_topic/([a-zA-Z0-9].+)tid([0-9]+) /view_topic.php?tid=\$2&\$query_string;\n\t\t}\n\tserver_name imarslan.com www.imarslan.com;\n\troot /var/www/html;\n}' > /etc/nginx/sites-available/imarslan.com.conf"
imarslan.com.confファイルのシンボリックリンクを/etc/nginx/sites-available/から/etc/nginx/sites-enabled/に作成する必要があります。そのためには、以下のコマンドを実行してください。imarslan.comをドメイン名に変更することを忘れないでください。
sudo su -c "cd /etc/nginx/sites-enabled && ln -s ../sites-available/imarslan.com.conf ."
システム再起動時に自動的に起動するように、Nginxサーバーを有効化して起動します。
sudo systemctl enable nginx && sudo systemctl start nginx
ClipBucketをインストールする
ClipBucketをインストールするには、cd /tmp/ディレクトリに移動します。
cd /tmp
コマンドを実行してClipBucketのコピーを取得します。
wget [http://downloads.sourceforge.net/project/clipbucket/ClipBucket%20v2/clipbucket-2.8.v3354-stable.zip](http://downloads.sourceforge.net/project/clipbucket/ClipBucket%20v2/clipbucket-2.8.v3354-stable.zip?spm=a2c65.11461447.0.0.71bb26daJjXlHH&file=clipbucket-2.8.v3354-stable.zip)
ClipBucketを解凍したファイルを置くディレクトリを作成します。
sudo mkdir /var/www/clipbucket
以下のコマンドを実行して、必要なファイルを/var/www/clipbucketにコピーします。
sudo cp -r /tmp/clipbucket-2.8.v3354-stable/upload/* /var/www/clipbucket/
sudo cp /tmp/clipbucket-2.8.v3354-stable/upload/.htaccess /var/www/clipbucket/.htaccess
必要な権限を与えるには、以下のコマンドを実行します。
sudo chmod -R 777 /var/www/clipbucket/includes/
sudo chmod -R 777 /var/www/clipbucket/files/
sudo chmod -R 777 /var/www/clipbucket/images/
sudo chmod -R 777 /var/www/clipbucket/cache/
sudo chmod -R 777 /var/www/clipbucket/cb_install/
sudo chown apache:apache -R /var/www/clipbucket/
データベースの作成
以下のコマンドを実行して、MariaDBサーバーにアクセスします。するとパスワードの入力を求められるので、選択したパスワードを入力してEnterを押します。
mysql -u root -p
以下のクエリを実行してテーブルを作成し、データベースにユーザーを割り当てます。
CREATE DATABASE cbdb;
CREATE USER 'cbdb'@'localhost' IDENTIFIED BY 'Password';
GRANT ALL PRIVILEGES ON cbdb.* TO 'cbdb'@'localhost';
FLUSH PRIVILEGES;
EXIT;
これでデータベースにユーザーを割り当てることができました。cbdbを任意のデータベース名とユーザー名に変更し、パスワードの代わりに任意のパスワードを設定することができます。
ClipBucketのインストールに成功しました。これで、アリババクラウドのIPアドレスまたはドメイン名からアクセスできるようになりました。
ClipBucketの設定
Alibaba CloudのIPアドレスまたはドメイン名からClipBucketにアクセスします。
Ok, I Agree, Now let me Continue!をクリックし、Continue to Next Stepをクリックします。
パーミッションの設定では、パーミッションの設定はすでに行っているので、再度「次のステップへ進む」をクリックします。
データベース設定ステップでは、設定したデータベースの認証情報を追加します。
[接続を確認]をクリックすると、接続が確認され、ClipBucketの管理者資格情報の設定にリダイレクトされます。設定を追加したら、[保存して続行]をクリックします。
ClipBucketのタイトルと説明文を設定し、[保存して続行]をクリックします。
おめでとうございます。これでClipBucketの設定は完了です。ここから管理画面にアクセスし、自分のドメインからWebサイトにアクセスすることができます。管理画面へのリンクは、http://www.yourdomain.com/admin_area/login.php のようになっています。「yourdomain」を実際のドメイン名に置き換えてください。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ