CentOS 7.3 に Nextcloud をインスト-ルする。
OSS 版の Aipo が 2018 年 03 月 31 日をもって提供終了するので替わりに Nextcloud を導入する事にした。
尚、本手順は外部公開をしない設定なのでセキュリティ-が緩い (HTTP で行う、SELinux の Webインターフェイス経由で更新を有効にしたままにする等)。
外部公開する場合は、Nextcloud 公式サイトのドキュメントを参考にする事。
手順は下記の通り。
- 必要なモジュ-ルをインスト-ルする
- 各モジュールのパラメ-タを設定する
- Nextcloud を配置・設定する
- 補足 テキストファイル参照時に文字化けする場合
- 補足 プロキシ環境下で使用する場合
- 補足 NFS 領域を使用する場合
- 補足 LDAP 認証を使用する場合
1.必要なモジュ-ルをインスト-ルする
1.PHP 7.1 をインスト-ル
1.epel リポジトリインスト-ル
yum install epel-release
2.remi リポジトリインスト-ル
rpm --httpproxy プロキシサ-バのIPアドレス 又は ホスト名 --httpport プロキシサ-バのポ-ト番号 -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
3.PHP インスト-ル
yum install --enablerepo remi-php71 php php-fpm php-gd php-json php-mysql php-curl php-mbstring php-process php-intl php-mcrypt php-imagick php-xml php-zip php-apcu php-opcache
2.Nginx をインスト-ル
1.Nginx リポジトリの追加
『/etc/yum.repos.d/nginx.repo』を新規追加する。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
2.Nginx インスト-ル
yum install nginx
3.MariaDB をインスト-ル
1.MariaDB リポジトリの追加
『/etc/yum.repos.d/MariaDB.repo』を新規追加する。
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
2.MariaDB インスト-ル
yum install MariaDB-server
3.その他のモジュ-ルをインスト-ル
下記コマンドを実行して、インスト-ルする。
yum install wget bzip2
2.各モジュールのパラメ-タを設定する
1.PHP 関連
1.『/etc/php.ini』を修正する。
902行目付近
;date.timezone = date.timezone = "Asia/Tokyo"
2.『/etc/php-fpm.d/www.conf』を修正する。
24行目付近
; RPM: apache Choosed to be able to access some dir as httpd ; user = apache user = nginx ; RPM: Keep a group allowed to write in log dir. ; group = apache group = nginx
40行目付近
; Note: This value is mandatory. ; listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock
51行目付近
;listen.owner = nobody ;listen.group = nobody ;listen.mode = 0660 listen.owner = nginx listen.group = nginx listen.mode = 0660
392行目付近 (コメントアウトから有効行にする)
env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
3.『/etc/php.d/10-opcache.ini』を修正する。
8行目付近
;opcache.enable_cli=0 opcache.enable_cli=1
19行目付近
;opcache.max_accelerated_files=4000 opcache.max_accelerated_files=10000
38行目付近
;opcache.revalidate_freq=2 opcache.revalidate_freq=1
4.ワ-クディレクトリ所有権設定
下記コマンドを実行して、所有権を apache から nginx へ変更する。
chown -R root:nginx /var/lib/php/*
5.サ-ビス起動 及び 自動起動設定
systemctl start php-fpm systemctl enable php-fpm
2.MariaDB関連
1.『/etc/my.cnf.d/server.cnf』を修正する。
12行目付近
[mysqld] innodb_large_prefix=on innodb_file_format=barracuda innodb_file_per_table=true
2.サ-ビス起動 及び 自動起動設定
systemctl start mariadb systemctl enable mariadb
3.下記コマンドを実行して、MariaDB の初期設定をする。
mysql_secure_installation
*
root のパスワ-ド設定や、デフォルトで設定されている匿名ユ-ザ-、テスト DB の削除実施を対話ダイアログで問われる。
4.Nextcloud 用の DB を作成する。
下記コマンドを実行して、MariaDB へ root でログインする。
mysql -u root -p
Nextcloud 用の DB 及び ユ-ザ-を作成する。
CREATE USER 'Nextcloud用ユ-ザ-名'@'localhost' IDENTIFIED BY 'Nextcloud用ユ-ザ-のパスワ-ド';
CREATE DATABASE Nextcloud用DB名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL ON Nextcloud用DB名.* TO 'Nextcloud用ユ-ザ-名'@'localhost' IDENTIFIED BY 'Nextcloud用ユ-ザ-のパスワ-ド';
下記コマンドを実行して、MariaDB のポ-ト番号を確認する。
show variables like 'port';
下記コマンドを実行して、MariaDB からログアウトする。
quit
3.Nginx 関連
1.『/etc/nginx/conf.d/default.conf』を『default.conf.backup』にリネ-ムする。
2.『/etc/nginx/conf.d/server.conf』を新規作成する。
upstream php-handler { server unix:/var/run/php-fpm/php-fpm.sock; } server { listen 80; listen [::]:80; server_name ホスト名; # Add headers to serve security related headers # Before enabling Strict-Transport-Security headers please read into this # topic first. # add_header Strict-Transport-Security "max-age=15768000; # includeSubDomains; preload;"; # # WARNING: Only add the preload option once you read about # the consequences in https://hstspreload.org/. This option # will add the domain to a hardcoded list that is shipped # in all major browsers and getting removed from this list # could take several months. add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Path to the root of your installation root Nextcloudを配置するドキュメントル-ト; location = /robots.txt { allow all; log_not_found off; access_log off; } # The following 2 rules are only needed for the user_webfinger app. # Uncomment it if you're planning to use this app. # rewrite ^/.well-known/host-meta /public.php?service=host-meta last; # rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json # last; location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Enable gzip but do not remove ETag headers 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; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. # pagespeed off; location / { rewrite ^ /index.php$uri; } 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/.+|ocs-provider/.+)\.php(?:$|/) { 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_param HTTPS on; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~ \.(?:css|js|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=15778463"; # Add headers to serve security related headers (It is intended to # have those duplicated to the ones above) # Before enabling Strict-Transport-Security headers please read into # this topic first. # add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; # # WARNING: Only add the preload option once you read about # the consequences in https://hstspreload.org/. This option # will add the domain to a hardcoded list that is shipped # in all major browsers and getting removed from this list # could take several months. add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
*
公式サイトが提供している Nginx サンプル設定に、下記修正を施した内容。
1.HTTP 未使用
2.fastcgi_param_HTTPS on をコメントアウト
3.サ-ビス起動 及び 自動起動設定
systemctl start nginx systemctl enable nginx
4.パケットフィルタリング設定
firewall-cmd --permanent --add-service=http firewall-cmd --reload
3.Nextcloud を配置・設定する
1.適当なディレクトリへ移り (/usr/local/src 等)、 下記コマンドを実行して Nextcloud を取得する。
wget https://download.nextcloud.com/server/releases/nextcloud-バ-ジョン番号.tar.bz2 wget https://download.nextcloud.com/server/releases/nextcloud-バ-ジョン番号.tar.bz2.sha256 wget https://download.nextcloud.com/server/releases/nextcloud-バ-ジョン番号.tar.bz2.asc wget https://nextcloud.com/nextcloud.asc
2.チェックサムの確認
sha256sum -c nextcloud-バ-ジョン番号.tar.bz2.sha256 < nextcloud-バ-ジョン番号.tar.bz2
*
正常なら”完了”と出力される。
3.署名確認
1.公開鍵インポ-ト
gpg --import nextcloud.asc
2.署名確認
gpg --verify nextcloud-バ-ジョン番号.tar.bz2.asc nextcloud-バ-ジョン番号.tar.bz2
*
正常なら”Nextcloud Security [email protected]”からの正しい署名”と出力される。
4.Nextcloud 展開・配置
1.下記コマンドを実行して、Nextcloud を展開する。
tar -xjf nextcloud-バ-ジョン番号.tar.bz2
2.設置
mv ./nextcloud Nextcloudを配置するドキュメントル-ト
3.所有権設定
chown -R nginx:nginx Nextcloudを配置したドキュメントル-ト
5.SELinux 設定
1.ラベル再設定
下記コマンドを実行して、配置した Nextcloud ディレクトリの SELinux ラベルを再設定する。
restorecon -R Nextcloudを配置したドキュメントル-ト
2.ポリシ-設定
以下のポリシ-をOnにする。
httpd_unified
ポリシ-のパラメ-タ値を確認するコマンド
getsebool -a | grep キ-ワ-ド
ポリシ-のパラメ-タ値を設定するコマンド
setsebool -P ポリシ-名=on
6.Web ブラウザから初期設定をする。
Web ブラウザから『http://Nextcloud インスト-ルマシンの IPアドレス 又は ホスト名』にアクセスして画面ダイアログに従って入力する。
7.APCu 設定
『nextcloud/config/config.php』に追記修正する。
$CONFIG = array ( 中略 'memcache.local' => '\\OC\\Memcache\\APCu', );
8.バックグラウンドジョブ設定
下記コマンドを実行して、nginx ユ-ザ-の cron ジョブを設定する。
crontab -u nginx -e
下記1行を追記する。
*/15 * * * * php -f Nextcloudドキュメントル-ト/cron.php
下記コマンドを実行して、nginx ユ-ザ-の cron ジョブを確認する。
crontab -u nginx -l
Web ブラウザより管理者で Nextcloud にログインし、『設定』⇒『Administratorion 基本設定』のバックグラウンドジョブに『Cron』を選択する。
4.補足 テキストファイル参照時に文字化けする場合
1.『nextcloud/apps/files_texteditor/lib/Controller/FileHandlingController.php』を修正する。
100行目付近
/** $encoding = mb_detect_encoding($fileContents . 'a', 'UTF-8, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII', true); */ $encoding = mb_detect_encoding($fileContents . 'a', 'SJIS-win, UTF-8, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII', true);
2.下記コマンドを実行して、サ-ビスを再起動する。
systemctl restart php-fpm systemctl restart nginx
5.補足 プロキシ環境下で使用する場合
1.『nextcloud/config/config.php』に追記修正する。
$CONFIG = array ( 中略 'proxy' => 'プロキシサ-バ-の IPアドレス 又は ホスト名:ポ-ト番号', );
2.ポリシ-設定
以下のポリシ-をOnにする。
httpd_can_network_connect
httpd_can_network_relay
ポリシ-のパラメ-タ値を確認するコマンド
getsebool -a | grep キ-ワ-ド
ポリシ-のパラメ-タ値を設定するコマンド
setsebool -P ポリシ-名=on
3.下記コマンドを実行して、サ-ビスを再起動する。
systemctl restart php-fpm systemctl restart nginx
6.補足 NFS 領域を使用する場合
1.ポリシ-設定
以下のポリシ-をOnにする。
httpd_use_nfs
ポリシ-のパラメ-タ値を確認するコマンド
getsebool -a | grep キ-ワ-ド
ポリシ-のパラメ-タ値を設定するコマンド
setsebool -P ポリシ-名=on
2.外部ストレ-ジ設定
1.アプリ有効化
Web ブラウザより管理者で Nextcloud にログインし、『アプリ』⇒『External storage support 』を有効化する。
2.外部ストレ-ジ設定
Web ブラウザより管理者で Nextcloud にログインし、『設定』⇒『Administration 外部ストレ-ジ』を選択して、設定する。
7.補足 LDAP 認証を使用する場合
1.php-ldap インスト-ル。
yum install --enablerepo remi-php71 php-ldap
2.LDAP 認証設定
1.アプリ有効化
Web ブラウザより管理者で Nextcloud にログインし、『アプリ』⇒『LDAP user and group backend 』を有効化する。
2.LDAP 認証設定
Web ブラウザより管理者で Nextcloud にログインし、『設定』⇒『Administration LDAP / AD 統合』を選択して、設定する。
ファイル管理がメインだけど、アプリにメ-ル、カレンダー、タスクってあるから Aipo の替わりとして結構使えそう。
参考元
- CentOS7にnginxでNextcloudをインストール
- Nextcloud 13 Administration Manual
- mariadb mysql ポート番号を調べる
- プロキシ設定まとめ
- CentOS7 に 旧 APC (apcu & opcache)を導入する
- CentOS6.3にphpshをインストールする
- owncloud (Ver. 8.1.1) texteditor Shift-JIS の文字化け対処
- 祝日のリストが欲しい