LoginSignup
1
1

More than 3 years have passed since last update.

CentOS7 + nginx + mariaDBでownCloudインストール ~Dropbox連携まで~

Posted at

概要

VPSにownCloudを導入した際の手順の備忘録。
Dropboxがデバイス数に制限をかけたせいで非常に使いづらくなったため、移行した。(課金してもよいが、別に1TBもいらない)

通常ownCloudではapacheを利用することが多いが、今回はもともと導入済みであったnginxを利用してインストールを行った。
また、ownCloudをwgetでパッケージをダウンロードするのでなく、リポジトリを登録してdnfからインストールした。

環境・構成

みかか系の超格安VPS。

[puri@gbgb ~]$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

SSL証明書は以前にLet's Encryptで取得済み。また、ファイアウォールの設定もすでに設定済み。

必要なパッケージ

  • dnf

yumの後継。ownCloudをインストールするのに必要。

yum -y install wget
yum -y install epel-release
yum -y install dnf

参考

  • PHP 7.2

ownCloud動作には、PHP5.6以上が必要。
CentOSで普通にyumするとPHP5.4がインストールされるため、remiリポジトリを追加する必要がある。

// remiリポジトリ追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=remi-php71 install php \
  php-dom \
  php-fpm \
  php-gd \
  php-mbstring \
  php-mysqlnd \
  php-pdo \
  php-pdo_mysql \
  php-pecl-zip \
  php-intl
  • mariaDB, nginx

詳細省略

owncloudインストール

公式サイトを参考にインストールする。

pm --import https://download.owncloud.org/download/repositories/production/CentOS_7/repodata/repomd.xml.key
dnf config-manager --add-repo http://download.owncloud.org/download/repositories/production/CentOS_7/ce:stable.repo
dnf clean all
dnf install owncloud-files; dnf upgrade owncloud-files

以上の手順で、/var/www/html/owncloudに諸々のファイルが配置される。

PHP設定ファイルの編集

以下の2ファイルの書き換えが必要。こちらのサイトを参考にした。

  • /etc/php.ini
  • /etc/php-fpm.d/www.conf

また、以下のディレクトリの所有グループをapacheからnginxに変更する。

chown -R root:nginx /var/lib/php/session

nginx設定ファイルの編集

/etc/nginx/nginx.confは、http接続の時にhttps接続にリダイレクトするよう設定している。
なお、Dropboxと連携する際はhttpsが必須。

/etc/nginx/nginx.conf
[puri@gbgb ~]$ cat /etc/nginx/nginx.conf
# 省略

http {

# 省略

    # 下記設定でリダイレクト
    server {
        server_name www.example.com;
        return 301 https://www.example.com$request_uri;
    }
}

/etc/nginx/conf.d/owncloud.confでowncloud関連の設定をする。

/etc/nginx/conf.d/owncloud.conf
[puri@gbgb ~]$ cat /etc/nginx/conf.d/owncloud.conf
upstream php-handler {
    #server 127.0.0.1:9000;
    # UNIXソケットファイルを指定して、処理をphp-fpmへ転送する
    server unix:/var/run/php-fpm/php-fpm.sock;
}

server {
    listen 443 ssl http2;
    ssl_certificate "/etc/letsencrypt/live/<domain>/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/<domain>/privkey.pem";
#   ssl_session_cache shared:SSL:1m;
#   ssl_session_timeout  10m;
#   ssl_ciphers HIGH:!aNULL:!MD5;
#   ssl_prefer_server_ciphers on;
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    # rootに以下のパスを指定することでwww.example.com/owncloudでowncloudにアクセスできる
    root   /var/www/html/;

    client_max_body_size 5G;
    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           /var/www/html;
        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;
    }

    # dataディレクトリにユーザのデータが保存される。リモートからのアクセスを禁止するか、ドキュメントルートの外に配置する。
    location /owncloud/data/ {
        allow 127.0.0.1;
        deny  all;
    }
}

SELinuxの設定

SELinuxが有効になっている場合、ownCloudがディレクトリにアクセスできず正常に動作しない可能性がある。
SELinuxを無効にして運用してもよいが、セキュリティを考慮してSELinuxのコンテキストを変更して運用することも可能。その場合、RedhatのSELinuxを参考にポート、ディレクトリのコンテキストを変更する。
少なくとも、以下のディレクトリには書き込みを許可するコンテキストが必要。

[puri@gbgb owncloud]$ pwd
/var/www/html/owncloud
chcon -R -t  httpd_sys_rw_content_t config/
chcon -R -t  httpd_sys_rw_content_t apps/
chcon -R -t  httpd_sys_rw_content_t apps-external/

サービスの起動、mariaDBの設定

先ほどのサイトと同様に設定する。
mariaDBって金森まりあさん感あっていいですよね、かわいい

Dropboxとの連携設定

Dropbox側の設定

App keyとApp secretを取得する。また、Redirect URIsの設定が必要。

Dropboxの開発者ページに行き、'Create app'をクリック。諸所の設定を行い、appを作成する。
作成し次のページに遷移すると、Redirect URIsの欄があるので、
https://www.example.com/owncloud/index.php/settings/admin?sectionid=storageを入力する。

ownCloud側の設定

左上のMarketをクリックする。
00.png
ストレージのカテゴリを選択し、その中から'External Storage: Dropbox'を選択し、インストールする(Dropboxのロゴが表示されているもの)。
App keyとApp Secretを入力する欄があるので、先ほどのDropbox開発者ページのそれをコピペする。
最後にDropboxの認証ページに飛ばされ、許可すると連携される。

まとめ

賢いひとはDropboxのデバイス数制限の関係で何か気づくのではないのでしょうか?ぜひ皆さんもownCloudを立てましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1