画像やリンクが無効になっている可能性もあるのでご了承下さい。
OwnCloud はオフィシャルのリポジトリを取り込めば yum で簡単インストールを行えるから非常にお手軽だった。
しかし、Web Server に Apache を想定した物であるため owncloud.noarch の依存パッケージとして owncloud-config-apache.noarch を要求してくる。更に、owncloud-config-apache.noarch は httpd.x86_64 を要求する。
Nginx + Apache で ReverseProxy を用いている場合には問題無さそうだけど、Nginx 単体で使用する場合にはちょっとイヤなので OwnCloud をソースからのインストールに切り替えた。
最初に
今後、OwnCloud をソースから新規インストールする時の為に yum で依存するパッケージの中から必要な PHP のライブラリとコマンドを調査しておく事にした。今は OwnCloud オフィシャルのリポジトリを有効にしている状態だから yum deplist で直ぐに調べられる。
owncloud と owncloud-server の 2 つのパッケージから調べる事が出来る。
curl
php >= 5.4.0
php-gd
php-json
php-ldap
php-mbstring
php-pdo
php-posix
php-process
php-xml
php-zip
policycoreutils-python
sqlite
OwnCloud をソースから新規インストールするなら、先にこれらパッケージを導入しておこう。導入する PHP は 7 でも問題無い。
OwnCloud のパッケージを削除
既に入っているパッケージをさくっと削除する。config.php は削除されること無く残るので、敢えて待避せずとも良いけど心配な人はバックアップを。
# yum erase owncloud*
読み込んだプラグイン:fastestmirror
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ owncloud.noarch 0:8.2.2-1.1 を 削除
---> パッケージ owncloud-config-apache.noarch 0:8.2.2-1.1 を 削除
---> パッケージ owncloud-server.noarch 0:8.2.2-1.1 を 削除
--> 依存性解決を終了しました。
依存性を解決しました
======================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
======================================================================================================================================
削除中:
owncloud noarch 8.2.2-1.1 @ce_stable 33 k
owncloud-config-apache noarch 8.2.2-1.1 @ce_stable 669
owncloud-server noarch 8.2.2-1.1 @ce_stable 77 M
トランザクションの要約
======================================================================================================================================
削除 3 パッケージ
インストール容量: 77 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
削除中 : owncloud-8.2.2-1.1.noarch 1/3
An ownCloud installation consists of multiple packages.
You just uninstalled owncloud . Please also check these:
owncloud-server-8.2.2-1.1.noarch
owncloud-config-apache-8.2.2-1.1.noarch
削除中 : owncloud-config-apache-8.2.2-1.1.noarch 2/3
警告: /etc/httpd/conf.d/owncloud.conf は /etc/httpd/conf.d/owncloud.conf.rpmsave として保存されました。
削除中 : owncloud-server-8.2.2-1.1.noarch 3/3
検証中 : owncloud-8.2.2-1.1.noarch 1/3
検証中 : owncloud-config-apache-8.2.2-1.1.noarch 2/3
検証中 : owncloud-server-8.2.2-1.1.noarch 3/3
削除しました:
owncloud.noarch 0:8.2.2-1.1 owncloud-config-apache.noarch 0:8.2.2-1.1 owncloud-server.noarch 0:8.2.2-1.1
完了しました!
OwnCloud のソースをダウンロード
OwnCloud オフィシャルサイトよりソースをダウンロードし、適当に展開したら OwnCloud を設置していたドキュメントルートに設置する。
# wget https://download.owncloud.org/community/owncloud-8.2.2.tar.bz2
# tar xjvf ./owncloud-8.2.2.tar.bz2
# shopt -s dotglob
# cp -irp ./owncloud /var/www/html/owncloud
# chown -R nginx. /var/www/html/owncloud
shopt -s dotglob は .htaccess や .user.ini も cp -rp でコピーする為に用いた。もっとも Nginx だから .htaccess は不要だが念のため。あと、.user.ini が残っており、上書き確認がでたらこれは拒否しておく。
Nginx の OwnCloud 用ホストの設定
既に OwnCloud を Nginx で動作させていた場合にはそのままで動作する。
新規インストールの場合は次の様に設定しておく。細かい所は各自ポリシーに合わせる。
うちでは Let’s Encrypt のサーバー証明書を用いて HTTP/2 に対応させているので、そのままであることに注意。あと SSL 周りの設定も WinXP や Android 2.x 系を非サポートにしている。
upstream php-handler {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name cloud.example.com;
root /var/www/html/owncloud;
index index.html;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name cloud.example.com;
root /var/www/html/owncloud;
index index.php;
charset utf-8;
resolver localhost;
# Logging. =====
access_log /var/log/nginx/cloud.example.com/access_log main;
error_log /var/log/nginx/cloud.example.com/error_log warn;
# HTTPS Setting by mozilla generator. =====
ssl on;
ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /etc/nginx/dhparam.pem;
# modern configuration. tweak to your needs.
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
# ========== OwnCloud
client_max_body_size 10G; # set max upload size
gzip off;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
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 = /data/htaccesstest.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# The following 2 rules are only needed with webfinger
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(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the location ~ \.php(?:$|/) { block
location ~* \.(?:css|js)$ {
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
# Optional: Don't log access to assets
access_log off;
}
# Optional: Don't log access to other assets
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
access_log off;
}
}
OwnCloud の Upgrade 処理
念のため実行しておくと良い。
# chmod 700 /var/www/html/owncloud/occ
# sudo -u nginx /var/www/html/owncloud/occ upgrade
occ はコマンドラインから OwnCloud の処理を行えるスクリプトなので覚えておくと楽出来る事が多い。
config.php に書き込むことが出来るユーザーで実行する必要がある為、sudo で nginx ユーザーから実行させている。
おわりに
ソースからインストールしても、管理画面から OwnCloud のアップデートチェックが行えるので、パッケージ管理せずとも同様にアップデートを行っていけそうだ。
コメント