NextCloudの導入
NextCloudとは、DropboxやGoogle Driveのようなオンラインストレージを構築できるオープンソースのソフトウェアである。クライアントからオンラインストレージへは、WebDAVを使ってアクセスすることができる。また、連絡先やカレンダーの機能もあり、そちらもCardDAV、CalDAVを通して利用できる。
Apache HTTP ServerとPHP(7.2か7.3か7.4)、MySQL Serverが必要となるので、あらかじめインストールしておく。
また、PHPのモジュールとしては、以下が必要となるので、それもあらかじめインストールしておく。
- PHP module ctype
- PHP module curl
- PHP module dom
- PHP module GD
- PHP module iconv
- PHP module JSON
- PHP module libxml
- PHP module mbstring
- PHP module openssl
- PHP module pdo_mysql
- PHP module posix
- PHP module session
- PHP module SimpleXML
- PHP module XMLReader
- PHP module XMLWriter
- PHP module zip
- PHP module zlib
PHPの設定を変更しておく。
vi /etc/php.ini
memory_limit = 512M
post_max_size = 128M
upload_max_filesize = 128M
NextCloudでは、セッションを管理したり、ファイルのロック管理をしたりしている。このデータ管理のために、インメモリキャッシュサーバRedisをインストールする。
dnf install -y redis
systemctl enable redis.service
systemctl start redis.service
/var/www/ディレクトリへ移動してから、NextCloudをダウンロードする。
cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-20.0.0.zip
ダウンロードしたZIPファイルを展開する。
unzip nextcloud-20.0.0.zip
dataディレクトリを作成する。
mkdir /var/www/nextcloud/data
nextcloudディレクトリの所有者、所有グループを、Apache HTTP Serverの実行ユーザー、実行グループに合わせる。
chown -R apache.apache nextcloud
nextcloudのhttpd設定ファイルを作成する。
vi /etc/httpd/conf.d/nextcloud.conf
Alias /nextcloud "/var/www/nextcloud/"
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
httpdサービス、php-fpmを再起動する。
systemctl restart httpd
systemctl restart php-fpm
SELinuxを有効にしている場合、許可ルールの追加が必要である。
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
restorecon -Rv '/var/www/nextcloud/'
setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_connect_ldap on
setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_memcache on
setsebool -P httpd_can_sendmail on
setsebool -P httpd_use_cifs on
setsebool -P httpd_use_fusefs on
setsebool -P httpd_use_gpg on
NextCloud用のデータベース、データベースユーザーを作成する。
mysql -u root -p
create database nextcloud;
create user 'nextcloud'@'localhost' identified by 'password';
grant all privileges on nextcloud.* to 'nextcloud'@'localhost';
flush privileges;
exit
NextCloudのoccコマンドを使って、インストールする。
(ブラウザから行う方法もあるが、なぜかタイムアウトしてしまう)
cd /var/www/nextcloud/
sudo -u apache php occ maintenance:install --database "mysql" --database-name "nextcloud" --database-user "nextcloud" --database-pass "password" --admin-user "nextcloud" --admin-pass "password"
アクセスに使用されるURLのドメインをconfig/config.phpのtrusted_domainsに追加する。
例えば、example.comを使ってアクセスする場合、以下のようにする。
vi config/config.php
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'example.com'
),
ブラウザで、http://[IPアドレス]/nextcloud/ へアクセスする。ログイン画面が表示される。

ログインすると、このような画面になる。
