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
5expose_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
7clear_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;
exitnginx配置
定位到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
82upstream 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
简单优化
缓存配置
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
71、将当前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/',