ユーザ用ツール

サイト用ツール


serverapps:nextcloud

文書の過去の版を表示しています。


NextCloud

Install

パッケージから入れようと思ってたが、某氏より「ひどい目に合うから本体だけはソースにしとけ」と言われたのもあって、そのようにしてみる

本体

GitHUBからソースを持ってきた

/usr/local/wwwに展開しておく

依存パッケージを調べる

# pkg search -d nextcloud-php83
nextcloud-php83-27.0.0
Comment        : Collaboration platform which runs on your own server
Depends on     :
        php83-session-8.3.0.a2
        php83-opcache-8.3.0.a2
        php83-xsl-8.3.0.a2
        php83-xmlwriter-8.3.0.a2
        php83-xmlreader-8.3.0.a2
        php83-xml-8.3.0.a2
        php83-simplexml-8.3.0.a2
        php83-dom-8.3.0.a2
        php83-ctype-8.3.0.a2
        php83-posix-8.3.0.a2
        php83-fileinfo-8.3.0.a2
        php83-filter-8.3.0.a2
        php83-ldap-8.3.0.a2
        php83-gmp-8.3.0.a2
        php83-bcmath-8.3.0.a2
        php83-8.3.0.a2
        php83-gd-8.3.0.a2
        php83-exif-8.3.0.a2
        php83-curl-8.3.0.a2
        php83-sysvsem-8.3.0.a2
        php83-pcntl-8.3.0.a2
        php83-intl-8.3.0.a2
        php83-pecl-APCu-5.1.22
        gettext-runtime-0.21.1
        php83-pdo_mysql-8.3.0.a2 <- これは外す
        php83-pdo-8.3.0.a2
        php83-mbstring-8.3.0.a2
        php83-iconv-8.3.0.a2
        php83-zlib-8.3.0.a2
        php83-zip-8.3.0.a2
        php83-bz2-8.3.0.a2

DBにはPostgreSQLを使う

# pkg search -d php83-pdo_pgsql
php83-pdo_pgsql-8.3.0.a2
Comment        : The pdo_pgsql shared extension for php
Depends on     :
        php83-8.3.0.a2
        postgresql13-client-13.11
        php83-pdo-8.3.0.a2

phpが13までなのでPostgreSQLは13系列を入れる

webサーバはNginxにする

php関連

という事で入れていく

まずはphp関連

# pkg install php83-session php83-opcache php83-xsl php83-xmlwriter php83-xmlreader php83-xml php83-simplexml php83-dom php83-ctype php83-posix php83-fileinfo php83-filter php83-ldap php83-gmp php83-bcmath php83 php83-gd php83-exif php83-curl php83-sysvsem php83-pcntl php83-intl php83-pecl-APCu gettext-runtime php83-pdo php83-mbstring php83-iconv php83-zlib php83-zip php83-bz2

New packages to be INSTALLED:
        brotli: 1.0.9,1
        curl: 8.1.2
        cyrus-sasl: 2.1.28
        expat: 2.5.0
        fontconfig: 2.14.2,1
        freetype2: 2.12.1_2
        giflib: 5.2.1
        gmp: 6.2.1
        icu: 73.2,1
        jbigkit: 2.1_1
        jpeg-turbo: 2.1.5.1
        libargon2: 20190702
        libdeflate: 1.18
        libgcrypt: 1.10.2
        libgd: 2.3.3_5,1
        libgpg-error: 1.47
        libiconv: 1.17
        liblz4: 1.9.4,1
        libnghttp2: 1.53.0
        libxml2: 2.10.4
        libxslt: 1.1.37
        libzip: 1.10.0
        oniguruma: 6.9.8_1
        openldap26-client: 2.6.4
        pcre2: 10.42
        php83: 8.3.0.a2
        php83-bcmath: 8.3.0.a2
        php83-bz2: 8.3.0.a2
        php83-ctype: 8.3.0.a2
        php83-curl: 8.3.0.a2
        php83-dom: 8.3.0.a2
        php83-exif: 8.3.0.a2
        php83-fileinfo: 8.3.0.a2
        php83-filter: 8.3.0.a2
        php83-gd: 8.3.0.a2
        php83-gmp: 8.3.0.a2
        php83-iconv: 8.3.0.a2
        php83-intl: 8.3.0.a2
        php83-ldap: 8.3.0.a2
        php83-mbstring: 8.3.0.a2
        php83-opcache: 8.3.0.a2
        php83-pcntl: 8.3.0.a2
        php83-pdo: 8.3.0.a2
        php83-pecl-APCu: 5.1.22
        php83-posix: 8.3.0.a2
        php83-session: 8.3.0.a2
        php83-simplexml: 8.3.0.a2
        php83-sysvsem: 8.3.0.a2
        php83-xml: 8.3.0.a2
        php83-xmlreader: 8.3.0.a2
        php83-xmlwriter: 8.3.0.a2
        php83-xsl: 8.3.0.a2
        php83-zip: 8.3.0.a2
        php83-zlib: 8.3.0.a2
        png: 1.6.39
        readline: 8.2.1
        tiff: 4.4.0_1
        webp: 1.3.0_1
        zstd: 1.5.5

Number of packages to be installed: 59

The process will require 173 MiB more space.

Nginx

お次に、Nginx

# pkg install nginx memcached php83-pdo_pgsql php83-pgsql
New packages to be INSTALLED:
      libevent: 2.1.12
      memcached: 1.6.21
      nginx: 1.24.0_6,3
      php83-pdo_pgsql: 8.3.0.a2
      php83-pgsql: 8.3.0.a2
      postgresql13-client: 13.11

Number of packages to be installed: 14

The process will require 1 GiB more space

PostgreSQL

PostgreSQLは別マシンへ

# pkg install postgresql13-client postgresql13-server
New packages to be INSTALLED:
      icu: 73.2,1
      libedit: 3.1.20221030,1
      libffi: 3.4.4
      liblz4: 1.9.4,1
      llvm15: 15.0.7_5
      lua53: 5.3.6
      mpdecimal: 2.5.1
      perl5: 5.32.1_3
      postgresql13-client: 13.11
      postgresql13-server: 13.11
      python39: 3.9.17
      readline: 8.2.1
      zstd: 1.5.5

インストールの最後に表示されるPostgreSQL設定について

  • バキューム:普通Autoなのでいらんけど、独自にやりたいなら以下参照
    • /usr/local/etc/periodic/daily/502.pgsql
  • バックアップ:以下が役に立つかも
    • /usr/local/etc/periodic/daily/502.pgsql

設定

PostgreSQL

rc.conf

/etc/rc.confまたは/etc/rc.conf.localに記述

postgresql_enable="YES"
postgresql_data="/usr/local/pgsql/DATA"

data領域はzfsで別にとるので、disk追加してpool作成

# zpool create zdata /dev/adaxx
# zfs create -o mountpoint=/usr/local/pgsql zdata/pgsql
# mkdir /usr/local/pgsql/DATA
# chown postgres:postgres /usr/local/pgsql/DATA

初期化

# service postgresql initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locales
  COLLATE:  C
  CTYPE:    C.UTF-8
  MESSAGES: C.UTF-8
  MONETARY: C.UTF-8
  NUMERIC:  C.UTF-8
  TIME:     C.UTF-8
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /usr/local/pgsql/DATA ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Japan
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /usr/local/bin/pg_ctl -D /usr/local/pgsql/DATA -l logfile start

pg_hba.conf の編集

外部からの接続を /usr/local/pgsql/data/pg_hba.conf に設定します1)

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
host    all             all             192.168.0.0/24          md5

postgresql.confのlisten_addresses も変更

listen_addresses = '*'

起動

PostgrSQLを起動

# service postgresql start

NextCloud用設定

# psql -h localhost -U postgres
psql (13.11)
Type "help" for help.

postgres=# CREATE ROLE ncadm WITH LOGIN PASSWORD 'ncadmpassword';
CREATE ROLE
postgres=# CREATE DATABASE nc WITH OWNER ncadm TEMPLATE template0 
postgres=# ENCODING UTF8 LC_COLLATE 'ja_JP.UTF-8' LC_CTYPE 'ja_JP.UTF-8';
CREATE DATABASE

Nginx

/usr/local/etc/nginx/nginx.conf

nginx.conf
user www;
worker_processes auto;
worker_cpu_affinity auto;
worker_priority 0;
 
worker_rlimit_nofile 51200;
error_log /var/log/nginx/error.log;
 
events {
  worker_connections 1024;
  multi_accept        on;
  accept_mutex on;
  accept_mutex_delay  100ms;  
}
 
http {
  include       mime.types;
  include       conf.d/proxy;
  include       conf.d/ssl;  default_type  application/octet-stream;
 
  log_format    main '$remote_addr - $remote_user [$time_local] "$request" ';
  access_log    /var/log/nginx/access.log main;
  sendfile on;
  keepalive_timeout 65;
 
  upstream php-handler {
    server 127.0.0.1:9000;
  }

/usr/local/etc/nginx/conf.d/options

options
charset  utf-8;
client_body_timeout  5s;
client_header_timeout  5s;
gzip  off;
gzip_disable  "MSIE [1-6]\.(?!.*SV1)";
gzip_proxied  any;
gzip_static  on;
ignore_invalid_headers  on;
keepalive_disable  none;
keepalive_requests  50;
keepalive_timeout  75s;
limit_req_zone  $binary_remote_addr  zone=gulag:1m   rate=60r/m;
log_format  main  '$remote_addr $host $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $ssl_cipher $request_time';
max_ranges  1;
msie_padding  off;
open_file_cache  max=1000 inactive=2h;
open_file_cache_errors  on;
open_file_cache_min_uses  1;
open_file_cache_valid  1h;
output_buffers  1 512;
postpone_output  1440;
read_ahead  512K;
recursive_error_pages  on;
reset_timedout_connection  on;
send_timeout  15s;
sendfile  on;
server_name_in_redirect  off;
server_tokens  off;
source_charset  utf-8;
tcp_nodelay  on;
tcp_nopush  off;
1)
標準では自分自身からの接続のみを許可しています
serverapps/nextcloud.1690547422.txt.gz · 最終更新: 2023/07/28 12:30 by hayashi