CentOS7 + nginx + php-fpmの環境でownCloudを動かす
最近流行のクラウドストレージといえば,DropboxやGoogle Driveが挙げられますが自分のサーバやVPSにプライベートなクラウドストレージが欲しいときもあります。 そんなときはOSSとして公開されているownCloudを使えばプライベートなクラウドストレージが構築できます。要求される手順や環境も難しくなく簡単に構築できるので是非試してみましょう。
必要な環境
今回はインストールする対象がCentOS7ですので,標準でmysqlがMariaDBに変わっています。Yumでインストールするコマンドが変わるだけですので大差は無いと思います。
インストール手順
始めに必要なソフトウェア群をインストールしましょう。nginxは標準のレポジトリで提供されなかったはずなのでレポジトリを追加します。
こちらに登録するリポジトリの詳細が記載されていますので '/etc/yum.repos.d/nginx.repo'のような名前で記述します。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
yumのインストールコマンドを実行します。
$ sudo yum install -y nginx php php-fpm mariadb-server mariadb php-gd php-pdo php-dom
インストールが完了したらnginxが正しく動作するか確認します。
$ sudo systemctl start nginx
正しく80ポートでWebページが見えたならば完了です。見えない場合はFirewallの設定が必要です。 CentOS7からiptablesからFirewallに変わり使用するコマンドも変化しました。net-toolsをインストールすればiptablesも動作するようですが今回は新しいシステムを使用することにします。
$ sudo firewall-cmd --add-service=http --zone=public --permanent $ sudo firewall-cmd --reload
次にphpとphp-fpmの設定を行います。必要な設定はアップロードサイズの設定と待ち受け状態の設定と動作ユーザの設定です。
** php.ini post_max_size = 10G upload_max_filesize = 10G ** /etc/php-fpm.d/www.conf listen = /var/run/php-fpm/php-fpm.sock; user = nginx group = nginx
このままではセッションファイルが書き込めませんので変更します。
$ sudo chown root:nginx /var/lib/php/session -R
nginxと同様に起動します。
$ sudo systemctl start php-fpm
ownCloudをダウンロードし展開します。
$ cd /tmp $ curl -O https://download.owncloud.org/community/owncloud-7.0.1.zip $ unzip owncloud-7.0.1.zip $ cp -rf owncloud /usr/share/ $ sudo chown nginx:nginx /usr/share/owncloud/ -R
次はnginxの設定を行います。基本的にはowncloudのドキュメント通りですが,今回は簡略化のためsslを省略しています。本番で使用する場合は自己証明でも良いのでhttpsにしましょう。
upstream php-handler { #server 127.0.0.1:9000; server unix:/var/run/php-fpm/php-fpm.sock; } server { listen 80; server_name example.com; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; root /usr/share/owncloud; client_max_body_size 10G; # set max upload size fastcgi_buffers 64 4K; rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect; index index.php; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) { deny all; } location / { rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; rewrite ^(/core/doc/[^\/]+/)$ $1/index.html; try_files $uri $uri/ index.php; } location ~ \.php(?:$|/) { root /usr/share/owncloud; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php-handler; include fastcgi_params; } }
今回はmariaDBの設定は省略します。mysqlと同様の設定方法なので起動してmysql_secure_installtionを行えば出来るはずです。そしてowncloud用のユーザとデータベースを作成しておきます。 ちなみにownCloudはSQliteにも対応しているようなので,小規模な使用法であればSQLiteでも充分可能かもしれません:D
そして自動的にサービスが立ち上がるようにSystemdを設定します。
$ sudo systemctl enable mariadb $ sudo systemctl enable nginx $ sudo systemctl enable php-fpm
あとはブラウザでアクセスすることでwebセットアップ画面が表示されます。
使用感
Dropboxとも連携が出来るようなので外部ストレージ代わりに1つぐらい持っておくのも良いと感じた。
OwnCloudにDropBoxをマウントする【連携】 | くずのは探偵事務所
アップロードダウンロード速度もサーバ周りのネットワークに依存するのでちゃんとした評価は出来ないけれども充分使用できるのでは無いですか!!ぜひ皆さんも自分専用のストレージ作ってみてください。
私はJoe'sクラウド上に構築しました。CloudStack弄るのは初めてだったのでポートフォワーディングとかで躓きましたがなかなかに楽しかったです :D
参考URL
Nginxでphpを動かす CentOS7でnginxをyumでインストール(phpのおまけ付き) FastCGI sent in stderr: “Primary script unknown” file not found