ENTEREAL

レンタルサーバにownCloudを入れてみた件

はじめてのownCloud

ownCloud ownCloudは、Dropboxに代表されるオンラインストレージを実現するためのオープンソースソフトウェアです。
Dropboxの基本機能は、全てがこれで実現可能です。

さくらのレンタルサーバの容量が増強され、サーバ容量余裕が出たため、まずは実験目的にインストールしてみる事にしました。


注意事項

実際にインストールする前に検討ならないことが幾つかあります。しっかり検討してから使用してください。

セキュリティ問題
これは、どのオンラインストレージサービスでも同じですが、各種データをクローズされたローカル環境から、インターネットに接続されたオンライン環境へアップロードする事になります。当然暗号化やパスワード等の対策はあるものの、その全てを行ったとしても情報漏えいのリスクをゼロにすることはできません。
格納予定データの種類などを加味し、これによる効率化とリスクのバランスを十分考慮してください。
要件/環境問題
最低でも数GBのバードディスク容量と、PHPが動くこと、MySQL(*1)データベースが必要になります。
当然PHPには、必要なモジュールが導入され、各種データベースを扱える事が前提です。

*1 PostgresSQLやSQLite、MariaDBでも可

バージョン問題
ownCloudの最新バージョン6.0.3をインストールするには、PHPはバージョン5.3.2以上(できれば5.4以上を推奨)、Sqliteはバージョン3.0以上、PostgreSQLは9.0以上が必要になります。
しっかりと管理されたサーバであれば大丈夫ですが、アップデートを放置したサーバでは動きませんし、セキュリティ的にも問題がありますので、事前にしっかりと調査を行う必要があります。

* さくらインターネットのサーバでは、PHPが4.4、5、5.2、5.3、5.4のバージョンの中から任意に設定を変更して使う事が出来ます。

トラフィック問題
専用のサーバではそれほど問題になりませんが、特にWEBサーバと兼用する場合などは、トラフィック確認も重要になります。
今となっては少なくなってきてますが、トラフィック量に応じた従量課金のサーバの場合、注意が必要です。
バックアップ問題
最近は、電源やストレージは多重化されたWEBサーバが多くなっていますので、ローカル環境よりはハードウェアによる物理故障へのリスクは少なくなるかもしれませんが、定期バックアップ任意の時点へのリストアなどデータ保全機能は、ビジネス向けの高額なプランにのみ付与されている事が多いです。
事前にバックアップ対策なども十分に検討してください。

インストール環境

さくらインターネットのレンタルサーバで、容量100GBが使えるスタンダードプランのサーバにインストールしてみます。
ハードディスク容量、PHP/DB等のソフトウェア環境、トラフィックなどの要件は、一応全てを満たしています。

サーバのOSやCPU、RAM等は下記ですが、たまたま現在は下記になっているだけで保証されているものではありません。また、共有サーバですので、全てのリソースを占有できるわけではありません。

同サーバ内の他ユーザに迷惑が掛からないような使い方をしてください。

CPU Intel Xeon E312xx OS FreeBSD 9.1
RAM 18GB Apache Ver. 2.2.25
Disk容量 100GB PHP Ver. 5.4.29
バックボーン回線 各拠点間 最低10Gbps、総帯域301Gbps MySQL Ver. 5.5

事前準備

サーバのどこにインストールして、どこにデータを保管するかなど、セキュリティ面でも非常に重要なポイントになりますので、出来れば事前に検討/設計し、資料として残すことをお勧めします。

設定パラメータ群

A. 本体格納ディレクトリ名

説明: ownCloud本体プログラムを格納するディレクトリ名です。目的や使用想定に合わせて決めます。

条件: OSの命名規則に反する記号や特殊文字は使えません。

本例: ディレクトリ名をowncloud-scriptsとします。デフォルトのowncloudのままでも問題ありません。

B. 本体格納位置

説明: ownCloud本体プログラムの格納位置です。目的や使用想定に合わせて決めます。

条件: インターネット経由でhttpアクセスが可能な位置である必要があります。

本例: さくらサーバの場合「/home/サーバアカウント名/www/」配下がインターネットに公開されますので、その配下に「A. 本体格納ディレクトリ」を作成し、/home/サーバアカウント名/www/owncloud-scriptsにインストールします。

C. データ格納ディレクトリ名

説明: ownCloudにアップロードされた実データを格納するディレクトリ名です。目的や使用想定に合わせて決めます。

条件: OSの命名規則に反する記号や特殊文字は使えません。

本例: ディレクトリ名をowncloud-dataとします。デフォルトのowncloudのままでも問題ありません。

D. データ格納位置

説明: ownCloudにアップロードされた実データの格納位置です。

条件: 必須ではありませんが、セキュリティの観点から直接インターネットからアクセス出来ない場所にすることを強くお勧めします。

本例: さくらサーバの場合「/home/サーバアカウント名/www/」配下がインターネットに公開されますので、それより上位の/home/サーバアカウント名/の配下に「C. データ格納ディレクトリ」を作成し、/home/サーバアカウント名/owncloud-dataにデータを保存します。

E. データベース ホスト名

説明: ownCloudが格納データを管理するために使用するデータベースを格納しているホストサーバ名です。

条件: 各サーバ環境に合わせて、ホストサーバ名を入力します。。

本例: さくらサーバの場合、「サーバコントロールパネル」-「データベースの設定」でデータベースの作成や、ホストサーバ名の確認が可能です。今回はmysql999.db.sakura.ne.jpとします。

F. データベース名

説明: ownCloudが格納データを管理するために使用するデータベースの名前です。

条件: 任意の名前でOKですが、命名規則や、レンタルサーバ側の規則に従って決めます。

本例: さくらサーバの場合、接頭文字列「サーバアカウント名_」が固定なので、サーバアカウント名_owncloud-dbとします。

G. データベース ユーザ名

説明: ownCloudが格納データを管理するために使用するデータベースにアクセスするためのデータベースユーザ名です。

条件: 任意の名前でOKですが、命名規則や、レンタルサーバ側の規則に従って決めます。

本例: さくらサーバの場合、サーバアカウント名で固定です。

H. データベース 接続パスワード

説明: ownCloudが格納データを管理するために使用するデータベースにアクセスするためのパスワードです。

条件: 任意の文字列でOKですが、命名規則や、レンタルサーバ側の規則に従って決めます。

本例: さくらサーバの場合、半角英字、数字、記号(-_)の組み合わせで、8文字以上32文字以内という制限です。

I. ownClowd 管理アカウント名

説明: ownCloudにログインし、各種管理作業を行うためのユーザ名です。

条件: 任意の名前でOKですが、命名規則に従って決めます。

本例: データベース ユーザ名と同一のサーバアカウント名とします。

J. ownClowd 管理パスワード

説明: ownCloudにログインし、各種管理作業を行うためのパスワードです。

条件: 任意の文字列でOKですが、命名規則に従って決めます。

本例: 


インストール方法

ownCloudには、ソースダウンロード&インストールと、Web Installerの2種類が用意されています。 特にカスタマイズなどの必要が無ければ、Web Installerを使うのが簡単かと思われます。

1. Web Installerをダウンロードする

下記ページから「Web Installer」をダウンロードする。
これは、単なるPHPのスクリプトで、自動でownCloudのサーバから必要モジュールのダウンロードをしたり、各種設定を対話形式で進めながらインストールしてくれるものです。
https://download.owncloud.com/download/community/setup-owncloud.php

2. Web Installerスクリプトを対象サーバにアップロード

PHPの対話形式インストールを実現するために、ダウンロードしたPHPスクリプトをインストール対象のサーバにアップロードします。WEBブラウザから実行できるようにスクリプトのパーミッション(ファイル権限)を604 (rw----r--)などに変更します。

本例では、上記「A/B」で決定した通り、/home/アカウント名/www/setup-owncloud.phpにアップロードし、/home/アカウント名/www/owncloud-scripts/配下に本体がインストールされるようにします。

3. MySQLデータベースの作成

格納する各種データを管理するためにownCloud用のDBをMySQLに作成します。どんな方法でDBを作成しても構いません。

本例では、さくらインターネットのサーバにデフォルトで用意された、「サーバコントロールパネル」にログインし、「データベースの設定」-「データベースの新規作成」からGUIで簡単にDBを作成できます。

データベース
バージョン
MySQL 5.5
データベース名 上記「F」で決定した
サーバアカウント名_owncloud-db
データベース
ユーザ名
上記「G」で決定した
サーバアカウント名
接続用パスワード 上記「H」で決定した
************
データベース
文字コード
日本も文字化けせずに扱える
UTF-8
サーバコントロールパネル

4. Web Installerスクリプトを実行

WEBブラウザで、対象サーバのWeb InstallerスクリプトのURL(http://www.サーバドメイン/setup-owncloud.php)にアクセスすると、スクリプトが実行されます。

4-1. インストーラ開始画面
4-1. インストーラ開始画面

但しURLにアクセスすると、このページが表示されます。「Next」ボタンを押します。

4-2. PHPが古い場合の警告画面
4-2. PHPが古い場合の警告画面

PHPのバージョンが5.3.2以下だとこの画面が表示されます。推奨の5.4以上にアップデート後に、ブラウザを「F5」ボタンで更新すると次に進めます。

4-3. インストール ディレクトリ指定
4-3. インストール ディレクトリ指定

「A. 本体格納ディレクトリ名」を入力し、「Next」ボタンを押します。

4-4. インストール完了画面
4-4. インストール完了画面

必要モジュール約40MBのダウンロードが始まり、1-2分で終了し、この画面になります。

5. .htaccessの編集 (1回目)

ownCloudのプログラムを実行できるように、インストールディレクトリ内の.htaccessファイル(/home/サーバアカウント名/www/owncloud-scripts/.htaccess)を以下のように編集します。

ローカル環境で編集する場合

まず、対象の.htaccessファイルをFTPでローカルにダウンロードし、テキストエディタで開きます。次に、下記の編集個所を修正し、保存します。最後に、元の場所に上書きでアップロードしてください。

サーバ上で編集する場合

サーバ上のエディタソフトを使って、下記の編集個所を修正し、上書き保存してください。

編集個所

対象ファイルの下から4行目の行頭に#を追記し、該当行をコメント化します。

編集前



SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION



ErrorDocument 403 /core/templates/403.php
ErrorDocument 404 /core/templates/404.php

php_value upload_max_filesize 513M
php_value post_max_size 513M
php_value memory_limit 512M
php_value mbstring.func_overload 0

SetEnv htaccessWorking true



RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^.well-known/host-meta.json /public.php?service=host-meta-json [QSA,L]
RewriteRule ^.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^.well-known/caldav /remote.php/caldav/ [R]
RewriteRule ^apps/calendar/caldav.php remote.php/caldav/ [QSA,L]
RewriteRule ^apps/contacts/carddav.php remote.php/carddav/ [QSA,L]
RewriteRule ^apps/([^/]*)/(.*\.(php))$ index.php?app=$1&getfile=$2 [QSA,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]


AddType image/svg+xml svg svgz
AddEncoding gzip svgz


DirectoryIndex index.php index.html

AddDefaultCharset utf-8
Options -Indexes				// ここの行をコメント化

ModPagespeed Off

編集後



SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION



ErrorDocument 403 /core/templates/403.php
ErrorDocument 404 /core/templates/404.php

php_value upload_max_filesize 513M
php_value post_max_size 513M
php_value memory_limit 512M
php_value mbstring.func_overload 0

SetEnv htaccessWorking true



RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^.well-known/host-meta.json /public.php?service=host-meta-json [QSA,L]
RewriteRule ^.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^.well-known/caldav /remote.php/caldav/ [R]
RewriteRule ^apps/calendar/caldav.php remote.php/caldav/ [QSA,L]
RewriteRule ^apps/contacts/carddav.php remote.php/carddav/ [QSA,L]
RewriteRule ^apps/([^/]*)/(.*\.(php))$ index.php?app=$1&getfile=$2 [QSA,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]


AddType image/svg+xml svg svgz
AddEncoding gzip svgz


DirectoryIndex index.php index.html

AddDefaultCharset utf-8
# Options -Indexes				// ここの行をコメント化

ModPagespeed Off

6. データ保存ディレクトリの作成

ネット上の手順には載っていないですが、Web Installerスクリプトでの自動作成時に失敗する事がありますので、事前に手動で作成しておくことをお勧めします。

作成方法は、サーバ上でコマンド打っても、ローカルから空のディレクトリをアップしても、FTPクライアントソフトで作成しても問題ありません。とにかく、「D. データ格納位置」/home/サーバアカウント名/owncloud-dataに「C. データ格納ディレクトリ」が出来ていれば問題ありません。

7. ownClowdの初期設定

入力情報
# Create an admin account
Username I. ownClowd 管理アカウント名を入力
Password J. ownClowd 管理パスワードを入力
# Data folder
  D. データ格納位置を入力
# Configure the database
DB選択ボタン MySQLを選択
Database user G. データベース ユーザ名を入力
Database password H. データベース 接続パスワードを入力
Database name F. データベース名を入力
Database host E. データベース ホスト名を入力。

* サーバのコントロールパネル等で確認

7-1. 設定情報の入力
7-1. 設定情報の入力

5のファイル編集後に、4-3の画面の「Next」ボタンを押すと、上記設定画面が表示されます。必要な個所に必要な情報を入力します。
間違いがないか最終確認したら、「Finish setup」ボタンを押します。

7-2. Internal Server Error画面
7-2. Internal Server Error画面

エラーコード500:Internal Server Errorが出ても問題ありません。7の編集後に、「F5」を押してページを更新して下さい。

8. .htaccessの編集 (2回目)

ownCloudのプログラムを実行できるように、インストールディレクトリ内の.htaccessファイル(/home/サーバアカウント名/www/owncloud-scripts/.htaccess)を以下のように編集します。

ローカル環境で編集する場合

まず、対象の.htaccessファイルをFTPでローカルにダウンロードし、テキストエディタで開きます。次に、下記の編集個所を修正し、保存します。最後に、元の場所に上書きでアップロードしてください。

* 5で編集後、プログラムがファイルを自動更新していますので、再度最新のファイルをダウンロードし、編集する必要があります。

サーバ上で編集する場合

サーバ上のエディタソフトを使って、下記の編集個所を修正し、上書き保存してください。

編集個所

対象ファイルの下から4行目の行頭に#を追記し、該当行をコメント化します。

編集前



SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION



ErrorDocument 403 /owncloud/core/templates/403.php
ErrorDocument 404 /owncloud/core/templates/404.php

php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value mbstring.func_overload 0

SetEnv htaccessWorking true



RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^.well-known/caldav /remote.php/caldav/ [R]
RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]


AddType image/svg+xml svg svgz
AddEncoding gzip svgz


DirectoryIndex index.php index.html

AddDefaultCharset utf-8
Options -Indexes				// ここの行をコメント化

ModPagespeed Off

編集後



SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION



ErrorDocument 403 /owncloud/core/templates/403.php
ErrorDocument 404 /owncloud/core/templates/404.php

php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value mbstring.func_overload 0

SetEnv htaccessWorking true



RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^.well-known/caldav /remote.php/caldav/ [R]
RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]


AddType image/svg+xml svg svgz
AddEncoding gzip svgz


DirectoryIndex index.php index.html

AddDefaultCharset utf-8
# Options -Indexes				// ここの行をコメント化

ModPagespeed Off

9. 各種エラー対策

* ここはイントール先のサーバ環境に依存するため、必須の作業工程ではありませんし、すべてのエラーが解決できるわけではありません。

9-1. 「No input file specified.」エラー対策1
9-1. 「No input file specified.」エラー対策

さくらインターネットのレンタルサーバ環境だと、「8. .htaccessの編集 (2回目)」の作業のあと、No input file specified.エラーが出ることがあります。このエラー自体は、スクリプト内で扱うファイルのパスの設定が出来ていない時に出るものです。

ネット上の情報だと、/home/サーバアカウント名/www/owncloud-scripts/.htaccess

// mod_gzip_on Offを追記
mod_gzip_on Off

// cgi.fix_pathinfo=1を追記
cgi.fix_pathinfo=1

などの情報がありますが、エラーが出たり出なかったり、対策で回避出来たり出来なかったりと少し不安定な感じがします。

更なる調査によって、原因の特定と、対策法の確立が必要かと思われます。

9-2. 「No input file specified.」エラー対策2
9-1. 「No input file specified.」エラー対策

9-1でエラーが回避できない場合、php.iniというファイルを新規で作成し、下記1行を書き込んで、

cgi.fix_pathinfo=1

/home/サーバアカウント名/wwwの下においてください。

※この作業は、さくらサーバのコントロールパネルの「PHP設定の編集」から1行書き加えるのと同じ作業です。

9-3. 文字化け/レイアウトが崩れる問題の対策
9-2. 文字化け/レイアウトが崩れる問題の対策

全てのインストール作業が完了し、ownCloudのホーム画面が表示されているようなのですが、画面背景が白かったり、レイアウトが崩れてしまう場合があります。これはおそらく必要なcssファイルなどを読み込めない事が原因で起こっています。

ローカル環境で新規に「php.ini」という名前のファイルを作成し、そのファイルの中に以下の3行を書き込み、文字コード「UTF-8」で保存します。

upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 512M

ownCloud本体プログラムが格納されているディレクトリ(/home/サーバアカウント名/www/owncloud-scripts/)に作成した、php.iniをアップロードしてください。

9-4. 特定の画像だけが表示されない問題の対策
9-3. 特定の画像だけが表示されない問題の対策

全てのインストール作業が完了し、ownCloudのホーム画面が表示されているようなのですが、左側のメニューのアイコン画像のうち数枚だけが表示されない場合があります。これはインストールしたサーバのWebアプリケーションファイアウォール(WAF:Web Application Firewall)が原因で起こっています。

さくらインターネットの場合、スタンダード以上のプランに標準でついている機能で、SQLインジェクションや各種シグネチャ検査などを自動で行ってくれますが、ownCloudに限らず、/coreというフォルダ配下のファイルは「意図しないファイルの公開の可能性」として、WEBに表示する事が出来ません。

さくらインターネットのコントロールパネル上では、各ドメインごとにこのWAFを「ON(利用する)」/「OFF(利用しない)」することしか出来ないため、ownCloudをデフォルトのまま(coreディレクトリ名を変更しないまま)使用するには、WAFを利用しないに設定を変更しなければなりません。

10. インストール完了

これで、サーバ側のインストールと設定作業は完了です。

ファイルをアップロードするだけなら、WEBブラウザでも可能です。Dropboxのように常に最新状態で同期したい場合、それぞれのクライアントに常駐ソフトをインストールする必要があります。それぞれ下記ページからダウンロードが出来ます。