文書の表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== FreeBSD 12でNextcloud 16サーバを作る ====== ===== 試した環境 ===== * FreeBSD 12.0-RELEASE * Apache 2.4.41 * MariaDB 10.3.16 * PHP 7.3.8 * Nextcloud 16.0.2 * /usr/home/www/nextcoludにインストールする ===== 必要なソフトのインストールと設定 ===== うちではPHP 7.1が既に入っており、この機会にPHP 7.3に更新したいので7.1を消しておく。 <code> # pkg remove -g php71\* # pkg remove mod_php71 </code> ==== Apache 2.4 ==== Apacheのインストール。 <code> portmaster www/apache24 </code> 必要なモジュールは以下の通り。 <WRAP group 80% center> <WRAP half column> === 必須 === * REWRITE </WRAP> <WRAP half column> === 推奨 === * ENV * DIR * HEADERS * MIME </WRAP> </WRAP> 必要なモジュールが読み込まれるようにhttpd.confを編集。 <file conf /usr/local/etc/apache24/httpd.conf> NameVirtualHost *:80 ... 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 ... </file> === WebDAVについて === Nextcloudは自前のWebDAVサーバを持っているため、ApacheのWebDAVモジュールは不要。ApacheのWebDAVを使う場合はNextcloudの方は無効にしなければならない。 Nextcloudのサイトの設定を作成。パスは適宜読み替えの事。 <file conf /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> <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> SetEnv HOME /usr/home/www/nextcloud SetEnv HTTP_HOME /usr/home/www/nextcloud </Directory> </file> サイト設定を行っている設定ファイルの中で忘れずにインクルードする。この辺の作法は各々の環境に合わせてください。 <code> <VirtualHost _default_:443> .... Include etc/apache24/Includes/nextcloud.conf.inc </VirtualHost> </code> ==== MariaDB 10.3 ==== <code> # pkg install mariadb103-server mariadb103-client </code> バイナリログ形式、トランザクション分離レベル、文字コード等を変更する。DB全体に影響するので、他のサービスを動かしてたり既存のデータがある場合は要注意。 <file conf /usr/local/etc/my.cnf> [client] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci transaction_isolation = READ-COMMITTED binlog_format = ROW innodb_file_per_table=1 </file> ==== PHP 7.3 ==== <code> # pkg install lang/php73 # cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini </code> 必要なPHPモジュールを入れる。 [[https://docs.nextcloud.com/server/11/admin_manual/installation/source_installation.html#prerequisites-label|公式マニュアル]]を参考に必要なモジュールを''php73-extensions''経由で入れる。 <code> portmaster lang/php73-extensions </code> デフォルトでチェックが入っているものはそのままに、自分はてんこ盛り仕様で以下のモジュールを追加した。 <WRAP group 80% center> <WRAP third column> === 必須 === * CTYPE * CURL * DOM * GD * ICONV * JSON * XML * MBSTRING * OPENSSL * POSIX * SESSION * SIMPLEXML * XMLREADER * XMLWRITER * ZIP * ZLIB * PDO_MYSQL </WRAP> <WRAP third column> === 推奨 === * FILEINFO * BZ2 * INTL </WRAP> <WRAP third column> === オプション === * FTP * EXIF * GMP * PCNTL </WRAP> </WRAP> 更にmod_phpを入れる。 <code> # pkg install mod_php73 </code> mod_phpの設定。 <file conf /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> </file> PHPのメモリ制限を増やす。Nextcloud 16の推奨値は512MB以上となっている。 <file ini /usr/local/etc/php.ini> memory_limit = 1G </code> === ImageMagick === サムネイル生成用にImageMagickを入れる。 <code> # portmaster graphics/ImageMagick7-nox11 </code> PHPのモジュールを入れる。 <code> # pkg install php73-pecl-imagick-im7 </code> === FFmpeg === サムネイル生成用にFFMpegを入れる。 <code> # portmaster multimedia/ffmpeg </code> ===== Nextcloudのインストール ===== {{ :freebsd:nextcloud16_setup.png|}} Nextcloudのzipを取ってきて展開する。 <code> $ cd /usr/home/www $ sudo fetch https://download.nextcloud.com/server/releases/nextcloud-16.0.3.zip $ sudo unzip nextcloud-16.0.3.zip $ sudo chown -R www:www nextcloud </code> ブラウザでNextcloudを置いたURLにアクセスするとセットアップ画面になる。 === 管理者アカウント === Nextcloudの管理者アカウント名とパスワードを入れる。 このアカウント名を元にNextcloud用のDB接続ユーザーも作られるため、普段使いのアカウント名とは別のものにした方が無難かなと。 === データフォルダー === データ置き場をフルパスで指定する。後から変更するのは困難だそうなので熟考のこと。 指定フォルダは予め存在していなければならず、所有者はWebサーバのユーザーの必要がある。 === データベース設定 === MySQLの管理者アカウント、Nextcloud用のDB名、DBのホストを指定する。 Nextcloud用に適切な権限を持った専用ユーザー(''oc_管理者アカウント名'')と専用のDBが自動的に作られる。 「セットアップを完了します」ボタンを押し暫く待つと、Nextcloudのトップ画面が開く。 {{ :freebsd:nextcloud16_welcome.jpg |}} ==== プレビューの文字化け対応 ==== 標準ではテキストファイルのプレビューが文字化けするので、core/fonts/Nunito-Regular.ttf を日本語グリフを含むフォントに置き換えて対処する。詳細→[[blog:2019:2019-12-16]] ==== ユーザー追加 ==== 普段使いのユーザーを追加する。初期管理者でログインしている状態で、左上のアカウントマークをクリック→ユーザーを選択する。 {{ :freebsd:nextcloud16_account_menu.png |}} 「+新しいユーザー」をクリックするとリストに新規ユーザーが追加されるので、項目を埋め、右端のチェックボタンを押す。その後、現在の管理者ユーザーのパスワードを入力するとユーザーが追加される。 {{ :freebsd:nextcloud16_add_user.png |}} ==== バックグラウンドジョブの設定 ==== 定期的にジョブを動かす必要があるっぽいので、Apacheの実行ユーザーwww権限でcronを設定する。 <code> # crontab -u www -e */5 * * * * /usr/local/bin/php -f /usr/home/www/nextcloud/cron.php </code> 5分ほど待って、Nextcloudの設定>管理>基本設定のバックグラウンドジョブに「最終ジョブ実行: ○分前」といった表示があればOK。 ==== メモリキャッシュの設定 ==== 性能向上のため、メモリキャッシュを設定してみる。 キャッシュ機構はAPCu, Redis, Memcachedの3つから選べる。寡聞にしてそれぞれの違いは分からないのだけど、Redisが一番良さそうな気がするものの設定が面倒くさそうなので、何となくナウくてよさげな気がするAPCuを使ってみる。 インストールしてapacheを再起動。 <code> # pkg install php73-pecl-APCu # service apache24 restart </code> nextcloud/config/config.phpにメモリキャッシュの設定を追加。 <code> 'memcache.local' => '\OC\Memcache\APCu', </code> うまく設定できれば、Nextcloudの設定>管理>概要のセキュリティ&セットアップ警告から、メモリキャッシュ云々の文言が消えているはず。 とりあえず設定はしてみたものの、そこまで劇的に早くなった感じはしないような… ===== occコマンド ===== Nextcloudを更新した時に、データベースの不整合警告(主キーやインデックスがないとか)が出ると同時に、occコマンドを使った対処方法が示される。occコマンドは以下のように実行する。 <code> # sudo -u www php /path/to/nextcloud/occ コマンド </code> freebsd/freebsd_12_install_nextcloud_16.txt 最終更新: 2021-02-09 12:07by Decomo