CentOS7 + nginx + mariaDB로 ownCloud 설치 ~ Dropbox 연계까지 ~

개요



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 설정 파일 편집



    다음 두 파일을 다시 작성해야 합니다. 이 사이트 을 참고했다.
  • /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 측 설정



    왼쪽 상단의 마켓을 클릭합니다.

    스토리지 카테고리를 선택하고 그 중에서 'External Storage: Dropbox'를 선택하여 설치합니다(Dropbox 로고가 표시되는 것).
    App key와 App Secret을 입력하는 란이 있으므로, 방금전의 Dropbox 개발자 페이지의 그것을 copipe한다.
    마지막으로 Dropbox의 인증 페이지로 날아가 허가하면 연계된다.

    요약



    현명한 사람은 Dropbox의 장치 수 제한의 관계로 무엇인가 알아차리는 것이 아닐까요? 꼭 여러분도 ownCloud를 세웁시다.

    좋은 웹페이지 즐겨찾기