ownCloudは、Dropboxに代表されるオンラインストレージを実現するためのオープンソースソフトウェアです。
Dropboxの基本機能は、全てがこれで実現可能です。
さくらのレンタルサーバの容量が増強され、サーバ容量余裕が出たため、まずは実験目的にインストールしてみる事にしました。
実際にインストールする前に検討ならないことが幾つかあります。しっかり検討してから使用してください。
*1 PostgresSQLやSQLite、MariaDBでも可
* さくらインターネットのサーバでは、PHPが4.4、5、5.2、5.3、5.4のバージョンの中から任意に設定を変更して使う事が出来ます。
さくらインターネットのレンタルサーバで、容量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の命名規則に反する記号や特殊文字は使えません。 本例: ディレクトリ名を |
---|---|
B. 本体格納位置 |
説明: ownCloud本体プログラムの格納位置です。目的や使用想定に合わせて決めます。 条件: インターネット経由でhttpアクセスが可能な位置である必要があります。 本例: さくらサーバの場合「/home/サーバアカウント名/www/」配下がインターネットに公開されますので、その配下に「A. 本体格納ディレクトリ」を作成し、 |
C. データ格納ディレクトリ名 |
説明: ownCloudにアップロードされた実データを格納するディレクトリ名です。目的や使用想定に合わせて決めます。 条件: OSの命名規則に反する記号や特殊文字は使えません。 本例: ディレクトリ名を |
D. データ格納位置 |
説明: ownCloudにアップロードされた実データの格納位置です。 条件: 必須ではありませんが、セキュリティの観点から直接インターネットからアクセス出来ない場所にすることを強くお勧めします。 本例: さくらサーバの場合「/home/サーバアカウント名/www/」配下がインターネットに公開されますので、それより上位の |
E. データベース ホスト名 |
説明: ownCloudが格納データを管理するために使用するデータベースを格納しているホストサーバ名です。 条件: 各サーバ環境に合わせて、ホストサーバ名を入力します。。 本例: さくらサーバの場合、「サーバコントロールパネル」-「データベースの設定」でデータベースの作成や、ホストサーバ名の確認が可能です。今回は |
F. データベース名 |
説明: ownCloudが格納データを管理するために使用するデータベースの名前です。 条件: 任意の名前でOKですが、命名規則や、レンタルサーバ側の規則に従って決めます。 本例: さくらサーバの場合、接頭文字列「サーバアカウント名_」が固定なので、 |
G. データベース ユーザ名 |
説明: ownCloudが格納データを管理するために使用するデータベースにアクセスするためのデータベースユーザ名です。 条件: 任意の名前でOKですが、命名規則や、レンタルサーバ側の規則に従って決めます。 本例: さくらサーバの場合、 |
H. データベース 接続パスワード |
説明: ownCloudが格納データを管理するために使用するデータベースにアクセスするためのパスワードです。 条件: 任意の文字列でOKですが、命名規則や、レンタルサーバ側の規則に従って決めます。 本例: さくらサーバの場合、半角英字、数字、記号(-_)の組み合わせで、8文字以上32文字以内という制限です。 |
I. ownClowd 管理アカウント名 |
説明: ownCloudにログインし、各種管理作業を行うためのユーザ名です。 条件: 任意の名前でOKですが、命名規則に従って決めます。 本例: データベース ユーザ名と同一の |
J. ownClowd 管理パスワード |
説明: ownCloudにログインし、各種管理作業を行うためのパスワードです。 条件: 任意の文字列でOKですが、命名規則に従って決めます。 本例: |
ownCloudには、ソースダウンロード&インストールと、Web Installerの2種類が用意されています。 特にカスタマイズなどの必要が無ければ、Web Installerを使うのが簡単かと思われます。
下記ページから「Web Installer」をダウンロードする。
これは、単なるPHPのスクリプトで、自動でownCloudのサーバから必要モジュールのダウンロードをしたり、各種設定を対話形式で進めながらインストールしてくれるものです。
https://download.owncloud.com/download/community/setup-owncloud.php
PHPの対話形式インストールを実現するために、ダウンロードしたPHPスクリプトをインストール対象のサーバにアップロードします。WEBブラウザから実行できるようにスクリプトのパーミッション(ファイル権限)を604 (rw----r--)
などに変更します。
本例では、上記「A/B」で決定した通り、/home/アカウント名/www/setup-owncloud.php
にアップロードし、/home/アカウント名/www/owncloud-scripts/
配下に本体がインストールされるようにします。
格納する各種データを管理するためにownCloud用のDBをMySQLに作成します。どんな方法でDBを作成しても構いません。
本例では、さくらインターネットのサーバにデフォルトで用意された、「サーバコントロールパネル」にログインし、「データベースの設定」-「データベースの新規作成」からGUIで簡単にDBを作成できます。
データベース バージョン |
MySQL 5.5 |
---|---|
データベース名 | 上記「F」で決定した 「サーバアカウント名_owncloud-db」 |
データベース ユーザ名 |
上記「G」で決定した 「サーバアカウント名」 |
接続用パスワード | 上記「H」で決定した 「************」 |
データベース 文字コード |
日本も文字化けせずに扱える 「UTF-8」 |
WEBブラウザで、対象サーバのWeb InstallerスクリプトのURL(http://www.サーバドメイン/setup-owncloud.php
)にアクセスすると、スクリプトが実行されます。
但しURLにアクセスすると、このページが表示されます。「Next」ボタンを押します。
PHPのバージョンが5.3.2以下だとこの画面が表示されます。推奨の5.4以上にアップデート後に、ブラウザを「F5」ボタンで更新すると次に進めます。
「A. 本体格納ディレクトリ名」を入力し、「Next」ボタンを押します。
必要モジュール約40MBのダウンロードが始まり、1-2分で終了し、この画面になります。
ownCloudのプログラムを実行できるように、インストールディレクトリ内の.htaccessファイル(/home/サーバアカウント名/www/owncloud-scripts/.htaccess
)を以下のように編集します。
まず、対象の.htaccess
ファイルをFTPでローカルにダウンロードし、テキストエディタで開きます。次に、下記の編集個所を修正し、保存します。最後に、元の場所に上書きでアップロードしてください。
サーバ上のエディタソフトを使って、下記の編集個所を修正し、上書き保存してください。
対象ファイルの下から4行目の行頭に#
を追記し、該当行をコメント化します。
ErrorDocument 403 /core/templates/403.php ErrorDocument 404 /core/templates/404.php SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION 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
ErrorDocument 403 /core/templates/403.php ErrorDocument 404 /core/templates/404.php SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION 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
ネット上の手順には載っていないですが、Web Installerスクリプトでの自動作成時に失敗する事がありますので、事前に手動で作成しておくことをお勧めします。
作成方法は、サーバ上でコマンド打っても、ローカルから空のディレクトリをアップしても、FTPクライアントソフトで作成しても問題ありません。とにかく、「D. データ格納位置」/home/サーバアカウント名/owncloud-data
に「C. データ格納ディレクトリ」が出来ていれば問題ありません。
Username |
I. ownClowd 管理アカウント名 を入力
|
---|---|
Password |
J. ownClowd 管理パスワード を入力
|
D. データ格納位置 を入力
|
DB選択ボタン |
MySQL を選択
|
---|---|
Database user |
G. データベース ユーザ名 を入力
|
Database password |
H. データベース 接続パスワード を入力
|
Database name |
F. データベース名 を入力
|
Database host |
E. データベース ホスト名 を入力。
* サーバのコントロールパネル等で確認 |
5のファイル編集後に、4-3の画面の「Next」ボタンを押すと、上記設定画面が表示されます。必要な個所に必要な情報を入力します。
間違いがないか最終確認したら、「Finish setup」ボタンを押します。
エラーコード500:Internal Server Errorが出ても問題ありません。7の編集後に、「F5」を押してページを更新して下さい。
ownCloudのプログラムを実行できるように、インストールディレクトリ内の.htaccessファイル(/home/サーバアカウント名/www/owncloud-scripts/.htaccess
)を以下のように編集します。
まず、対象の.htaccess
ファイルをFTPでローカルにダウンロードし、テキストエディタで開きます。次に、下記の編集個所を修正し、保存します。最後に、元の場所に上書きでアップロードしてください。
* 5で編集後、プログラムがファイルを自動更新していますので、再度最新のファイルをダウンロードし、編集する必要があります。
サーバ上のエディタソフトを使って、下記の編集個所を修正し、上書き保存してください。
対象ファイルの下から4行目の行頭に#
を追記し、該当行をコメント化します。
ErrorDocument 403 /owncloud/core/templates/403.php ErrorDocument 404 /owncloud/core/templates/404.php SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION 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
ErrorDocument 403 /owncloud/core/templates/403.php ErrorDocument 404 /owncloud/core/templates/404.php SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION 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
* ここはイントール先のサーバ環境に依存するため、必須の作業工程ではありませんし、すべてのエラーが解決できるわけではありません。
さくらインターネットのレンタルサーバ環境だと、「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-1でエラーが回避できない場合、php.iniというファイルを新規で作成し、下記1行を書き込んで、
cgi.fix_pathinfo=1
/home/サーバアカウント名/www
の下においてください。
※この作業は、さくらサーバのコントロールパネルの「PHP設定の編集」から1行書き加えるのと同じ作業です。
全てのインストール作業が完了し、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をアップロードしてください。
全てのインストール作業が完了し、ownCloudのホーム画面が表示されているようなのですが、左側のメニューのアイコン画像のうち数枚だけが表示されない場合があります。これはインストールしたサーバのWebアプリケーションファイアウォール(WAF:Web Application Firewall)が原因で起こっています。
さくらインターネットの場合、スタンダード以上のプランに標準でついている機能で、SQLインジェクションや各種シグネチャ検査などを自動で行ってくれますが、ownCloudに限らず、/core
というフォルダ配下のファイルは「意図しないファイルの公開の可能性」として、WEBに表示する事が出来ません。
さくらインターネットのコントロールパネル上では、各ドメインごとにこのWAFを「ON(利用する)」/「OFF(利用しない)」することしか出来ないため、ownCloudをデフォルトのまま(coreディレクトリ名を変更しないまま)使用するには、WAFを利用しない
に設定を変更しなければなりません。
これで、サーバ側のインストールと設定作業は完了です。
ファイルをアップロードするだけなら、WEBブラウザでも可能です。Dropboxのように常に最新状態で同期したい場合、それぞれのクライアントに常駐ソフトをインストールする必要があります。それぞれ下記ページからダウンロードが出来ます。