debian下的nextcloud部署

nextcloud简介

1
nextcloud是开源的网络硬盘系统,不仅可以搭建私有云存储和同步数据,也提供联系人、日程管理功能,web端还提供私密的语音视频通话功能,还致力于数据安全,云端的数据均可选择加密,并遵循安全行业最佳实践。客户端支持windows、macos、linux三大pc平台,以及安卓ios两大移动平台,完全足够家庭或中小型团队协作使用。

安装包下载地址:官网下载传送门

软件安装

1
apt-get update && apt-get upgrade
  • 基本组件安装

    1
    apt-get install -y libreoffice ffmpeg
  • nginx安装

    1
    apt-get install -y nginx
  • redis安装

    1
    apt-get install -y redis
  • mariadb安装

    1
    apt-get install mariadb-server
  • php及推荐模块安装

    1
    apt-get install -y php7.4 php7.4-fpm php7.4-curl php7.4-gd php-redis php-mysql php7.4-zip php-mbstring php7.4-dom php7.4-intl

    注:这里可以使用apt-cache search php命令先查询下看看当前源能够支持哪个版本的php,注意nextcloud部分版本是有php版本要求的,如我使用的25.0.2版本就要求至少php7.4

  • 解压nextcloud压缩包

    1
    unzip nextcloud-25.0.2.zip -d /var/www/html/

相关配置

  • 创建数据目录,更改目录权限

    1
    mkdir /var/www/html/nextcloud/data && chown -R www-data:www-data /var/www/html/nextcloud
  • 配置php
    vim /etc/php/7.4/fpm/php.ini
    具体修改以下配置,前面存在;注释的,取消注释,值不一致的修改成一致

    1
    2
    3
    4
    5
    expose_php=off
    date.timezone=Asia/Shanghai
    opcache.enable=1
    opcache.validate_timestamps=1
    opcache.revalidate_freq=30
  • 配置fpm
    vim /etc/php/7.4/fpm/pool.d/www.conf
    具体修改以下配置,前面存在;注释的,取消注释,值不一致的修改成一致

    1
    2
    3
    4
    5
    6
    7
    clear_env=no
    env[HOSTNAME] = $HOSTNAME
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp
    php_admin_value[memory_limit] = 512M
  • 数据库配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 创建root账户
    mysqladmin -uroot password '123456'
    # 登陆mysql
    mysql -uroot -p'123456'
    # 创建数据库和用户
    create user 'nextcloud'@'%' identified by 'nextcloud';
    grant all privileges on nextcloud.* to nextcloud@"%";
    flush privileges;
    exit
  • nginx配置
    定位到site-enabled目录cd /etc/nginx/sites-enabled

    1
    2
    3
    4
    # 修改默认配置端口号,把80端口释放出来
    vim default
    # 创建配置文件
    vim nextcloud

    粘贴以下配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    upstream php-handler {
    server unix:/run/php/php7.4-fpm.sock;
    }

    server {
    listen 80;
    listen [::]:80;
    server_name 192.168.2.15;

    root /var/www/html/nextcloud;

    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }

    location = /.well-known/carddav {
    return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
    return 301 $scheme://$host:$server_port/remote.php/dav;
    }

    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    location / {
    rewrite ^ /index.php;
    }

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
    deny all;
    }
    location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
    deny all;
    }

    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
    fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
    set $path_info $fastcgi_path_info;
    try_files $fastcgi_script_name =404;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $path_info;
    fastcgi_param modHeadersAvailable true;
    fastcgi_param front_controller_active true;
    fastcgi_pass php-handler;
    fastcgi_intercept_errors on;
    fastcgi_request_buffering off;
    }

    location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
    try_files $uri/ =404;
    index index.php;
    }

    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
    try_files $uri /index.php$request_uri;
    add_header Cache-Control "public, max-age=15778463";
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "none" always;
    add_header X-XSS-Protection "1; mode=block" always;
    access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
    try_files $uri /index.php$request_uri;
    access_log off;
    }
    }

启动服务

systemctl restart nginx php7.4-fpm redis-server mariadb

浏览器输入http://192.168.2.15即可访问

简单优化

  • 缓存配置
    vim /var/www/html/nextcloud/config/config.php文件,在最后的);前添加缓存配置:

    1
    2
    3
    4
    5
    'memcache.distributed' => '\\OC\\Memcache\\Redis',
    'redis' => [
    'host' => '127.0.0.1',
    'port' => 6379,
    ],
  • 修改数据存放路径

    1
    2
    3
    4
    5
    6
    7
    # 1、将当前data目录复制到相应路径
    cp -r /var/www/html/nextcloud/data /media/sda1/
    # 2、修改文件夹权限
    chown -R www-data:www-data /media/sda1/data/
    chmod -R 777 /media/sda1/data
    # 3、修改nextcloud配置文件
    vim /var/www/html/nextcloud/config/config.php

    参数值修改成如下

    1
    'datadirectory' => '/media/sda1/data'
  • 修改应用源
    vim /var/www/html/nextcloud/config/config.php

    1
    2
    'appstoreenabled' => true,
    'appstoreurl' => 'https://www.orcy.net/ncapps/v2/',