プロジェクト

全般

プロフィール

Nextcloud web版 インストール

NextCloudは現在はyumでのリリースが行われていないようなので、zipファイルでの
手動配置またはwebインストーラを使用してのインストールが提供されています。

ここではWebインストーラでの方法を説明します。

事前準備

  • SELinuxの停止
    # vi /etc/sysconfig/selinux
    --------------------
    SELINUX=disabled
    
  • Firewalldの停止
    # systemctl disable firewalld
    
  • 一度再起動する

インストーラ実行環境の構築

  • EPELのインストール
    # yum install epel-release
    
  • Webサーバのインストール
    # yum install httpd mod_ssl mariadb mariadb-server php
    
  • Webサーバの起動
    # systemctl enable httpd
    # systemctl start httpd
    
  • mariadbの起動
    # systemctl enable mariadb
    # systemctl start mariadb
    
  • MariaDBの初期化
    # mysql_secure_installation
    --------------------
    Enter current password for root (enter for none): [ENTER]
    Set root password? [Y/n] [Y]
    New password: [設定するパスワード]
    Re-enter new password: [設定するパスワード]
    残りはデフォルト値のままENTER
    
  • データベースの作成
    # mysql -u root -p
    --------------------
    MariaDB [(none)]> create database nextcloud default character set=utf8;
    MariaDB [(none)]> grant all privileges on nextcloud.* to "nextcloud"@"localhost" identified by "パスワード";
    MariaDB [(none)]> quit
    

Webインストーラの配置

  • Webインストーラのページからアドレスをコピー
    https://nextcloud.com/install/#instructions-server
    https://download.nextcloud.com/server/installer/setup-nextcloud.php
    
  • Webサーバのディレクトリに移動
    # cd /var/www/html/
    
  • インストール先を作成し、オーナー情報を設定して移動
    # mkdir nextcloud
    # chown apache.apache nextcloud
    # chmod 755 nextcloud
    # cd nextcloud
    
  • インストーラを保存
    # wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
    

Webインストーラの実行

  • ブラウザで次のURLを開きます
    http://IPアドレス/nextcloud/setup-nextcloud.php
    
  • Nextを実行
  • PHPモジュールが足りない場合、表示されるものを追加する。
    # yum install php-zip php-dom php-xmlwriter php-libxml php-mbstring php-json php-gd php-simplexml php-pdo
    ※mb multibyteはmbstring
    
  • インストール先ディレクトリ名の設定を行う。
    デフォルトでは「nextcloud」となっているが、今回は既に作成してあるので「.」でカレントディレクトリを指定する。
  • サーバ側でインストーラが実行され、nc.zipファイル(150MB前後)がダウンロードされる
    ダウンロードに時間がかかる場合、「GatewayTimeOut」エラーとなる可能性があるが、コンソール側で
    時間がかかるので、ダウンロードがおわるのを確認するまではそのまま待つ
  • nc.zipが展開され、各ディレクトリやファイルが配置されていれば完了しているので以下のアドレスにアクセスする。
    http://IPアドレス/nextcloud/
    
  • 以降の手順は通常のNextCloudのインストールと同じとなる

初期設定の実行

  • 必要パッケージの入手(php以外)
    # yum install mariadb-server
    
    # systemctl enable httpd
    # systemctl start httpd
    # systemctl enable mariadb
    # systemctl start mariadb
    
    # mysql -u root
    MariaDB [(none)]> set password for root@localhost=password('設定するパスワード');
    MariaDB [(none)]> quit
    
    # mysql -u root -p
    MariaDB [(none)]> create database nextcloud default character set=utf8;
    MariaDB [(none)]> grant all privileges on nextcloud.* to "nextcloud"@"localhost" identified by "設定するパスワード";
    MariaDB [(none)]> quit
    
  • 必要パッケージの入手(php7系)
    # yum install epel-release
    # wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    # rpm -ivh remi-release-7.rpm
    # yum install --enablerepo=remi,remi-php71 php php-devel php-xml php-mbstring php-gd php-pdo php-mysqlnd php-zip php-process php-mcrypt php-intl php-ldap
    
  • php.iniの設定
    default_charset = "UTF-8" 
    date.timezone = Asia/Tokyo
    
    memory_limit = 512M
    post_max_size = 256M
    upload_max_filesize = 256M
    
    • 「memory_limit>post_max_size=upload_max_filesize」とすること。memory_limitが
      不足あるいは同等値である場合、PHPの出力が真っ白な空白ページになってしまう。
      ただし現在、送信サイズはpost_max_sizeとupload_max_filesizeで制御しなくなっている。
    • 変更後、apacheを再起動する。
  • httpdの設定(/etc/httpd/conf.d/ssl.conf)
    パスは任意。ディレクティブ設定は同梱されている.htaccessを有効にするために設定する。
    LimitRequestBodyは送信サイズ制限。単一2GB以上のファイルのアップロードを拒否する。
    これは上記送信サイズ制限がないための予防策で、必要に応じて調整・コメントアウトしてもいい。
    Alias   /nextcloud       /usr/local/nextcloud
    <Directory /usr/local/nextcloud/>
      LimitRequestBody 2147483647
      Options +FollowSymlinks
      AllowOverride All
      <IfModule mod_dav.c>
        Dav off
      </IfModule>
      SetEnv HOME /usr/local/nextcloud/
      SetEnv HTTP_HOME /usr/local/nextcloud/
    </Directory>
    
  • Webブラウザで「https://ipアドレス/nextcloud」アクセスして初期設定
    • 管理者ユーザ名を指定する
    • 管理者パスワードを指定する
    • データフォルダを指定する
    • データベースをSQLiteからMySQL/Mariadbに切り替える
    • データベース設定を行う
    • セットアップ完了ボタンを押す

以上でインストールは完了。

推奨設定

管理画面を開いたときにチェックされる推奨設定に関する設定

httpdの設定

  • httpdの設定(/etc/httpd/conf.d/ssl.conf)
    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" 
    </IfModule>
    

メモリキャッシュの設定

  • php-pecl-apcのインストール
    # yum install --enablerepo=remi,remi-php71 php-pecl-apc
    # systemctl restart httpd
    
  • 設定ファイルにポート番号などを追記(nextcloud/config/config.php)
    installedの下に追加
      'installed' => true,
      'memcache.local' => '\OC\Memcache\APCu',
    );
    

php-opcacheの設定

  • opcacheの設定
    # yum install --enablerepo=remi,remi-php71 php-opcache
    
  • PHPの設定(/etc/php.d/10-opcache.ini)
  • 警告ではphp.iniを編集するよう促すが、実際には上記のファイルでチェックされる。
    opcache.enable=1
    opcache.enable_cli=1
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=10000
    opcache.memory_consumption=128
    opcache.save_comments=1
    opcache.revalidate_freq=1
    
  • php再読み込みと動作確認(phpと共にOPcachのバージョンが返ってくること)
    # systemctl restart httpd
    
    # php -v
    PHP 7.1.7 (cli) (built: Jul  6 2017 13:31:15) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
        with Zend OPcache v7.1.7, Copyright (c) 1999-2017, by Zend Technologies
    

バックグラウンドジョブの設定

  • cron の設定
    管理画面のBackground jobsをAjaxからCronに変更する。
    # crontab -u apache -e
    
    */15  *  *  *  * php -f /usr/local/nextcloud/cron.php
    

その他の設定

基本的には以上で設定が完了ですが、設定画面の「設定→管理→概要」にてセルフチェックが
行われて対策が表示される場合は指示に従って追加の設定を行います。