tencent cloud

フィードバック

NextCloud + COSを使用した個人オンラインストレージの構築

最終更新日:2023-03-14 16:03:56

    まえがき

    NextCloudはオンラインストレージの作成に用いられるオープンソースクライアントおよびサーバーソフトウェアです。このソフトウェアを利用することで、誰でも個人のオンラインストレージサービスを構築することができます。

    NextCloudのサーバーはPHPで作成し、基盤ストレージはデフォルトでサーバーのローカルディスクに保存されます。NextCloudの構成を変更することで、Tencent Cloud Object Storage(COS)を基盤ストレージとして使用することができ、COSのより安価なストレージコスト、より高い信頼性と障害復旧機能、ならびに無限のストレージスペースを利用することが可能になります。

    ここではNextCloudのサーバーが依存する環境についてご説明するとともに、ローカルストレージとCOSの違いについて分析比較し、最後に個人オンラインストレージ構築の実践について解説します。

    注意:

    既存のNextCloudサーバーインスタンスをローカルストレージからTencent Cloud COSの使用に切り替えると、既存のファイルが見えなくなる可能性があります。既存のインスタンスのストレージ方式を変更したい場合は、このチュートリアルに従って新しいNextCloudサーバーを構築し、Tencent Cloud COSを使用するよう設定した後、古いインスタンスのデータを新しいインスタンスに移行することをお勧めします。

    NextCloudサーバー環境の概要

    NextCloudサーバーはPHPで作成し、データベースはSQLite、MySQL、MariaDB、PostgreSQLを使用できます。このうちSQLiteはパフォーマンス上の制限があるため、通常実際のユースケースで使用することはお勧めしません。PHP、MySQLおよび関連のサーバーソフトウェアにはすべてWindows版がありますが、NextCloudコミュニティからのフィードバックによると、WindowsでNextCloudサーバーを実行すると文字コードなどの問題が生じることがあるため、公式はWindowsでのNextCloudサーバーのデプロイをサポートしていないとアナウンスしています。

    サーバーの設定

    Tencent Cloud Virtual Machine(CVM)には現在複数のインスタンスファミリーがあり、各インスタンスファミリーはそれぞれ複数のサブタイプに分かれています。インスタンスファミリーごとに特化する点(例えば大容量メモリや高IOなど)が異なります。NextCloudの位置づけは個人、家庭、中小企業ユーザー向けであり、各ハードウェアリソースへの要件はどれも高くないため、各リソースのバランスの取れた標準型を選択することでニーズに対応できます。通常、最新のサブタイプはよりコストパフォーマンスが高いため、一般的には最新のサブタイプを選択するとよいでしょう。

    インスタンスファミリーとサブタイプを決定した後、具体的なvCPUとメモリ仕様も選択する必要があります。vCPUとメモリ仕様ごとに、対応するプライベートネットワーク帯域幅とネットワーク送受信パケットが異なります。PHPはOPcacheによってパフォーマンスを向上させることができ、NextCloudサーバーもAPCuメモリキャッシュの使用によるパフォーマンス向上をサポートしています。このため、仕様を選択する際は容量が大きめのメモリを選択することをお勧めします。

    CVMは購入後に構成の調整が可能なため、例えばvCPU1コアとメモリ4GBなどの比較的低構成の仕様をまず購入し、構築完了後に実際にオンラインで使用する際に、ユーザー数、ファイル数、CVMの関連モニタリングデータなどに基づいて、パフォーマンス向上のための仕様アップグレードが必要かどうかを判断することができます。例えばご家庭または中小企業などの複数ユーザーによる使用を想定している場合は、複数ユーザーでの使用に足る十分なパフォーマンスを提供するため、2コア8GBから4コア16GBの構成の購入をお勧めします。

    サーバーOS

    主要なLinuxディストリビューションであれば、どれもNextCloudサーバーを問題なく実行できます。ソフトウェアパッケージインストールをする際に使用するコマンド(パッケージ管理ツール)がシステムによって異なる点を除き、設定作業に違いはありません。

    説明:

    ここではCentOS OS 7.7のCVMを例として説明します。

    データベース

    上記で述べたとおり、実際のユースケースでは通常MySQLとPHPをセットで使用します。MariaDBはMySQLの「復刻」版であり、MySQLとの間で高度な互換性を有します。このためMySQL 5.7+またはMariaDB 10.2+はどちらも問題なくNextCloudサーバーと組み合わせて使用することができます。

    Tencent CloudがホストするTencentDB for MySQLとTencentDB for MariaDBは、CVM上の自作データベースと異なり、デフォルトで1マスター1スレーブの高可用性モードを採用し、より高い信頼性を有するほか、自動バックアップなどの便利な運用保守操作をご提供します。このため、実際のユースケースではこちらのクラウドデータベースのご使用を強く推奨します。

    説明:

    ここではTencentDB for MySQL 5.7を例として説明します。

    WebサーバーとPHPランタイム

    NextCloudサーバーは.htaccessによって一部の設定を指定するため、Apacheサーバーソフトウェアを使用する際、NextCloudサーバー自体の設定項目をそのまま使用することができます。Nginxは近年急成長中のWebサーバーソフトウェアであり、Apacheに比べてインストール設定が簡単、リソース占有が少ない、ロードバランシング機能がより強力であるなどのメリットがあります。NextCloudサーバー内の.htaccess設定をNginxの設定として移行しても、NextCloudサーバーの実行は問題なくサポートされます。ここではNginxサーバーソフトウェアを使用するとともに、完全なNginx設定の例を参考までに示します。

    PHPランタイムは現在PHP 7にバージョンアップしています。保守されている主なバージョンは7.2、7.3、7.4であり、この3バージョンはすべてNextCloudサーバーをサポートしています。最新の7.4の使用をお勧めします。また、NextCloudはPHPの一部拡張モジュールにも依存しています。続いて拡張モジュール要件の詳細についてご説明します。

    Tencent Cloudネットワーク環境

    Tencent Cloudでは現在、基幹ネットワークとVirtual Private Cloud(VPC)環境をご提供しています。基幹ネットワークとはTencent Cloud上のすべてのユーザーのための公共のネットワークリソースプールです。すべてのCVMのプライベートIPアドレスはTencent Cloudが一元的に割り当てており、ネットワークセグメントの区分、IPアドレスのカスタマイズは行えません。VPCとは、ユーザーがTencent Cloud上に構築した、論理的に隔離されているネットワークスペースです。VPC内では、ユーザーはネットワークセグメントの区分、IPアドレスおよびルーティングポリシーを自由に定義できます。現在基幹ネットワークは、リソース不足かつ機能の拡張ができないなどの理由により、新規登録アカウントおよび一部の新規アベイラビリティーゾーンでは今後サポートを行わないことになっています。このため、これ以降の説明はVPCを例として行います。

    説明:

    VPCに関するより詳しい説明については、Virtual Private Cloud製品概要をご参照ください。

    CBSとCOSの比較

    CVMでは、Cloud Block Storage(CBS)をCVM内のローカルディスクの形式でOSにマウントします。NextCloudはデフォルトでファイルシステムを使用してオンラインストレージのデータを保存するため、NextCloudのデータはそのままOS内のCBSに保存することができます。CBSと比較した、COSを使用する上でのメリットについて、次のいくつかの点から解説します。

    ユースケース

    CBS

    CBSはブロックストレージの一種であり、CVMのOSに直接マウントしてハードディスクとして使用することができます。通常はOSによって専有されるため、1台のCVMにしかマウントできませんが、読み取り書き込みパフォーマンスが高いため、高IO、低遅延かつ他のCVMとの共有が必要ないケースに適しています。

    COS

    COSはHTTPプロトコルによって外部に提供される読み取り書き込みインターフェースであり、プログラミング方式でCOSのストレージオブジェクト(ファイル)にアクセスする必要があります。COSはオブジェクトキー(Key、ファイルパスであると理解できます)をインデックスとして使用するもので、ストレージ容量の制限がありません。ネットワーク伝送を使用するため、速度と遅延は比較的大きくなりますが、操作がオブジェクトレベルのため、1つのソフトウェアで1つのオブジェクトの操作を行った後、別のソフトウェアですぐに同じオブジェクトの操作を行えることから、パフォーマンスに対する要件が厳しくなく、低コストで大容量のストレージが必要な場合、または共有アクセスが必要なケースに適しています。オンラインストレージの使用自体はネットワーク伝送を通じて行われるため、遅延に対する要件は厳しくなく、かつオンラインストレージクライアントからオンラインストレージサーバーを経由してCOSに至るリンクにおいて、速度と遅延に影響する要因は主にクライアントのネットワーク環境にあり、COS自体の速度制限ではないことから、COSの方がよりオンラインストレージとの併用に適していると言えます。

    メンテナンス

    CBS

    CBSは容量が固定であり、コンソールまたはTencent Cloud APIによるスケーリングが必要です。スケーリング後はOSでパーティションの拡張も行わなければならず、かつパーティションの拡張時にパーティションエラーが発生するリスクも一定程度あり、ある程度のメンテナンスコストがかかります。

    COS

    COSは必要に応じて使用でき、総容量の制限がなく、オブジェクト数(ファイル数)の制限もありません。完全メンテナンスフリーです。

    データセキュリティ

    CBSとCOSはどちらもマルチレプリカなどの手段を使用してデータの信頼性を保証しています。

    NextCloudサーバー実行環境の構築

    NextCloudサーバーが依存するクラウド製品の準備

    CVM

    スタート操作については、Cloud Virtual Machine(CVM)クイックスタートをご参照ください。

    TencentDB for MySQL

    スタート操作については、TencentDB for MySQLクイックスタートをご参照ください。

    COS

    1. COSコンソールを開いてログインし(初回使用前にCOSサービスをアクティブ化する必要があります)、バケットリストに進み、バケットの作成をクリックし、下表の説明に従って設定します。
      設定項目
      名前カスタマイズしたバケット名(例:nextcloud)を入力します。この名前は決定すると変更できませんのでご注意ください
      所属リージョン購入したCVMの所属リージョンと同じものにします
      その他デフォルトを維持します
    2. 上記の設定完了後、OKをクリックして作成を完了します。

    WebサーバーおよびPHPランタイムのインストールと設定

    Nginxのインストール

    1. SSHツールを使用して新規購入サーバーにログインします。

    2. 次のコマンドを実行してNginxをインストールします。

      yum install nginx
      

      次のメッセージが表示された場合は、Yを入力してエンターを押し、インストールを確認します(以下同様)。

      Is this ok [y/d/N]:
      
    3. 次のメッセージが表示された場合、インストールは完了しています。

      Complete!
      [root@VM-0-10-centos ~]#
      
    4. 続いて次のコマンドを実行し、Nginxのバージョンが正常に表示されるかどうかを検証します。

      nginx -v
      

      次のメッセージが表示された場合、インストールの完了が検証されました。

      nginx version: nginx/1.16.1
      

    PHPのインストール

    1. SSHツールを使用して新規購入サーバーにログインします。

    2. 次のコマンドを実行し、PHP 7.4のインストールを開始します。

      yum install epel-release yum-utils
      
    3. 次のコマンドを順に実行します。

    コマンド1:

    yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    
    説明:

    上記のコマンドの実行時に、速度が遅すぎる、長時間進捗しないなどの問題があった場合は、Ctrl-Cでキャンセルし、再度このコマンドを実行することができます(以下同様)。

    コマンド2:

    yum-config-manager --enable remi-php74
    

    コマンド3:

    yum install php php-fpm
    
    1. インストールの完了後に次のコマンドを実行し、PHPのバージョンが正常に表示されるかどうかを検証します。

      php -v
      

      次のメッセージが表示された場合、インストールの完了が検証されました。

      PHP 7.4.8 (cli) (built: Jul 9 2020 08:57:23) ( NTS )
      Copyright (c) The PHP Group
      Zend Engine v3.4.0, Copyright (c) Zend Technologies
      

    PHPモジュールのインストール

    基本のPHP以外に、NextCloudは他のPHPモジュールにも依存して一部の機能を実装しています。NextCloudの依存するモジュールについての詳細情報は、NextCloud公式ドキュメントをご参照ください。

    このチュートリアルではNextCloudに必須のPHPモジュールをインストールします。その後、NextCloudのその他のオプション機能を使用するご予定がある場合は、ご注意の上、依存する他のPHPモジュールをご自身でインストールしてください。

    1. SSHツールを使用して新規購入サーバーにログインします。

    2. 次のコマンドを実行し、PHPモジュールをインストールします。

      yum install php-xml php-gd php-mbstring php-mysqlnd php-intl php-zip
      
    3. インストールの完了後、次のコマンドを実行して、インストール済みのPHPモジュールを表示します。

      php -m
      
    4. 他のモジュールもインストールする必要がある場合は、yum install <php-module-name>を繰り返し実行します。

    NextCloudサーバーコードのアップロードと解凍

    1. NextCloud公式サイトからNextCloudサーバーの最新版のインストールパッケージをダウンロードし、サーバーの/var/www/ディレクトリ下にアップロードします。アップロードは以下の方法で行うことができます。
    2. wgetコマンドを使用して、インストールパッケージのダウンロードとサーバーへのアップロードを直接行います。例えば/var/www/ディレクトリに進んだ後、コマンドwget https://download.nextcloud.com/server/releases/nextcloud-19.0.1.zipを実行します。
    3. ローカルコンピュータにダウンロードした後、SFTPまたはSCPなどのソフトウェアによって、インストールパッケージを/var/www/ディレクトリにアップロードします。
    4. ローカルコンピュータにダウンロードした後、lrzszを使用してアップロードします。方法は次のとおりです。
      1. SSHツールを使用して新規購入サーバーにログインします。
      2. yum install lrzszを実行してlrzszをインストールします。
      3. cd /var/www/を実行して目的のディレクトリに進みます。
      4. rz -byeを実行し、続いてSSHツールから、ローカルにダウンロードするNextCloudサーバーインストールパッケージを選択します(この操作はSSHツールによって多少異なります)。
    5. SSHツールを使用して新規購入サーバーにログインします。
    6. unzip nextcloud-<version>.zipを実行してインストールパッケージを解凍します。例えばunzip nextcloud-19.0.1.zipなどとします。

    PHPの設定

    1. SSHツールを使用して新規購入サーバーにログインします。

    2. vim /etc/php-fpm.d/www.confを実行してPHP-FPMの設定ファイルを開き、設定項目を順に変更します(vimの具体的な使用方法については関連資料をご参照ください。この設定ファイルの変更は他の方法でも行うことができます)。

    3. user = apacheuser = nginxに変更します。

    4. group = apachegroup = nginxに変更します。

    5. 変更完了後、:wqを入力してファイルを保存して終了します(vimの詳細な操作ガイドについては関連ドキュメントをご参照ください)。

    6. 次のコマンドを実行してディレクトリ所有者を変更し、PHPをNginxで使用できるようにします。

      chown -R nginx:nginx /var/lib/php
      
    7. 次のコマンドを順に実行し、PHP-FPMサービスを起動します。

    コマンド1:

    systemctl enable php-fpm   # コマンド1
    

    コマンド2:

    systemctl start php-fpm   # コマンド2
    

    Nginxの設定

    1. SSHツールを使用して新規購入サーバーにログインします。

    2. 次のコマンドを実行し、ウェブサイトのディレクトリ所有者を変更します。

      chown -R nginx:nginx /var/www
      
    3. 現在のNginx設定ファイル/etc/nginx/nginx.confをバックアップします。次の方法で行うことができます。

    4. cp /etc/nginx/nginx.conf ~/nginx.conf.bakを実行し、現在の設定ファイルをホーム(HOME)ディレクトリにバックアップします。

    5. SFTPまたはSCPなどのソフトウェアを使用して、現在の設定ファイルをローカルコンピュータにダウンロードします。

    6. /etc/nginx/nginx.confを変更するか、または次の内容に置き換えます。

    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    
        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            root         /var/www/nextcloud;
    
            add_header Referrer-Policy "no-referrer" always;
            add_header X-Content-Type-Options "nosniff" always;
            add_header X-Download-Options "noopen" always;
            add_header X-Frame-Options "SAMEORIGIN" always;
            add_header X-Permitted-Cross-Domain-Policies "none" always;
            add_header X-Robots-Tag "none" always;
            add_header X-XSS-Protection "1; mode=block" always;
    
            client_max_body_size 512M;
            fastcgi_buffers 64 4K;
    
            gzip on;
            gzip_vary on;
            gzip_comp_level 4;
            gzip_min_length 256;
            gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
            gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            location / {
                try_files $uri $uri/ =404;
                index index.php;
            }
    
            location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
                deny all;
            }
            location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
                deny all;
            }
    
            location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
                fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
                set $path_info $fastcgi_path_info;
                try_files $fastcgi_script_name =404;
                include        fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $path_info;
                fastcgi_param modHeadersAvailable true;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_intercept_errors on;
                fastcgi_request_buffering off;
            }
    
            location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
                try_files $uri/ =404;
                index index.php;
            }
    
            location ~ \.(css|js|svg|gif)$ {
                add_header Cache-Control "max-age=15778463";
            }
    
            location ~ \.woff2?$ {
                add_header Cache-Control "max-age=604800";
            }
        }
    
    # Settings for a TLS enabled server.
    #
    #    server {
    #        listen       443 ssl http2 default_server;
    #        listen       [::]:443 ssl http2 default_server;
    #        server_name  _;
    #        root         /usr/share/nginx/html;
    #
    #        ssl_certificate "/etc/pki/nginx/server.crt";
    #        ssl_certificate_key "/etc/pki/nginx/private/server.key";
    #        ssl_session_cache shared:SSL:1m;
    #        ssl_session_timeout  10m;
    #        ssl_ciphers HIGH:!aNULL:!MD5;
    #        ssl_prefer_server_ciphers on;
    #
    #        # Load configuration files for the default server block.
    #        include /etc/nginx/default.d/*.conf;
    #
    #        location / {
    #        }
    #
    #        error_page 404 /404.html;
    #            location = /40x.html {
    #        }
    #
    #        error_page 500 502 503 504 /50x.html;
    #            location = /50x.html {
    #        }
    #    }
    
    }
    
    1. 次のコマンドを順に実行し、Nginxサービスを起動します。

    コマンド1:

    systemctl enable nginx
    

    コマンド2:

    systemctl start nginx
    

    NextCloudサーバーでのCOS使用設定

    COS関連情報の取得

    1. COSコンソールにログインします。
    2. 作成済みのバケットを見つけ、バケット名をクリックします。
    3. 左側ナビゲーションバーで概要タブを選択し、基本情報バケット名所属リージョンの中の英語部分をメモします。

    APIキーの取得

    サブアカウントキーを使用し、最小権限ガイドに従うことで、使用上のリスクを低減させることをお勧めします。サブアカウントキーの取得については、サブアカウントのアクセスキー管理をご参照ください。

    NextCloudサーバー設定ファイルの変更

    1. テキスト編集ツールを使用してconfig.phpを作成し、次の内容を入力して、メモの内容に基づいて関連の値を変更します。
    <?php
    $CONFIG = array(
      'objectstore' => array(
        'class' => '\\OC\\Files\\ObjectStore\\S3',
        'arguments' => array(
          'bucket' => 'nextcloud-1250000000', // バケット名(スペース名)
          'autocreate' => false,
          'key'  => 'AKIDxxxxxxxx', // ユーザーのSecretIdに置き換えます
          'secret' => 'xxxxxxxxxxxx', // ユーザーのSecretKeyに置き換えます
          'hostname' => 'cos.<Region>.myqcloud.com', // <Region>を所属リージョンに変更します(ap-shanghaiなど)
          'use_ssl' => true,
        ),
      ),
    );
    

    下図に示すように:

    2. このファイルを保存し、/var/www/nextcloud/config/ディレクトリ下にアップロードします(ファイル名はconfig.phpのままにしておきます)。SFTPまたはSCPソフトウェアでファイルをアップロードするか、またはrz -byeコマンドによってアップロードすることができます。
    3. 次のコマンドを実行し、設定ファイルの所有者を変更します。

    chown nginx:nginx /var/www/nextcloud/config/config.php
    

    ドメイン名の設定

    ご自身のNextCloudサーバーにアクセスするのに、IPアドレスではなくご自身のドメイン名の使用を予定している場合は、各ドメイン名登録プロバイダの説明ドキュメントをご参照の上、新しいドメイン名を登録してCVMのIPアドレスに解決し、ICP登録を完了してください。

    NextCloudサーバーはインストールの過程で、インストール時に使用したドメイン名またはIPアドレスを記録するため、インストールの開始前にドメイン名の登録、解決、ICP登録を完了しておくとともに、ドメイン名を使用してNextCloudサーバーのセキュリティ画面にアクセスすることをお勧めします。

    NextCloudサーバーの完成後にドメイン名またはIPアドレスを変更したい場合は、ご自身で/var/www/nextcloud/config/config.php設定ファイル内のtrusted_domainsを変更することができます。詳細については、NextCloud公式ドキュメントをご参照ください。

    NextCloudサーバーのインストール

    1. ブラウザを使用してNextCloudサーバーにアクセスし、管理者ユーザー名とパスワードを作成して忘れないように記憶しておきます。
    2. ストレージとデータベースを開き、下表の説明に従って設定します。
    設定項目
    データディレクトリ/var/www/nextcloud/data(デフォルトを維持)
    データベース設定MySQL/MariaDB
    データベースユーザーroot
    データベースパスワードTencentDB for MySQLを初期化した際に入力したrootパスワード
    データベース名nextcloud(またはその他の使用されていないデータベース名)
    データベースホスト(デフォルトではlocalhostと表示)TencentDB for MySQLのプライベートネットワークアドレス
    3. **インストール完了**をクリックし、NextCloudサーバーのインストールが完了するまで待ちます。 4. インストール中に504 Gateway Timeoutなどのエラーメッセージが表示された場合は、そのまま更新してリトライします。 5. インストール完了後、管理者アカウントを使用してNextCloudサーバーにログインすると、Web版NextCloudの使用を開始できます。

    NextCloudサーバーのチューニング

    バックエンドタスク

    NextCloudサーバーは、ユーザーとのインタラクションが必要ないときに、一部のバックエンドタスク(例えばデータベースのクリーンアップ操作など)を実行しなければならない場合があります。PHPには、PHPベースのプログラムが内部で独立した作業プロセスまたはスレッドを維持できないように制限する実行特性があるため、 バックエンドタスクのようなケースでは、対応するPHPプログラムを外部から能動的に呼び出して実行する必要があります。

    NextCloudサーバーは3種類のバックエンドタスクの呼び出しメソッドを提供しています。デフォルトは、ウェブページ側のログインユーザーに、ブラウザからAJAXリクエストを自動送信してサーバーのバックエンドタスクを実行するようリマインドする方法です。このメソッドはユーザーのログイン状態に強く依存し、ユーザーがログインしていないとこれらのバックエンドタスクが実行できないため、信頼性が最も低くなっています。

    AJAXをベースにしたバックエンドタスクの低信頼性の問題を回避するためには、Linuxのcronを使用してバックエンドタスクを設定する方法を推奨します。Linuxのcronはタスクがリマインドされる時間を正確に制御でき、例えば5分ごと(分数は5の整数倍)や毎時10分などとすることができます。定義できる時間粒度には分、時間、1か月のうちの特定の日、月、特定の曜日などがあり、一部のOSでは秒と年もサポートされているため、高い柔軟性を有します。cronと関連説明および設定については、関連の資料をご参照ください。

    cronを設定してNextCloudサーバーのバックエンドタスクを行えるようにする方法について、以下でご説明します。

    1. SSHツールを使用して新規購入サーバーにログインします。
    2. 次のコマンドを実行し、PHPモジュールをインストールします。
    yum install php-posix
    
    1. 次のコマンドを実行し、Nginxアカウントで使用するcronの設定を開くか、または作成します。

      crontab -u nginx -e
      
    2. 続いての編集画面はvi/vimです。iキーを押して編集モードに入り、次の内容の1行を挿入します。

    */5 * * * * php -f /var/www/nextcloud/cron.php
    

    その後、ESCを押して編集モードを終了し、:wqを入力して保存し、終了します(vi/vimの詳細な操作ガイドについては関連ドキュメントをご参照ください)。
    上記の設定ではNextCloud公式が推奨する5分に1回の実行を使用しています(分数は5の整数倍)。5分後にバックエンドタスクの実行が完了すると、ブラウザを開いてNextCloudサーバーにログインできるようになります。右上隅にあるユーザー名のイニシャルのアイコンをクリックし、設定に進み、左側メニューから基本設定に進むと、バックエンドタスクのところにデフォルトでCronが選択されていることを確認できます。

    メモリキャッシュ

    PHPはOPcacheによってパフォーマンスを向上させることができ、NextCloudサーバーもAPCuメモリキャッシュの使用によるパフォーマンス向上をサポートしています。関連の操作フローを以下でご説明します。

    1. SSHツールを使用して新規購入サーバーにログインします。

    2. 次のコマンドを実行し、PHPモジュールをインストールします。

      yum install php-pecl-apcu
      
    3. 次のコマンドを順に実行し、Nginx とPHP-FPMを再起動します。

    コマンド1:

    systemctl restart nginx
    

    コマンド2:

    systemctl restart php-fpm
    
    1. vim /var/www/nextcloud/config/config.phpを実行し、NextCloudサーバーの設定ファイルを開き、$CONFIG = array ( の中に'memcache.local' => '\OC\Memcache\APCu',という1行を追加します。その後ファイルを保存して終了します。
    2. cronを設定してバックエンドタスクを最適化した場合は、PHPのapc設定も変更する必要があります。vim /etc/php.d/40-apcu.iniを実行し、PHP APCuの設定ファイルを開き、;apc.enable_cli=0apc.enable_cli=1に変更し(同時に前のセミコロンを削除する必要があることにご注意ください)、保存して終了します。パス/etc/php.d/40-apcu.iniが存在しない場合は、apcまたはapcuの文字がある.ini設定ファイルをご自身で/etc/php.d/ディレクトリから見つけて編集してください。

    クライアントアクセス設定

    NextCloud公式はデスクトップ同期クライアントとモバイルクライアントを提供しており、NextCloud公式サイトまたは各大手アプリストアからダウンロードできます。NextCloudを設定する際には、NextCloudのサーバーアドレス(ドメイン名またはIP)を入力し、その後ご自身のユーザー名とパスワードを入力してログインすると、クライアントの使用を開始できます。

    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)