Nextcloud18.0.4 を CentOS7 にインストールしてお手軽に体験してみる

# はじめに
[Nextcloud](https://nextcloud.com/)は、自前のサーバを使って手軽にセキュアなファイル共有環境を実現できるオンラインストレージです。
まずは多くの方にこれを知っていただきたく、最低限に動く環境を構築する手順をまとめてみました。

# 今回構築する環境
## 構成イメージ
こんな感じで、いたってシンプルです。まずはインターネットに出ない環境で試してみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/316764/8e108099-52b2-1b72-4602-169ad77ebd6f.png)
## 利用するOS、ミドルウェア
### サーバOS(CentOS)
今回はCentOS7を利用します。VirtualBoxやVagrantなどで準備いただいても問題ありません。
ここで展開している手順の環境は以下のとおりです。

```
$ cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
$ uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
```
### Nextcloud本体
もちろんこれがないとNextcloudが使えません。
Nextcloudのバージョンはいろいろありますが、2020/4/24時点の最新版である 18.0.4 を使います。

### Webサーバ(Apache)
NextcloudはWebベースで動作しますので、Webサーバが動作する環境が必要です。今回はApacheを使います。
ここで展開している手順でのApacheのバージョンは以下のとおりです。

```
$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Aug  8 2019 11:41:18
```
### PHP
NextcloudはPHPで動作します。
ここで展開している手順でのPHPのバージョンは以下のとおりです。

```
$ php -v
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies
```
### データベース(SQLite)
Nextcloudではデータベースを利用します。本格的な運用ではMariaDB/MySQLといったデータベースを利用することが推奨されますが、今回はお手軽に使ってみるためSQLiteを使います。
ここで展開している手順でのSQLiteのバージョンは以下のとおりです。

```
$ sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
```

# 構築手順
ほぼほぼ[Nextcloud公式ドキュメント](https://docs.nextcloud.com/server/18/admin_manual/installation/source_installation.html#example-installation-on-centos-7-server)にのっている内容です。これに基づいて進めていきます。



①インストール作業に必要なパッケージをインストールします。
  
```
sudo yum install -y epel-release yum-utils unzip curl wget bash-completion bzip2
```
②システムを最新状態にアップデートします。

```
sudo yum update -y
```
③Webサーバ(Apache)をインストールします。

```
sudo yum install -y httpd
```
④Apacheの追加設定ファイルを作成します。

```
sudo vi /etc/httpd/conf.d/nextcloud.conf
```

**※内容※**

```
<VirtualHost *:80>
  DocumentRoot /var/www/html/
  ServerName  (サーバのIPアドレス)

<Directory "/var/www/html/">
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>
```
⑤Apacheを自動起動するように設定し、Apacheを起動します。

```
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
```
⑥Nextcloudの動作に必要なPHPモジュールをインストールします。

```
sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm -y 

sudo yum install --enablerepo=remi,remi-php74 php php-fpm php-cli php-common php-curl php-gd php-mbstring php-mysqlnd php-process php-xml php-opcache php-pecl-apcu php-intl php-pecl-redis php-pecl-zip php-pear -y
```
⑦Nextcloudパッケージ本体とチェックサムファイル(Nextcloudパッケージ本体が正しくダウンロードされているかをチェックするためのファイル)をダウンロードします。

```
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.tar.bz2

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.tar.bz2.md5
```
⑧チェックサムファイルを利用してNextcloudパッケージが正しくダウンロードされているか確認します。

```
md5sum -c nextcloud-18.0.4.tar.bz2.md5 < nextcloud-18.0.4.tar.bz2
```
※`nextcloud-18.0.4.tar.bz2: OK` または ``nextcloud-18.0.4.tar.bz2: 完了` と表示されれば OK です

⑨ダウンロードしたNextcloudパッケージを展開します。

```
tar xf nextcloud-18.0.4.tar.bz2
```
⑩展開したNextcloudをWebサーバのドキュメントルートにコピーします。

```
sudo cp -R nextcloud/ /var/www/html/
```
⑪Nextcloudのデータディレクトリを作成します。

```
sudo mkdir /var/www/html/nextcloud/data
```
⑫Nextcloudのディレクトリ全体で読み書きができるように所有者情報を変更します。

```
sudo chown -R apache:apache /var/www/html/nextcloud
```

⑬Apacheを再起動します。

```
sudo systemctl restart httpd.service
```

⑭SELINUX を無効にします。

```
sudo setenforce 0

sudo sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
```

⑮ブラウザからアクセスできるように、ファイアウォールの設定を変更します。

```
sudo firewall-cmd --permanent --zone public --add-service http

sudo firewall-cmd --reload
```

⑯ブラウザで http://(サーバのIPアドレス)/nextcloud にアクセスします。下のような画面が出ればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/f4cb5c18-13ad-b947-f761-9d4978d1cc3c.png)
⑰初期ユーザー名、パスワードを決めて入力します。さらに「推奨アプリをインストール」のチェックは外しておきます。終わったら「セットアップを完了します」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/1ef47215-cf12-cf48-f9a9-c7d796222bf2.png)
⑱こんな画面が出ればNextcloudが動作しています。おめでとうございます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/74f1327f-5fbc-ed0e-3e49-906722d4a066.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/d690f543-c067-a815-e762-ace53e950336.png)

# あとがき
Nextcloudはサーバー１つあれば気軽に試せますので、使い勝手とかいろいろ試してみてください。

# 更新履歴

* 2019/1/2: 初版。
* 2020/4/25: CentOS7 + Apache2.4 + PHP7.4 + Nextcloud 18 の環境に即した修正、他こまごま修正。