目次

FreeBSD 11でNextcloud 11サーバを作る

試した環境

必要なソフトのインストールと設定

Apache 2.4

Apacheのインストール。

portmaster www/apache24

必要なモジュールは以下の通り。

必須

  • REWRITE

推奨

  • ENV
  • DIR
  • HEADERS
  • MIME

必要なモジュールが読み込まれるようにhttpd.confを編集。

/usr/local/etc/apache24/httpd.conf
...
LoadModule mime_module libexec/apache24/mod_mime.so
LoadModule env_module libexec/apache24/mod_env.so
LoadModule headers_module libexec/apache24/mod_headers.so
LoadModule dir_module libexec/apache24/mod_dir.so
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
...

Nextcloudのサイトの設定を作成。パスは適宜読み替えの事。

/usr/local/etc/apache24/Includes/nextcloud.conf.inc
Alias /nextcloud "/usr/home/www/nextcloud/"
 
<Directory /usr/home/www/nextcloud/>
  Options +FollowSymlinks
  AllowOverride All
 
 <IfModule mod_dav.c>
  Dav off
 </IfModule>
 
 SetEnv HOME /usr/home/www/nextcloud
 SetEnv HTTP_HOME /usr/home/www/nextcloud

MariaDB 10.1

サーバを入れるとクライアントも一緒に入る。

portmaster databases/mariadb101-server

バイナリログの形式をMIXEDにする。DB全体に影響するので、他のサービスを動かしてる場合は要注意。

/usr/local/etc/my.cnf
[mysqld]
binlog_format = MIXED # mysqldセクションに追加する

PHP 7.1

# portmaster lang/php71
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

必要なPHPモジュールを入れる。

公式マニュアルを参考に必要なモジュールをphp71-extensions経由で入れる。

portmaster lang/php71-extensions

デフォルトでチェックが入っているものはそのままに、自分はてんこ盛り仕様で以下のモジュールを追加した。

必須

  • CTYPE
  • DOM
  • GD
  • ICONV
  • JSON
  • XML
  • MBSTRING
  • POSIX
  • SIMPLEXML
  • XMLWRITER
  • ZIP
  • ZLIB
  • MYSQLI
  • PDO_MYSQL

推奨

  • CURL
  • FILEINFO
  • BZ2
  • INTL
  • MCRYPT
  • OPENSSL

オプション

  • FTP
  • EXIF
  • GMP
  • PCNTL

更にmod_phpを入れる。

# portmaster www/mod_php71

mod_phpの設定。

/usr/local/etc/apache24/httpd.conf
...
LoadModule php7_module        libexec/apache24/libphp7.so
...
 
<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

ImageMagick

サムネイル生成用にImageMagickを入れる。

# portmaster graphics/ImageMagick-nox11

PHPのモジュールが必要になるが、graphics/pecl-imagickはPHP 5.6用なので使えない。よってPECLから手動で入れる必要があるが、peclコマンドを使うためにまずはdevel/pearを入れる。

# portmaster devel/pear

続いてimagickを入れるが、pcre.hが見つからんと怒られるので、インクルードパスを通してpeclコマンドを実行する必要がある。

# C_INCLUDE_PATH=/usr/local/include pecl install imagick

imagick.soをPHPに組み込む。

/usr/local/etc/php/ext-99-my.ini
extension=imagick.so

FFmpeg

サムネイル生成用にFFMpegを入れる。

# portmaster multimedia/ffmpeg

Nextcloudのインストール

ZIPを取ってきて展開する。

cd /usr/home/www/nextcloud
sudo fetch https://download.nextcloud.com/server/releases/nextcloud-12.0.2.zip
sudo unzip nextcloud-12.0.2.zip
sudo chown -R www:www nextcloud

ブラウザからアクセスし、各種情報を入力。

管理者アカウント 管理者アカウント名とパスワードを入力する。
このアカウント名はDBのユーザー名にも使われるので、気にする人は要注意。
データフォルダ アップロードしたファイルなどの実データを保存するディレクトリを指定する。
Webサーバのドキュメントルート外が推奨されており、また所有者はWebサーバを動かしてるユーザーと同一にしなければならない。後から場所を変更するのは難しいらしいので、これまた要注意。
データベースの設定 MySQL/MariaDBを選択し、アカウント情報、Nextcloud用のDB名を入れる。
管理者権限アカウントを入力すると、DBとNextcloud用の権限が抑えられたアカウント(先の管理者アカウント名にoc_が付いたもの)が自動で生成され、実運用ではその専用アカウントが使われるようになる。

「セットアップを完了します」を押して暫く待ち、ウェルカム画面が表示されれば成功。