nextcloud
是一款开源私有云方案,GitHub开源地址:Nextcloud,也就是说,可以用nextcloud
来搭建私有同步网盘。
之前就有搭建私有网盘的需求,毕竟国外网盘容量小,速度慢,国内目前也就只有115和百度云在苟延残喘,115已是半残,百度云限速不说,还会将小姐姐变成8秒教育片,先不论这种偷窥个人网盘隐私的行为是否违法,要知道百度云删除这些东西的时候可没有告知用户,更不用说任何的提醒和交流了,把资料,特别是涉及个人隐私的资料放在百度云实在是放心不下。
总的来看目前公有网盘大都不能满足需求,也就催生了一大批开源私有网盘,nextcloud
就是其中之一。
搭建私有网盘,我一开始用的是seafile
,毕竟开源,并且是国人开发,感觉本地化工作会做得更好,中文文档也会更好读,而且企业版只要3个人以下使用就是免费的,可以说很良心了,当然了,缺点还是有的,就是界面太丑。
起初按照文档搭建seafile
,两天时间反反复复看文档查教程也没成功,最后实在没耐心放弃了。
而后准备转战owncloud
,不过在了解一番之后,发现有个owncloud
的继承者:nextcloud
,据说是owncloud
的团队脱离出来后开发的一个网盘,不过nextcloud
在很大程度上跟owncloud
很像,甚至可以说就是owncloud
了,不过按照很多人的说法,nextcloud
似乎更良心(这是看了这么多对比文章之后给我的感觉),所以就直接用上nextcloud
了。
事实上,搭建nextcloud
更好的方式是通过docker搭建,不过之前的seafile
搭建失败,很大一部分原因就是因为用了以前没接触过的docker,所以这次就直接搭建,等熟悉之后再用docker。
如果可以的话,还是推荐使用docker搭建。
环境搭建
nextcloud存在网页前端,所以可以配置lnmp环境,以启用网页前端。
MySQL
首先需要配置源,进入MariaDB官网定制MariaDB的官方源,选择合适MariaDB版本。如CentOS 7
选择:CentOS > CentOS 7 (x86_64) > 10.3 [Stable],配置源的方法在官网页面选择源之后,页面下方会显示出来。
之后将官网的配置复制下来,添加为源:
1# 编辑源
2vim /etc/yum.repos.d/MariaDB.repo
3
4# 将复制来的配置填入
5# MariaDB 10.2 CentOS repository list - created 2018-01-27 07:39 UTC
6# http://downloads.mariadb.org/mariadb/repositories/
7[mariadb]
8name = MariaDB
9baseurl = http://yum.mariadb.org/10.3/centos7-amd64
10gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
11gpgcheck=1
12
13# 安装MariaDB
14yum install MariaDB-server -y
15
16# 启动服务并设置开机启动
17systemctl start mariadb
18systemctl enable mariadb
之后是设置MariaDB 此步,主要是MariaDB的安全设置,第一次安装mysql需要运行此命令:
1mysql_secure_installation
因为是初次设置MariaDB,root密码是空的,所以在要求输入密码时直接回车,数据库相关设置里面直接全都输入y就行了
输出示例 1Setting the root password ensures that nobody can log into the MariaDB
2root user without the proper authorisation.
3
4# 是否设置root密码,建议设置密码以提高安全性,输入y并回车
5Set root password? [Y/n] y
6
7# 设置密码
8New password:
9
10# 再次输入密码
11Re-enter new password:
12
13# 下面是数据库相关设置
14...
15Remove anonymous users? [Y/n] y # 删除匿名用户
16...
17
18Disallow root login remotely? [Y/n] y # 禁止root远程登录
19...
20
21Remove test database and access to it? [Y/n] y # 删除test数据库
22...
23
24Reload privilege tables now? [Y/n] y # 刷新权限
25...
26Thanks for using MariaDB!
Php-fpm
安装php用webtatic源,更新较快,且其命名有自己的特色方式,可以避免与其他源的某些冲突
1# 配置PHP源
2rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
3rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
4
5# 安装PHP以及PHP扩展
6yum install php72w-fpm -y
7yum install php72w-gd php72w php72w-mysqlnd php72w-pdo php72w-mcrypt php72w-mbstring php72w-xmlrpc php72w-intl php72w-devel php72w-pecl-imagick php72w-process php72w-xml php72w-opcache -y
8
9# 启动服务并设置开机启动
10systemctl start php-fpm
11systemctl enable php-fpm
出现Requires: libMagickWand.so.5()(64bit)的解决办法如果在安装过程中出现以下错误提示:
Error: Package: php-magickwand-1.0.9-6.el7.x86_64 (epel)
Requires: libMagickWand.so.5()(64bit)
就去掉php扩展中的php72w-pecl-imagick
,把其他扩展先装上,然后按照以下方式安装此扩展:
1yum install ImageMagick ImageMagick-devel gcc
如果装不了gcc就用这个命令:
1yum install gcc gcc-c++ autoconf automake
最后再安装imagick
1pecl install imagick
2echo "extension=imagick.so" >> /etc/php.ini
3systemctl restart php-fpm
安装好后需要进行配置,先替换以下内容:
1# 编辑配置文件
2vim /etc/php.ini
3
4
5######### 修改以下内容 #########
6
7;cgi.fix_pathinfo=1
8# 改为
9cgi.fix_pathinfo=0
10
11memory_limit = 64M
12# 改为
13memory_limit = 512M
说明
- 修改
cgi.fix_pathinfo
的值是为了避免nginx文件类型错误解析漏洞 - nextcloud的运行建议使用512M以上的内存限制
使用socket方式连接php-fpm和mysql对于php-fpm和mysql来说,相比于使用端口链接,使用socket方式连接数据库可以获得更好的性能,唯一的缺点就是使用socket连接的php-fpm和mysql必须部署在同一台主机内。
这一个配置不是必须的,酌情选择。
如果需要使用socket方式连接php-fpm和mysql,则还需要增加以下配置
1# 编辑配置文件
2vim /etc/php.ini
3
4# 在[Pdo_mysql]下方添加一行,如果没有[Pdo_mysql]这一行,则自行加入
5pdo_mysql.default_socket = /dev/shm/mysql.sock
6
7
8# 编辑配置文件
9vim /etc/my.cnf
10
11# 在[mysqld]下方添加一行,与上面的配置同理
12socket = /dev/shm/mysql.sock
另外/etc/php-fpm.d/www.conf
也需要改动,改动的地方较多,就不一一列举,改动后的文件如下(已去除注释行和空行):
1[www]
2user = nginx
3group = nginx
4listen = /dev/shm/php-cgi.sock
5listen.owner = nginx
6listen.group = nginx
7listen.allowed_clients = 127.0.0.1
8pm = static
9
10# 如果内存较小,例如512M,则下面的12可以改为4,同时不建议在这么小的机子上跑这么重的php-fpm
11pm.max_children = 12
12
13slowlog = /var/log/php-fpm/www-slow.log
14env[HOSTNAME] = $HOSTNAME
15env[PATH] = /usr/local/bin:/usr/bin:/bin
16env[TMP] = /tmp
17env[TMPDIR] = /tmp
18env[TEMP] = /tmp
19php_admin_value[error_log] = /var/log/php-fpm/www-error.log
20php_admin_flag[log_errors] = on
21php_admin_value[memory_limit] = 512M
22php_value[session.save_handler] = files
23php_value[session.save_path] = /var/lib/php/session
24php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
以上是我个人在用的配置,修改后可以通过以下命令查看生效的配置:
1sed '/^;\|^$/d' /etc/php-fpm.d/www.conf
php-fpm有个很好用的插件:opcache
。opcache能极大加快php脚本的执行速度,最核心的思想就是使用缓存,关于opcache的介绍很多,这里直接搬一个现成的:
Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。
上面已经安装了php-opcache
,添加个配置进行启用就可以了,编辑配置文件:
1vim /etc/php.d/opcache.ini
然后按照nextcloud的提示,修改opcache的配置如下:
1[opcache]
2zend_extension=opcache.so
3opcache.enable=1
4opcache.enable_cli=1
5opcache.interned_strings_buffer=8
6opcache.max_accelerated_files=10000
7opcache.memory_consumption=128
8opcache.save_comments=1
9opcache.revalidate_freq=1
然后重启php-fpm即可生效
1systemctl restart php-fpm
Nginx
官方nginx有两个版本,mainline和stable,即开发版和稳定版,区别是前者引入新特性但可能有新bug,后者足够稳定。事实上,两者均比较稳定,nginx的网站总是运行在mainline版上,不过还是推荐新手选择稳定版。
1# 编辑repo文件
2vim /etc/yum.repos.d/nginx.repo
3
4# 写入如下内容
5[nginx]
6name=nginx repo
7baseurl=http://nginx.org/packages/centos/7/$basearch/
8gpgcheck=0
9enabled=1
10
11# 安装nginx
12yum install nginx -y
13
14# 启动服务并设置开机启动
15systemctl start nginx
16systemctl enable nginx
这时lnmp环境就安装成功了。
安装Nginx之后存在一个默认配置,只要前面配置没有错误,那么nginx启动之后就可打开默认网页。
直接用浏览器打开主机IP地址或者域名,就可以看到nginx的欢迎页面,说明nginx已经在工作了。
假设IP地址为1.2.3.4,域名为pan.wenjinyu.me ,能用域名打开的前提是已经设置了解析,不知道怎么设置解析可以移步设置域名解析:给域名设置一些实用有趣的二级域名。
此时lnmp环境就安装完成了。
安装
nextcloud可以直接从 官网 下载,只需要进行简单的配置就可以直接使用。
例如当前的最新版本是18.0.4
,则运行:
1mkdir /var/www
2cd /var/www/
3wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip
4unzip nextcloud-*.zip
5chown -R nginx:nginx /var/www/nextcloud
配置
Nginx
先添加一个配置文件
1vim /etc/nginx/conf.d/nextcloud.conf
然后添加下列内容
1upstream php-handler {
2 server unix:/dev/shm/php-cgi.sock;
3}
4
5server {
6 listen 443 ssl;
7 server_name netdisk.wenjinyu.me;
8 ssl_certificate /etc/letsencrypt/live/netdisk.wenjinyu.me/fullchain.pem;
9 ssl_certificate_key /etc/letsencrypt/live/netdisk.wenjinyu.me/privkey.pem;
10 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
11 add_header X-Content-Type-Options nosniff;
12 add_header X-XSS-Protection "1; mode=block";
13 add_header X-Robots-Tag none;
14 add_header X-Download-Options noopen;
15 add_header X-Permitted-Cross-Domain-Policies none;
16 add_header Referrer-Policy "no-referrer";
17 add_header X-Frame-Options SAMEORIGIN;
18 add_header Cache-Control "public, max-age=15778463";
19 root /var/www/nextcloud/;
20 error_log /var/log/wenjinyu/nextcloud-error.log;
21
22 location = /robots.txt {
23 allow all;
24 log_not_found off;
25 access_log off;
26 }
27
28 location = /.well-known/carddav {
29 return 301 $scheme://$host/remote.php/dav;
30 }
31
32 location = /.well-known/caldav {
33 return 301 $scheme://$host/remote.php/dav;
34 }
35
36 client_max_body_size 512M;
37 fastcgi_buffers 64 4K;
38 proxy_buffering off;
39 gzip on;
40 gzip_vary on;
41 gzip_comp_level 4;
42 gzip_min_length 256;
43 gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
44 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;
45
46 location / {
47 rewrite ^ /index.php$request_uri;
48 }
49
50 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
51 deny all;
52 }
53
54 location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
55 deny all;
56 }
57
58 location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
59 fastcgi_split_path_info ^(.+?\.php)(/.*)$;
60 include fastcgi_params;
61 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
62 fastcgi_param PATH_INFO $fastcgi_path_info;
63 fastcgi_param HTTPS on;
64 fastcgi_param modHeadersAvailable true;
65 fastcgi_param front_controller_active true;
66 fastcgi_pass php-handler;
67 fastcgi_intercept_errors on;
68 fastcgi_request_buffering off;
69 }
70
71 location ~ ^/(?:updater|ocs-provider)(?:$|/) {
72 try_files $uri/ =404;
73 index index.php;
74 }
75
76 location ~ \.(?:css|js|woff|svg|gif)$ {
77 try_files $uri /index.php$request_uri;
78 access_log off;
79 }
80
81 location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
82 try_files $uri /index.php$request_uri;
83 access_log off;
84 }
85}
86
87server
88{
89 listen 80;
90 server_name netdisk.wenjinyu.me;
91 return 301 https://$server_name$request_uri;
92}
注意要将其中的域名改成自己的域名,如果没有按照本教程的路径放置nextcloud文件夹,还需要修改网站根目录的路径,需要修改的地方已经在上面标出来了。
改完后重载nginx:
1nginx -s reload
MySQL
nextcloud的数据需要使用MySQL数据库程序进行管理,所以需要在MySQL中先新建一个用户和数据库以供nextcloud使用
1# 进入MySQL
2mysql -u root -p
3
4# 创建一个名为nextclud_db的数据库
5CREATE DATABASE nextcloud_db;
6
7# 创建一个名为nextcloud、密码也为nextcloud的用户
8CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
9
10# 赋予用户nextcloud对数据库nextcloud_db的所有操作权限
11GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud'@'localhost';
12
13# 刷新数据库权限
14FLUSH PRIVILEGES;
15
16# 退出
17exit
Nextcloud
现在就可以用浏览器打开nextcloud了:
点击查看网站打不开的解决办法 如果网页打不开,那么有一个很简单的方法可以排查问题:
先分别运行下面三条命令,查看三个nextcloud所需要的组建的运行状态:
1systemctl status nginx
2systemctl status mysql
3systemctl status php-fpm
如果在运行结果中都能看到绿色的active (running)
字样,例如下面这个样子
那么说明这三个组件的是没问题的,错误的地方就可能是nginx的配置文件/etc/nginx/conf.d/nextcloud.conf
,可以直接编辑:
1vim /etc/nginx/conf.d/nextcloud.conf
然后跟上面的配置文件有何差别,一定要记住修改文中提示的部分,其他的都不要修改,修改完或者查看之后确定没问题,那么就运行下面命令将三个组件重启,因为也有可能是有些修改需要重启生效但是修改后忘了重启:
1systemctl restart nginx
2systemctl restart mysql
3systemctl restart php-fpm
然后再确认一遍网址解析是否有误:如果直接用ip能访问,而网址不能,那么就是网址解析的问题了。
之后再打开网页看看,如果还不行可以在下面留言。
第一次登陆需要创建管理员账号
,输完之后点击存储&数据库
,接下来的配置可以参照下面的设置:
管理员密码
任意设置,数据库密码
如果是按照本教程的例子设置的,那么就是nextcloud
,需要注意的是,配置数据库
需要选择第二个MySQL/MariaDB
,至于理由也在刚登陆时显示的性能警告
中提到了。
如果配置没有什么问题就可以登陆了:
Redis
配置redis缓存能让网盘访问更快速,也能降低系统负载,对于小内存VPS来说更是效果显著,如果不进行配置,也可以在nextcloud网页版 -> 设置
-> 概览
里面看到这样的提示:
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见[文档]。
1yum install redis php-redis
在ubuntu/debian上安装redisubuntu/debian,那么安装的是 redis-server
1apt-get install redis-server php-redis
将redis的连接方式从TCP改为socket可增加redis和php-fpm的连接性能,所以推荐将redis配置为socket连接方式。
关于socketredis可以使用常规的TCP连接,也就是让redis监听127.0.0.1:6379
,这是redis默认的设置,不过,如果redis的客户端和服务端都在同一个服务器内,更推荐使用socks方式,能提升性能。
UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。
打开redis配置文件:
1vim /etc/redis.conf
作如下修改:
1# 监听端口改为0
2port 0
3
4# 只监听本地端口
5bind 127.0.0.1
6
7# 添加unix socket监听,/dev/shm/是挂载在内存的临时文件夹,具体可搜索tmpfs
8unixsocket /dev/shm/redis.sock
9
10# 设置socket权限
11unixsocketperm 775
12
13# 设置密码
14requirepass H#p$#9kNn#ol8NLBtoiy89FV6098@
最后启动生效即可
1# 启动redis
2systemctl start redis
3systemctl enable redis
4
5# 把redis添加进相应的用户组,以nginx为例
6usermod -g nginx redis
安装好redis后需要在nextcloud中启用,直接在nextcloud的配置文件修改即可:
1vim /var/www/nextcloud/config/config.php
在最后一行的);
上面添加配置:
1 'memcache.local' => '\\OC\\Memcache\\Redis',
2 'memcache.locking' => '\\OC\\Memcache\\Redis',
3 'filelocking.enabled' => 'true',
4 'redis' => array(
5 'host' => '/dev/shm/redis.sock',
6 'port' => 0,
7 'dbindex' => 0,
8 'password' => 'H#p$#9kNn#ol8NLBtoiy89FV6098@',
9 'timeout' => 1.5,
10 ),
注意:
- 在
'redis'
里面,只有'host'
和'port'
是必须要有的,其他的都是可选项。
使用
按照上面的教程安装完nextcloud之后就可以使用了,可以在官网下载对应的客户端:https://nextcloud.com/install/#install-clients
以下以Windows客户端为例子。
安装nextcloud后打开,先输入服务器IP地址,如果设置了域名解析,那么可以直接输入网盘的域名。
域名解析设置可以参考这篇文章:设置域名解析:给域名设置一些实用有趣的二级域名。
输入服务器地址之后使用设置的用户密码登陆即可:
登陆之后选择同步文件夹,这里需要注意,如果本地需要同步的文件并不是放在一起的,例如我有些文件常用到,就放在桌面,而有些重要但又不常用到的备份文件就放在D盘,这种时候就不要选择同步服务器的所有内容
,而要选择下面的跳过文件夹设置
,否则就只能同步一个文件夹,无法添加其他文件夹。
此时进入了nextcloud,点击账户名称下面的添加文件夹
,
选择需要同步的文件夹,然后下一步
,再新建一个存放在网盘上的同步文件夹,
最后确认添加链接就可以开始同步了。
问题解决
网页版一直在登录页面循环
如果登录时输入了正确的帐号密码,url也已经是进入网盘的网址,但是却仍停留在登录页面,其实是使用php部分文件夹的时候,nginx的权限不够,运行以下命令即可解决:
1chown nginx:nginx /var/lib/php/session/
2chown root:nginx /var/lib/php/wsdlcache/
3chown root:nginx /var/lib/php/opcache/
Linux客户端没有记住密码
Linux上的客户端在使用的时候,如果每次打开都需要重新输入用户名和密码进行登录,其实只是缺少一个依赖而已:
1dnf install libgnome-keyring
最后更新于 2018 年 11 月 01 日评论正在加载中...目录
1Setting the root password ensures that nobody can log into the MariaDB
2root user without the proper authorisation.
3
4# 是否设置root密码,建议设置密码以提高安全性,输入y并回车
5Set root password? [Y/n] y
6
7# 设置密码
8New password:
9
10# 再次输入密码
11Re-enter new password:
12
13# 下面是数据库相关设置
14...
15Remove anonymous users? [Y/n] y # 删除匿名用户
16...
17
18Disallow root login remotely? [Y/n] y # 禁止root远程登录
19...
20
21Remove test database and access to it? [Y/n] y # 删除test数据库
22...
23
24Reload privilege tables now? [Y/n] y # 刷新权限
25...
26Thanks for using MariaDB!
Php-fpm
安装php用webtatic源,更新较快,且其命名有自己的特色方式,可以避免与其他源的某些冲突
1# 配置PHP源
2rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
3rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
4
5# 安装PHP以及PHP扩展
6yum install php72w-fpm -y
7yum install php72w-gd php72w php72w-mysqlnd php72w-pdo php72w-mcrypt php72w-mbstring php72w-xmlrpc php72w-intl php72w-devel php72w-pecl-imagick php72w-process php72w-xml php72w-opcache -y
8
9# 启动服务并设置开机启动
10systemctl start php-fpm
11systemctl enable php-fpm
出现Requires: libMagickWand.so.5()(64bit)的解决办法如果在安装过程中出现以下错误提示:
Error: Package: php-magickwand-1.0.9-6.el7.x86_64 (epel)
Requires: libMagickWand.so.5()(64bit)
就去掉php扩展中的php72w-pecl-imagick
,把其他扩展先装上,然后按照以下方式安装此扩展:
1yum install ImageMagick ImageMagick-devel gcc
如果装不了gcc就用这个命令:
1yum install gcc gcc-c++ autoconf automake
最后再安装imagick
1pecl install imagick
2echo "extension=imagick.so" >> /etc/php.ini
3systemctl restart php-fpm
安装好后需要进行配置,先替换以下内容:
1# 编辑配置文件
2vim /etc/php.ini
3
4
5######### 修改以下内容 #########
6
7;cgi.fix_pathinfo=1
8# 改为
9cgi.fix_pathinfo=0
10
11memory_limit = 64M
12# 改为
13memory_limit = 512M
说明
- 修改
cgi.fix_pathinfo
的值是为了避免nginx文件类型错误解析漏洞 - nextcloud的运行建议使用512M以上的内存限制
使用socket方式连接php-fpm和mysql对于php-fpm和mysql来说,相比于使用端口链接,使用socket方式连接数据库可以获得更好的性能,唯一的缺点就是使用socket连接的php-fpm和mysql必须部署在同一台主机内。
这一个配置不是必须的,酌情选择。
如果需要使用socket方式连接php-fpm和mysql,则还需要增加以下配置
1# 编辑配置文件
2vim /etc/php.ini
3
4# 在[Pdo_mysql]下方添加一行,如果没有[Pdo_mysql]这一行,则自行加入
5pdo_mysql.default_socket = /dev/shm/mysql.sock
6
7
8# 编辑配置文件
9vim /etc/my.cnf
10
11# 在[mysqld]下方添加一行,与上面的配置同理
12socket = /dev/shm/mysql.sock
另外/etc/php-fpm.d/www.conf
也需要改动,改动的地方较多,就不一一列举,改动后的文件如下(已去除注释行和空行):
1[www]
2user = nginx
3group = nginx
4listen = /dev/shm/php-cgi.sock
5listen.owner = nginx
6listen.group = nginx
7listen.allowed_clients = 127.0.0.1
8pm = static
9
10# 如果内存较小,例如512M,则下面的12可以改为4,同时不建议在这么小的机子上跑这么重的php-fpm
11pm.max_children = 12
12
13slowlog = /var/log/php-fpm/www-slow.log
14env[HOSTNAME] = $HOSTNAME
15env[PATH] = /usr/local/bin:/usr/bin:/bin
16env[TMP] = /tmp
17env[TMPDIR] = /tmp
18env[TEMP] = /tmp
19php_admin_value[error_log] = /var/log/php-fpm/www-error.log
20php_admin_flag[log_errors] = on
21php_admin_value[memory_limit] = 512M
22php_value[session.save_handler] = files
23php_value[session.save_path] = /var/lib/php/session
24php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
以上是我个人在用的配置,修改后可以通过以下命令查看生效的配置:
1sed '/^;\|^$/d' /etc/php-fpm.d/www.conf
php-fpm有个很好用的插件:opcache
。opcache能极大加快php脚本的执行速度,最核心的思想就是使用缓存,关于opcache的介绍很多,这里直接搬一个现成的:
Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。
上面已经安装了php-opcache
,添加个配置进行启用就可以了,编辑配置文件:
1vim /etc/php.d/opcache.ini
然后按照nextcloud的提示,修改opcache的配置如下:
1[opcache]
2zend_extension=opcache.so
3opcache.enable=1
4opcache.enable_cli=1
5opcache.interned_strings_buffer=8
6opcache.max_accelerated_files=10000
7opcache.memory_consumption=128
8opcache.save_comments=1
9opcache.revalidate_freq=1
然后重启php-fpm即可生效
1systemctl restart php-fpm
Nginx
官方nginx有两个版本,mainline和stable,即开发版和稳定版,区别是前者引入新特性但可能有新bug,后者足够稳定。事实上,两者均比较稳定,nginx的网站总是运行在mainline版上,不过还是推荐新手选择稳定版。
1# 编辑repo文件
2vim /etc/yum.repos.d/nginx.repo
3
4# 写入如下内容
5[nginx]
6name=nginx repo
7baseurl=http://nginx.org/packages/centos/7/$basearch/
8gpgcheck=0
9enabled=1
10
11# 安装nginx
12yum install nginx -y
13
14# 启动服务并设置开机启动
15systemctl start nginx
16systemctl enable nginx
这时lnmp环境就安装成功了。
安装Nginx之后存在一个默认配置,只要前面配置没有错误,那么nginx启动之后就可打开默认网页。
直接用浏览器打开主机IP地址或者域名,就可以看到nginx的欢迎页面,说明nginx已经在工作了。
假设IP地址为1.2.3.4,域名为pan.wenjinyu.me ,能用域名打开的前提是已经设置了解析,不知道怎么设置解析可以移步设置域名解析:给域名设置一些实用有趣的二级域名。
此时lnmp环境就安装完成了。
安装
nextcloud可以直接从 官网 下载,只需要进行简单的配置就可以直接使用。
例如当前的最新版本是18.0.4
,则运行:
1mkdir /var/www
2cd /var/www/
3wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip
4unzip nextcloud-*.zip
5chown -R nginx:nginx /var/www/nextcloud
配置
Nginx
先添加一个配置文件
1vim /etc/nginx/conf.d/nextcloud.conf
然后添加下列内容
1upstream php-handler {
2 server unix:/dev/shm/php-cgi.sock;
3}
4
5server {
6 listen 443 ssl;
7 server_name netdisk.wenjinyu.me;
8 ssl_certificate /etc/letsencrypt/live/netdisk.wenjinyu.me/fullchain.pem;
9 ssl_certificate_key /etc/letsencrypt/live/netdisk.wenjinyu.me/privkey.pem;
10 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
11 add_header X-Content-Type-Options nosniff;
12 add_header X-XSS-Protection "1; mode=block";
13 add_header X-Robots-Tag none;
14 add_header X-Download-Options noopen;
15 add_header X-Permitted-Cross-Domain-Policies none;
16 add_header Referrer-Policy "no-referrer";
17 add_header X-Frame-Options SAMEORIGIN;
18 add_header Cache-Control "public, max-age=15778463";
19 root /var/www/nextcloud/;
20 error_log /var/log/wenjinyu/nextcloud-error.log;
21
22 location = /robots.txt {
23 allow all;
24 log_not_found off;
25 access_log off;
26 }
27
28 location = /.well-known/carddav {
29 return 301 $scheme://$host/remote.php/dav;
30 }
31
32 location = /.well-known/caldav {
33 return 301 $scheme://$host/remote.php/dav;
34 }
35
36 client_max_body_size 512M;
37 fastcgi_buffers 64 4K;
38 proxy_buffering off;
39 gzip on;
40 gzip_vary on;
41 gzip_comp_level 4;
42 gzip_min_length 256;
43 gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
44 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;
45
46 location / {
47 rewrite ^ /index.php$request_uri;
48 }
49
50 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
51 deny all;
52 }
53
54 location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
55 deny all;
56 }
57
58 location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
59 fastcgi_split_path_info ^(.+?\.php)(/.*)$;
60 include fastcgi_params;
61 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
62 fastcgi_param PATH_INFO $fastcgi_path_info;
63 fastcgi_param HTTPS on;
64 fastcgi_param modHeadersAvailable true;
65 fastcgi_param front_controller_active true;
66 fastcgi_pass php-handler;
67 fastcgi_intercept_errors on;
68 fastcgi_request_buffering off;
69 }
70
71 location ~ ^/(?:updater|ocs-provider)(?:$|/) {
72 try_files $uri/ =404;
73 index index.php;
74 }
75
76 location ~ \.(?:css|js|woff|svg|gif)$ {
77 try_files $uri /index.php$request_uri;
78 access_log off;
79 }
80
81 location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
82 try_files $uri /index.php$request_uri;
83 access_log off;
84 }
85}
86
87server
88{
89 listen 80;
90 server_name netdisk.wenjinyu.me;
91 return 301 https://$server_name$request_uri;
92}
注意要将其中的域名改成自己的域名,如果没有按照本教程的路径放置nextcloud文件夹,还需要修改网站根目录的路径,需要修改的地方已经在上面标出来了。
改完后重载nginx:
1nginx -s reload
MySQL
nextcloud的数据需要使用MySQL数据库程序进行管理,所以需要在MySQL中先新建一个用户和数据库以供nextcloud使用
1# 进入MySQL
2mysql -u root -p
3
4# 创建一个名为nextclud_db的数据库
5CREATE DATABASE nextcloud_db;
6
7# 创建一个名为nextcloud、密码也为nextcloud的用户
8CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
9
10# 赋予用户nextcloud对数据库nextcloud_db的所有操作权限
11GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud'@'localhost';
12
13# 刷新数据库权限
14FLUSH PRIVILEGES;
15
16# 退出
17exit
Nextcloud
现在就可以用浏览器打开nextcloud了:
点击查看网站打不开的解决办法 如果网页打不开,那么有一个很简单的方法可以排查问题:
先分别运行下面三条命令,查看三个nextcloud所需要的组建的运行状态:
1systemctl status nginx
2systemctl status mysql
3systemctl status php-fpm
如果在运行结果中都能看到绿色的active (running)
字样,例如下面这个样子
那么说明这三个组件的是没问题的,错误的地方就可能是nginx的配置文件/etc/nginx/conf.d/nextcloud.conf
,可以直接编辑:
1vim /etc/nginx/conf.d/nextcloud.conf
然后跟上面的配置文件有何差别,一定要记住修改文中提示的部分,其他的都不要修改,修改完或者查看之后确定没问题,那么就运行下面命令将三个组件重启,因为也有可能是有些修改需要重启生效但是修改后忘了重启:
1systemctl restart nginx
2systemctl restart mysql
3systemctl restart php-fpm
然后再确认一遍网址解析是否有误:如果直接用ip能访问,而网址不能,那么就是网址解析的问题了。
之后再打开网页看看,如果还不行可以在下面留言。
第一次登陆需要创建管理员账号
,输完之后点击存储&数据库
,接下来的配置可以参照下面的设置:
管理员密码
任意设置,数据库密码
如果是按照本教程的例子设置的,那么就是nextcloud
,需要注意的是,配置数据库
需要选择第二个MySQL/MariaDB
,至于理由也在刚登陆时显示的性能警告
中提到了。
如果配置没有什么问题就可以登陆了:
Redis
配置redis缓存能让网盘访问更快速,也能降低系统负载,对于小内存VPS来说更是效果显著,如果不进行配置,也可以在nextcloud网页版 -> 设置
-> 概览
里面看到这样的提示:
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见[文档]。
1yum install redis php-redis
在ubuntu/debian上安装redisubuntu/debian,那么安装的是 redis-server
1apt-get install redis-server php-redis
将redis的连接方式从TCP改为socket可增加redis和php-fpm的连接性能,所以推荐将redis配置为socket连接方式。
关于socketredis可以使用常规的TCP连接,也就是让redis监听127.0.0.1:6379
,这是redis默认的设置,不过,如果redis的客户端和服务端都在同一个服务器内,更推荐使用socks方式,能提升性能。
UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。
打开redis配置文件:
1vim /etc/redis.conf
作如下修改:
1# 监听端口改为0
2port 0
3
4# 只监听本地端口
5bind 127.0.0.1
6
7# 添加unix socket监听,/dev/shm/是挂载在内存的临时文件夹,具体可搜索tmpfs
8unixsocket /dev/shm/redis.sock
9
10# 设置socket权限
11unixsocketperm 775
12
13# 设置密码
14requirepass H#p$#9kNn#ol8NLBtoiy89FV6098@
最后启动生效即可
1# 启动redis
2systemctl start redis
3systemctl enable redis
4
5# 把redis添加进相应的用户组,以nginx为例
6usermod -g nginx redis
安装好redis后需要在nextcloud中启用,直接在nextcloud的配置文件修改即可:
1vim /var/www/nextcloud/config/config.php
在最后一行的);
上面添加配置:
1 'memcache.local' => '\\OC\\Memcache\\Redis',
2 'memcache.locking' => '\\OC\\Memcache\\Redis',
3 'filelocking.enabled' => 'true',
4 'redis' => array(
5 'host' => '/dev/shm/redis.sock',
6 'port' => 0,
7 'dbindex' => 0,
8 'password' => 'H#p$#9kNn#ol8NLBtoiy89FV6098@',
9 'timeout' => 1.5,
10 ),
注意:
- 在
'redis'
里面,只有'host'
和'port'
是必须要有的,其他的都是可选项。
使用
按照上面的教程安装完nextcloud之后就可以使用了,可以在官网下载对应的客户端:https://nextcloud.com/install/#install-clients
以下以Windows客户端为例子。
安装nextcloud后打开,先输入服务器IP地址,如果设置了域名解析,那么可以直接输入网盘的域名。
域名解析设置可以参考这篇文章:设置域名解析:给域名设置一些实用有趣的二级域名。
输入服务器地址之后使用设置的用户密码登陆即可:
登陆之后选择同步文件夹,这里需要注意,如果本地需要同步的文件并不是放在一起的,例如我有些文件常用到,就放在桌面,而有些重要但又不常用到的备份文件就放在D盘,这种时候就不要选择同步服务器的所有内容
,而要选择下面的跳过文件夹设置
,否则就只能同步一个文件夹,无法添加其他文件夹。
此时进入了nextcloud,点击账户名称下面的添加文件夹
,
选择需要同步的文件夹,然后下一步
,再新建一个存放在网盘上的同步文件夹,
最后确认添加链接就可以开始同步了。
问题解决
网页版一直在登录页面循环
如果登录时输入了正确的帐号密码,url也已经是进入网盘的网址,但是却仍停留在登录页面,其实是使用php部分文件夹的时候,nginx的权限不够,运行以下命令即可解决:
1chown nginx:nginx /var/lib/php/session/
2chown root:nginx /var/lib/php/wsdlcache/
3chown root:nginx /var/lib/php/opcache/
Linux客户端没有记住密码
Linux上的客户端在使用的时候,如果每次打开都需要重新输入用户名和密码进行登录,其实只是缺少一个依赖而已:
1dnf install libgnome-keyring
最后更新于 2018 年 11 月 01 日评论正在加载中...目录
如果在安装过程中出现以下错误提示:
Error: Package: php-magickwand-1.0.9-6.el7.x86_64 (epel) Requires: libMagickWand.so.5()(64bit)
就去掉php扩展中的php72w-pecl-imagick
,把其他扩展先装上,然后按照以下方式安装此扩展:
1yum install ImageMagick ImageMagick-devel gcc
如果装不了gcc就用这个命令:
1yum install gcc gcc-c++ autoconf automake
最后再安装imagick
1pecl install imagick
2echo "extension=imagick.so" >> /etc/php.ini
3systemctl restart php-fpm
安装好后需要进行配置,先替换以下内容:
1# 编辑配置文件
2vim /etc/php.ini
3
4
5######### 修改以下内容 #########
6
7;cgi.fix_pathinfo=1
8# 改为
9cgi.fix_pathinfo=0
10
11memory_limit = 64M
12# 改为
13memory_limit = 512M
说明
- 修改
cgi.fix_pathinfo
的值是为了避免nginx文件类型错误解析漏洞- nextcloud的运行建议使用512M以上的内存限制
使用socket方式连接php-fpm和mysql对于php-fpm和mysql来说,相比于使用端口链接,使用socket方式连接数据库可以获得更好的性能,唯一的缺点就是使用socket连接的php-fpm和mysql必须部署在同一台主机内。
这一个配置不是必须的,酌情选择。
如果需要使用socket方式连接php-fpm和mysql,则还需要增加以下配置
1# 编辑配置文件
2vim /etc/php.ini
3
4# 在[Pdo_mysql]下方添加一行,如果没有[Pdo_mysql]这一行,则自行加入
5pdo_mysql.default_socket = /dev/shm/mysql.sock
6
7
8# 编辑配置文件
9vim /etc/my.cnf
10
11# 在[mysqld]下方添加一行,与上面的配置同理
12socket = /dev/shm/mysql.sock
另外/etc/php-fpm.d/www.conf
也需要改动,改动的地方较多,就不一一列举,改动后的文件如下(已去除注释行和空行):
1[www]
2user = nginx
3group = nginx
4listen = /dev/shm/php-cgi.sock
5listen.owner = nginx
6listen.group = nginx
7listen.allowed_clients = 127.0.0.1
8pm = static
9
10# 如果内存较小,例如512M,则下面的12可以改为4,同时不建议在这么小的机子上跑这么重的php-fpm
11pm.max_children = 12
12
13slowlog = /var/log/php-fpm/www-slow.log
14env[HOSTNAME] = $HOSTNAME
15env[PATH] = /usr/local/bin:/usr/bin:/bin
16env[TMP] = /tmp
17env[TMPDIR] = /tmp
18env[TEMP] = /tmp
19php_admin_value[error_log] = /var/log/php-fpm/www-error.log
20php_admin_flag[log_errors] = on
21php_admin_value[memory_limit] = 512M
22php_value[session.save_handler] = files
23php_value[session.save_path] = /var/lib/php/session
24php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
以上是我个人在用的配置,修改后可以通过以下命令查看生效的配置:
1sed '/^;\|^$/d' /etc/php-fpm.d/www.conf
php-fpm有个很好用的插件:opcache
。opcache能极大加快php脚本的执行速度,最核心的思想就是使用缓存,关于opcache的介绍很多,这里直接搬一个现成的:
Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。
上面已经安装了php-opcache
,添加个配置进行启用就可以了,编辑配置文件:
1vim /etc/php.d/opcache.ini
然后按照nextcloud的提示,修改opcache的配置如下:
1[opcache]
2zend_extension=opcache.so
3opcache.enable=1
4opcache.enable_cli=1
5opcache.interned_strings_buffer=8
6opcache.max_accelerated_files=10000
7opcache.memory_consumption=128
8opcache.save_comments=1
9opcache.revalidate_freq=1
然后重启php-fpm即可生效
1systemctl restart php-fpm
Nginx
官方nginx有两个版本,mainline和stable,即开发版和稳定版,区别是前者引入新特性但可能有新bug,后者足够稳定。事实上,两者均比较稳定,nginx的网站总是运行在mainline版上,不过还是推荐新手选择稳定版。
1# 编辑repo文件
2vim /etc/yum.repos.d/nginx.repo
3
4# 写入如下内容
5[nginx]
6name=nginx repo
7baseurl=http://nginx.org/packages/centos/7/$basearch/
8gpgcheck=0
9enabled=1
10
11# 安装nginx
12yum install nginx -y
13
14# 启动服务并设置开机启动
15systemctl start nginx
16systemctl enable nginx
这时lnmp环境就安装成功了。
安装Nginx之后存在一个默认配置,只要前面配置没有错误,那么nginx启动之后就可打开默认网页。
直接用浏览器打开主机IP地址或者域名,就可以看到nginx的欢迎页面,说明nginx已经在工作了。
假设IP地址为1.2.3.4,域名为pan.wenjinyu.me ,能用域名打开的前提是已经设置了解析,不知道怎么设置解析可以移步设置域名解析:给域名设置一些实用有趣的二级域名。
此时lnmp环境就安装完成了。
安装
nextcloud可以直接从 官网 下载,只需要进行简单的配置就可以直接使用。
例如当前的最新版本是18.0.4
,则运行:
1mkdir /var/www
2cd /var/www/
3wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip
4unzip nextcloud-*.zip
5chown -R nginx:nginx /var/www/nextcloud
配置
Nginx
先添加一个配置文件
1vim /etc/nginx/conf.d/nextcloud.conf
然后添加下列内容
1upstream php-handler {
2 server unix:/dev/shm/php-cgi.sock;
3}
4
5server {
6 listen 443 ssl;
7 server_name netdisk.wenjinyu.me;
8 ssl_certificate /etc/letsencrypt/live/netdisk.wenjinyu.me/fullchain.pem;
9 ssl_certificate_key /etc/letsencrypt/live/netdisk.wenjinyu.me/privkey.pem;
10 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
11 add_header X-Content-Type-Options nosniff;
12 add_header X-XSS-Protection "1; mode=block";
13 add_header X-Robots-Tag none;
14 add_header X-Download-Options noopen;
15 add_header X-Permitted-Cross-Domain-Policies none;
16 add_header Referrer-Policy "no-referrer";
17 add_header X-Frame-Options SAMEORIGIN;
18 add_header Cache-Control "public, max-age=15778463";
19 root /var/www/nextcloud/;
20 error_log /var/log/wenjinyu/nextcloud-error.log;
21
22 location = /robots.txt {
23 allow all;
24 log_not_found off;
25 access_log off;
26 }
27
28 location = /.well-known/carddav {
29 return 301 $scheme://$host/remote.php/dav;
30 }
31
32 location = /.well-known/caldav {
33 return 301 $scheme://$host/remote.php/dav;
34 }
35
36 client_max_body_size 512M;
37 fastcgi_buffers 64 4K;
38 proxy_buffering off;
39 gzip on;
40 gzip_vary on;
41 gzip_comp_level 4;
42 gzip_min_length 256;
43 gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
44 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;
45
46 location / {
47 rewrite ^ /index.php$request_uri;
48 }
49
50 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
51 deny all;
52 }
53
54 location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
55 deny all;
56 }
57
58 location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
59 fastcgi_split_path_info ^(.+?\.php)(/.*)$;
60 include fastcgi_params;
61 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
62 fastcgi_param PATH_INFO $fastcgi_path_info;
63 fastcgi_param HTTPS on;
64 fastcgi_param modHeadersAvailable true;
65 fastcgi_param front_controller_active true;
66 fastcgi_pass php-handler;
67 fastcgi_intercept_errors on;
68 fastcgi_request_buffering off;
69 }
70
71 location ~ ^/(?:updater|ocs-provider)(?:$|/) {
72 try_files $uri/ =404;
73 index index.php;
74 }
75
76 location ~ \.(?:css|js|woff|svg|gif)$ {
77 try_files $uri /index.php$request_uri;
78 access_log off;
79 }
80
81 location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
82 try_files $uri /index.php$request_uri;
83 access_log off;
84 }
85}
86
87server
88{
89 listen 80;
90 server_name netdisk.wenjinyu.me;
91 return 301 https://$server_name$request_uri;
92}
注意要将其中的域名改成自己的域名,如果没有按照本教程的路径放置nextcloud文件夹,还需要修改网站根目录的路径,需要修改的地方已经在上面标出来了。
改完后重载nginx:
1nginx -s reload
MySQL
nextcloud的数据需要使用MySQL数据库程序进行管理,所以需要在MySQL中先新建一个用户和数据库以供nextcloud使用
1# 进入MySQL
2mysql -u root -p
3
4# 创建一个名为nextclud_db的数据库
5CREATE DATABASE nextcloud_db;
6
7# 创建一个名为nextcloud、密码也为nextcloud的用户
8CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
9
10# 赋予用户nextcloud对数据库nextcloud_db的所有操作权限
11GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud'@'localhost';
12
13# 刷新数据库权限
14FLUSH PRIVILEGES;
15
16# 退出
17exit
Nextcloud
现在就可以用浏览器打开nextcloud了:
点击查看网站打不开的解决办法 如果网页打不开,那么有一个很简单的方法可以排查问题:
先分别运行下面三条命令,查看三个nextcloud所需要的组建的运行状态:
1systemctl status nginx
2systemctl status mysql
3systemctl status php-fpm
如果在运行结果中都能看到绿色的active (running)
字样,例如下面这个样子
那么说明这三个组件的是没问题的,错误的地方就可能是nginx的配置文件/etc/nginx/conf.d/nextcloud.conf
,可以直接编辑:
1vim /etc/nginx/conf.d/nextcloud.conf
然后跟上面的配置文件有何差别,一定要记住修改文中提示的部分,其他的都不要修改,修改完或者查看之后确定没问题,那么就运行下面命令将三个组件重启,因为也有可能是有些修改需要重启生效但是修改后忘了重启:
1systemctl restart nginx
2systemctl restart mysql
3systemctl restart php-fpm
然后再确认一遍网址解析是否有误:如果直接用ip能访问,而网址不能,那么就是网址解析的问题了。
之后再打开网页看看,如果还不行可以在下面留言。
第一次登陆需要创建管理员账号
,输完之后点击存储&数据库
,接下来的配置可以参照下面的设置:
管理员密码
任意设置,数据库密码
如果是按照本教程的例子设置的,那么就是nextcloud
,需要注意的是,配置数据库
需要选择第二个MySQL/MariaDB
,至于理由也在刚登陆时显示的性能警告
中提到了。
如果配置没有什么问题就可以登陆了:
Redis
配置redis缓存能让网盘访问更快速,也能降低系统负载,对于小内存VPS来说更是效果显著,如果不进行配置,也可以在nextcloud网页版 -> 设置
-> 概览
里面看到这样的提示:
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见[文档]。
1yum install redis php-redis
在ubuntu/debian上安装redisubuntu/debian,那么安装的是 redis-server
1apt-get install redis-server php-redis
将redis的连接方式从TCP改为socket可增加redis和php-fpm的连接性能,所以推荐将redis配置为socket连接方式。
关于socketredis可以使用常规的TCP连接,也就是让redis监听127.0.0.1:6379
,这是redis默认的设置,不过,如果redis的客户端和服务端都在同一个服务器内,更推荐使用socks方式,能提升性能。
UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。
打开redis配置文件:
1vim /etc/redis.conf
作如下修改:
1# 监听端口改为0
2port 0
3
4# 只监听本地端口
5bind 127.0.0.1
6
7# 添加unix socket监听,/dev/shm/是挂载在内存的临时文件夹,具体可搜索tmpfs
8unixsocket /dev/shm/redis.sock
9
10# 设置socket权限
11unixsocketperm 775
12
13# 设置密码
14requirepass H#p$#9kNn#ol8NLBtoiy89FV6098@
最后启动生效即可
1# 启动redis
2systemctl start redis
3systemctl enable redis
4
5# 把redis添加进相应的用户组,以nginx为例
6usermod -g nginx redis
安装好redis后需要在nextcloud中启用,直接在nextcloud的配置文件修改即可:
1vim /var/www/nextcloud/config/config.php
在最后一行的);
上面添加配置:
1 'memcache.local' => '\\OC\\Memcache\\Redis',
2 'memcache.locking' => '\\OC\\Memcache\\Redis',
3 'filelocking.enabled' => 'true',
4 'redis' => array(
5 'host' => '/dev/shm/redis.sock',
6 'port' => 0,
7 'dbindex' => 0,
8 'password' => 'H#p$#9kNn#ol8NLBtoiy89FV6098@',
9 'timeout' => 1.5,
10 ),
注意:
- 在
'redis'
里面,只有'host'
和'port'
是必须要有的,其他的都是可选项。
使用
按照上面的教程安装完nextcloud之后就可以使用了,可以在官网下载对应的客户端:https://nextcloud.com/install/#install-clients
以下以Windows客户端为例子。
安装nextcloud后打开,先输入服务器IP地址,如果设置了域名解析,那么可以直接输入网盘的域名。
域名解析设置可以参考这篇文章:设置域名解析:给域名设置一些实用有趣的二级域名。
输入服务器地址之后使用设置的用户密码登陆即可:
登陆之后选择同步文件夹,这里需要注意,如果本地需要同步的文件并不是放在一起的,例如我有些文件常用到,就放在桌面,而有些重要但又不常用到的备份文件就放在D盘,这种时候就不要选择同步服务器的所有内容
,而要选择下面的跳过文件夹设置
,否则就只能同步一个文件夹,无法添加其他文件夹。
此时进入了nextcloud,点击账户名称下面的添加文件夹
,
选择需要同步的文件夹,然后下一步
,再新建一个存放在网盘上的同步文件夹,
最后确认添加链接就可以开始同步了。
问题解决
网页版一直在登录页面循环
如果登录时输入了正确的帐号密码,url也已经是进入网盘的网址,但是却仍停留在登录页面,其实是使用php部分文件夹的时候,nginx的权限不够,运行以下命令即可解决:
1chown nginx:nginx /var/lib/php/session/
2chown root:nginx /var/lib/php/wsdlcache/
3chown root:nginx /var/lib/php/opcache/
Linux客户端没有记住密码
Linux上的客户端在使用的时候,如果每次打开都需要重新输入用户名和密码进行登录,其实只是缺少一个依赖而已:
1dnf install libgnome-keyring
最后更新于 2018 年 11 月 01 日评论正在加载中...目录
对于php-fpm和mysql来说,相比于使用端口链接,使用socket方式连接数据库可以获得更好的性能,唯一的缺点就是使用socket连接的php-fpm和mysql必须部署在同一台主机内。
这一个配置不是必须的,酌情选择。
如果需要使用socket方式连接php-fpm和mysql,则还需要增加以下配置
1# 编辑配置文件
2vim /etc/php.ini
3
4# 在[Pdo_mysql]下方添加一行,如果没有[Pdo_mysql]这一行,则自行加入
5pdo_mysql.default_socket = /dev/shm/mysql.sock
6
7
8# 编辑配置文件
9vim /etc/my.cnf
10
11# 在[mysqld]下方添加一行,与上面的配置同理
12socket = /dev/shm/mysql.sock
另外/etc/php-fpm.d/www.conf
也需要改动,改动的地方较多,就不一一列举,改动后的文件如下(已去除注释行和空行):
1[www]
2user = nginx
3group = nginx
4listen = /dev/shm/php-cgi.sock
5listen.owner = nginx
6listen.group = nginx
7listen.allowed_clients = 127.0.0.1
8pm = static
9
10# 如果内存较小,例如512M,则下面的12可以改为4,同时不建议在这么小的机子上跑这么重的php-fpm
11pm.max_children = 12
12
13slowlog = /var/log/php-fpm/www-slow.log
14env[HOSTNAME] = $HOSTNAME
15env[PATH] = /usr/local/bin:/usr/bin:/bin
16env[TMP] = /tmp
17env[TMPDIR] = /tmp
18env[TEMP] = /tmp
19php_admin_value[error_log] = /var/log/php-fpm/www-error.log
20php_admin_flag[log_errors] = on
21php_admin_value[memory_limit] = 512M
22php_value[session.save_handler] = files
23php_value[session.save_path] = /var/lib/php/session
24php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
以上是我个人在用的配置,修改后可以通过以下命令查看生效的配置:
1sed '/^;\|^$/d' /etc/php-fpm.d/www.conf
php-fpm有个很好用的插件:opcache
。opcache能极大加快php脚本的执行速度,最核心的思想就是使用缓存,关于opcache的介绍很多,这里直接搬一个现成的:
Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。
上面已经安装了php-opcache
,添加个配置进行启用就可以了,编辑配置文件:
1vim /etc/php.d/opcache.ini
然后按照nextcloud的提示,修改opcache的配置如下:
1[opcache]
2zend_extension=opcache.so
3opcache.enable=1
4opcache.enable_cli=1
5opcache.interned_strings_buffer=8
6opcache.max_accelerated_files=10000
7opcache.memory_consumption=128
8opcache.save_comments=1
9opcache.revalidate_freq=1
然后重启php-fpm即可生效
1systemctl restart php-fpm
Nginx
官方nginx有两个版本,mainline和stable,即开发版和稳定版,区别是前者引入新特性但可能有新bug,后者足够稳定。事实上,两者均比较稳定,nginx的网站总是运行在mainline版上,不过还是推荐新手选择稳定版。
1# 编辑repo文件
2vim /etc/yum.repos.d/nginx.repo
3
4# 写入如下内容
5[nginx]
6name=nginx repo
7baseurl=http://nginx.org/packages/centos/7/$basearch/
8gpgcheck=0
9enabled=1
10
11# 安装nginx
12yum install nginx -y
13
14# 启动服务并设置开机启动
15systemctl start nginx
16systemctl enable nginx
这时lnmp环境就安装成功了。
安装Nginx之后存在一个默认配置,只要前面配置没有错误,那么nginx启动之后就可打开默认网页。
直接用浏览器打开主机IP地址或者域名,就可以看到nginx的欢迎页面,说明nginx已经在工作了。
假设IP地址为1.2.3.4,域名为pan.wenjinyu.me ,能用域名打开的前提是已经设置了解析,不知道怎么设置解析可以移步设置域名解析:给域名设置一些实用有趣的二级域名。
此时lnmp环境就安装完成了。
安装
nextcloud可以直接从 官网 下载,只需要进行简单的配置就可以直接使用。
例如当前的最新版本是18.0.4
,则运行:
1mkdir /var/www
2cd /var/www/
3wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip
4unzip nextcloud-*.zip
5chown -R nginx:nginx /var/www/nextcloud
配置
Nginx
先添加一个配置文件
1vim /etc/nginx/conf.d/nextcloud.conf
然后添加下列内容
1upstream php-handler {
2 server unix:/dev/shm/php-cgi.sock;
3}
4
5server {
6 listen 443 ssl;
7 server_name netdisk.wenjinyu.me;
8 ssl_certificate /etc/letsencrypt/live/netdisk.wenjinyu.me/fullchain.pem;
9 ssl_certificate_key /etc/letsencrypt/live/netdisk.wenjinyu.me/privkey.pem;
10 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
11 add_header X-Content-Type-Options nosniff;
12 add_header X-XSS-Protection "1; mode=block";
13 add_header X-Robots-Tag none;
14 add_header X-Download-Options noopen;
15 add_header X-Permitted-Cross-Domain-Policies none;
16 add_header Referrer-Policy "no-referrer";
17 add_header X-Frame-Options SAMEORIGIN;
18 add_header Cache-Control "public, max-age=15778463";
19 root /var/www/nextcloud/;
20 error_log /var/log/wenjinyu/nextcloud-error.log;
21
22 location = /robots.txt {
23 allow all;
24 log_not_found off;
25 access_log off;
26 }
27
28 location = /.well-known/carddav {
29 return 301 $scheme://$host/remote.php/dav;
30 }
31
32 location = /.well-known/caldav {
33 return 301 $scheme://$host/remote.php/dav;
34 }
35
36 client_max_body_size 512M;
37 fastcgi_buffers 64 4K;
38 proxy_buffering off;
39 gzip on;
40 gzip_vary on;
41 gzip_comp_level 4;
42 gzip_min_length 256;
43 gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
44 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;
45
46 location / {
47 rewrite ^ /index.php$request_uri;
48 }
49
50 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
51 deny all;
52 }
53
54 location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
55 deny all;
56 }
57
58 location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
59 fastcgi_split_path_info ^(.+?\.php)(/.*)$;
60 include fastcgi_params;
61 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
62 fastcgi_param PATH_INFO $fastcgi_path_info;
63 fastcgi_param HTTPS on;
64 fastcgi_param modHeadersAvailable true;
65 fastcgi_param front_controller_active true;
66 fastcgi_pass php-handler;
67 fastcgi_intercept_errors on;
68 fastcgi_request_buffering off;
69 }
70
71 location ~ ^/(?:updater|ocs-provider)(?:$|/) {
72 try_files $uri/ =404;
73 index index.php;
74 }
75
76 location ~ \.(?:css|js|woff|svg|gif)$ {
77 try_files $uri /index.php$request_uri;
78 access_log off;
79 }
80
81 location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
82 try_files $uri /index.php$request_uri;
83 access_log off;
84 }
85}
86
87server
88{
89 listen 80;
90 server_name netdisk.wenjinyu.me;
91 return 301 https://$server_name$request_uri;
92}
注意要将其中的域名改成自己的域名,如果没有按照本教程的路径放置nextcloud文件夹,还需要修改网站根目录的路径,需要修改的地方已经在上面标出来了。
改完后重载nginx:
1nginx -s reload
MySQL
nextcloud的数据需要使用MySQL数据库程序进行管理,所以需要在MySQL中先新建一个用户和数据库以供nextcloud使用
1# 进入MySQL
2mysql -u root -p
3
4# 创建一个名为nextclud_db的数据库
5CREATE DATABASE nextcloud_db;
6
7# 创建一个名为nextcloud、密码也为nextcloud的用户
8CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
9
10# 赋予用户nextcloud对数据库nextcloud_db的所有操作权限
11GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud'@'localhost';
12
13# 刷新数据库权限
14FLUSH PRIVILEGES;
15
16# 退出
17exit
Nextcloud
现在就可以用浏览器打开nextcloud了:
点击查看网站打不开的解决办法 如果网页打不开,那么有一个很简单的方法可以排查问题:
先分别运行下面三条命令,查看三个nextcloud所需要的组建的运行状态:
1systemctl status nginx
2systemctl status mysql
3systemctl status php-fpm
如果在运行结果中都能看到绿色的active (running)
字样,例如下面这个样子
那么说明这三个组件的是没问题的,错误的地方就可能是nginx的配置文件/etc/nginx/conf.d/nextcloud.conf
,可以直接编辑:
1vim /etc/nginx/conf.d/nextcloud.conf
然后跟上面的配置文件有何差别,一定要记住修改文中提示的部分,其他的都不要修改,修改完或者查看之后确定没问题,那么就运行下面命令将三个组件重启,因为也有可能是有些修改需要重启生效但是修改后忘了重启:
1systemctl restart nginx
2systemctl restart mysql
3systemctl restart php-fpm
然后再确认一遍网址解析是否有误:如果直接用ip能访问,而网址不能,那么就是网址解析的问题了。
之后再打开网页看看,如果还不行可以在下面留言。
第一次登陆需要创建管理员账号
,输完之后点击存储&数据库
,接下来的配置可以参照下面的设置:
管理员密码
任意设置,数据库密码
如果是按照本教程的例子设置的,那么就是nextcloud
,需要注意的是,配置数据库
需要选择第二个MySQL/MariaDB
,至于理由也在刚登陆时显示的性能警告
中提到了。
如果配置没有什么问题就可以登陆了:
Redis
配置redis缓存能让网盘访问更快速,也能降低系统负载,对于小内存VPS来说更是效果显著,如果不进行配置,也可以在nextcloud网页版 -> 设置
-> 概览
里面看到这样的提示:
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见[文档]。
1yum install redis php-redis
在ubuntu/debian上安装redisubuntu/debian,那么安装的是 redis-server
1apt-get install redis-server php-redis
将redis的连接方式从TCP改为socket可增加redis和php-fpm的连接性能,所以推荐将redis配置为socket连接方式。
关于socketredis可以使用常规的TCP连接,也就是让redis监听127.0.0.1:6379
,这是redis默认的设置,不过,如果redis的客户端和服务端都在同一个服务器内,更推荐使用socks方式,能提升性能。
UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。
打开redis配置文件:
1vim /etc/redis.conf
作如下修改:
1# 监听端口改为0
2port 0
3
4# 只监听本地端口
5bind 127.0.0.1
6
7# 添加unix socket监听,/dev/shm/是挂载在内存的临时文件夹,具体可搜索tmpfs
8unixsocket /dev/shm/redis.sock
9
10# 设置socket权限
11unixsocketperm 775
12
13# 设置密码
14requirepass H#p$#9kNn#ol8NLBtoiy89FV6098@
最后启动生效即可
1# 启动redis
2systemctl start redis
3systemctl enable redis
4
5# 把redis添加进相应的用户组,以nginx为例
6usermod -g nginx redis
安装好redis后需要在nextcloud中启用,直接在nextcloud的配置文件修改即可:
1vim /var/www/nextcloud/config/config.php
在最后一行的);
上面添加配置:
1 'memcache.local' => '\\OC\\Memcache\\Redis',
2 'memcache.locking' => '\\OC\\Memcache\\Redis',
3 'filelocking.enabled' => 'true',
4 'redis' => array(
5 'host' => '/dev/shm/redis.sock',
6 'port' => 0,
7 'dbindex' => 0,
8 'password' => 'H#p$#9kNn#ol8NLBtoiy89FV6098@',
9 'timeout' => 1.5,
10 ),
注意:
- 在
'redis'
里面,只有'host'
和'port'
是必须要有的,其他的都是可选项。
使用
按照上面的教程安装完nextcloud之后就可以使用了,可以在官网下载对应的客户端:https://nextcloud.com/install/#install-clients
以下以Windows客户端为例子。
安装nextcloud后打开,先输入服务器IP地址,如果设置了域名解析,那么可以直接输入网盘的域名。
域名解析设置可以参考这篇文章:设置域名解析:给域名设置一些实用有趣的二级域名。
输入服务器地址之后使用设置的用户密码登陆即可:
登陆之后选择同步文件夹,这里需要注意,如果本地需要同步的文件并不是放在一起的,例如我有些文件常用到,就放在桌面,而有些重要但又不常用到的备份文件就放在D盘,这种时候就不要选择同步服务器的所有内容
,而要选择下面的跳过文件夹设置
,否则就只能同步一个文件夹,无法添加其他文件夹。
此时进入了nextcloud,点击账户名称下面的添加文件夹
,
选择需要同步的文件夹,然后下一步
,再新建一个存放在网盘上的同步文件夹,
最后确认添加链接就可以开始同步了。
问题解决
网页版一直在登录页面循环
如果登录时输入了正确的帐号密码,url也已经是进入网盘的网址,但是却仍停留在登录页面,其实是使用php部分文件夹的时候,nginx的权限不够,运行以下命令即可解决:
1chown nginx:nginx /var/lib/php/session/
2chown root:nginx /var/lib/php/wsdlcache/
3chown root:nginx /var/lib/php/opcache/
Linux客户端没有记住密码
Linux上的客户端在使用的时候,如果每次打开都需要重新输入用户名和密码进行登录,其实只是缺少一个依赖而已:
1dnf install libgnome-keyring
最后更新于 2018 年 11 月 01 日评论正在加载中...目录
如果网页打不开,那么有一个很简单的方法可以排查问题:
先分别运行下面三条命令,查看三个nextcloud所需要的组建的运行状态:
1systemctl status nginx
2systemctl status mysql
3systemctl status php-fpm
如果在运行结果中都能看到绿色的active (running)
字样,例如下面这个样子
那么说明这三个组件的是没问题的,错误的地方就可能是nginx的配置文件/etc/nginx/conf.d/nextcloud.conf
,可以直接编辑:
1vim /etc/nginx/conf.d/nextcloud.conf
然后跟上面的配置文件有何差别,一定要记住修改文中提示的部分,其他的都不要修改,修改完或者查看之后确定没问题,那么就运行下面命令将三个组件重启,因为也有可能是有些修改需要重启生效但是修改后忘了重启:
1systemctl restart nginx
2systemctl restart mysql
3systemctl restart php-fpm
然后再确认一遍网址解析是否有误:如果直接用ip能访问,而网址不能,那么就是网址解析的问题了。
之后再打开网页看看,如果还不行可以在下面留言。
第一次登陆需要创建管理员账号
,输完之后点击存储&数据库
,接下来的配置可以参照下面的设置:
管理员密码
任意设置,数据库密码
如果是按照本教程的例子设置的,那么就是nextcloud
,需要注意的是,配置数据库
需要选择第二个MySQL/MariaDB
,至于理由也在刚登陆时显示的性能警告
中提到了。
如果配置没有什么问题就可以登陆了:
Redis
配置redis缓存能让网盘访问更快速,也能降低系统负载,对于小内存VPS来说更是效果显著,如果不进行配置,也可以在nextcloud网页版 -> 设置
-> 概览
里面看到这样的提示:
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见[文档]。
1yum install redis php-redis
在ubuntu/debian上安装redisubuntu/debian,那么安装的是 redis-server
1apt-get install redis-server php-redis
将redis的连接方式从TCP改为socket可增加redis和php-fpm的连接性能,所以推荐将redis配置为socket连接方式。
关于socketredis可以使用常规的TCP连接,也就是让redis监听127.0.0.1:6379
,这是redis默认的设置,不过,如果redis的客户端和服务端都在同一个服务器内,更推荐使用socks方式,能提升性能。
UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。
打开redis配置文件:
1vim /etc/redis.conf
作如下修改:
1# 监听端口改为0
2port 0
3
4# 只监听本地端口
5bind 127.0.0.1
6
7# 添加unix socket监听,/dev/shm/是挂载在内存的临时文件夹,具体可搜索tmpfs
8unixsocket /dev/shm/redis.sock
9
10# 设置socket权限
11unixsocketperm 775
12
13# 设置密码
14requirepass H#p$#9kNn#ol8NLBtoiy89FV6098@
最后启动生效即可
1# 启动redis
2systemctl start redis
3systemctl enable redis
4
5# 把redis添加进相应的用户组,以nginx为例
6usermod -g nginx redis
安装好redis后需要在nextcloud中启用,直接在nextcloud的配置文件修改即可:
1vim /var/www/nextcloud/config/config.php
在最后一行的);
上面添加配置:
1 'memcache.local' => '\\OC\\Memcache\\Redis',
2 'memcache.locking' => '\\OC\\Memcache\\Redis',
3 'filelocking.enabled' => 'true',
4 'redis' => array(
5 'host' => '/dev/shm/redis.sock',
6 'port' => 0,
7 'dbindex' => 0,
8 'password' => 'H#p$#9kNn#ol8NLBtoiy89FV6098@',
9 'timeout' => 1.5,
10 ),
注意:
- 在
'redis'
里面,只有'host'
和'port'
是必须要有的,其他的都是可选项。
使用
按照上面的教程安装完nextcloud之后就可以使用了,可以在官网下载对应的客户端:https://nextcloud.com/install/#install-clients
以下以Windows客户端为例子。
安装nextcloud后打开,先输入服务器IP地址,如果设置了域名解析,那么可以直接输入网盘的域名。
域名解析设置可以参考这篇文章:设置域名解析:给域名设置一些实用有趣的二级域名。
输入服务器地址之后使用设置的用户密码登陆即可:
登陆之后选择同步文件夹,这里需要注意,如果本地需要同步的文件并不是放在一起的,例如我有些文件常用到,就放在桌面,而有些重要但又不常用到的备份文件就放在D盘,这种时候就不要选择同步服务器的所有内容
,而要选择下面的跳过文件夹设置
,否则就只能同步一个文件夹,无法添加其他文件夹。
此时进入了nextcloud,点击账户名称下面的添加文件夹
,
选择需要同步的文件夹,然后下一步
,再新建一个存放在网盘上的同步文件夹,
最后确认添加链接就可以开始同步了。
问题解决
网页版一直在登录页面循环
如果登录时输入了正确的帐号密码,url也已经是进入网盘的网址,但是却仍停留在登录页面,其实是使用php部分文件夹的时候,nginx的权限不够,运行以下命令即可解决:
1chown nginx:nginx /var/lib/php/session/
2chown root:nginx /var/lib/php/wsdlcache/
3chown root:nginx /var/lib/php/opcache/
Linux客户端没有记住密码
Linux上的客户端在使用的时候,如果每次打开都需要重新输入用户名和密码进行登录,其实只是缺少一个依赖而已:
1dnf install libgnome-keyring
最后更新于 2018 年 11 月 01 日评论正在加载中...目录
ubuntu/debian,那么安装的是 redis-server
1apt-get install redis-server php-redis
将redis的连接方式从TCP改为socket可增加redis和php-fpm的连接性能,所以推荐将redis配置为socket连接方式。
关于socketredis可以使用常规的TCP连接,也就是让redis监听127.0.0.1:6379
,这是redis默认的设置,不过,如果redis的客户端和服务端都在同一个服务器内,更推荐使用socks方式,能提升性能。
UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。
打开redis配置文件:
1vim /etc/redis.conf
作如下修改:
1# 监听端口改为0
2port 0
3
4# 只监听本地端口
5bind 127.0.0.1
6
7# 添加unix socket监听,/dev/shm/是挂载在内存的临时文件夹,具体可搜索tmpfs
8unixsocket /dev/shm/redis.sock
9
10# 设置socket权限
11unixsocketperm 775
12
13# 设置密码
14requirepass H#p$#9kNn#ol8NLBtoiy89FV6098@
最后启动生效即可
1# 启动redis
2systemctl start redis
3systemctl enable redis
4
5# 把redis添加进相应的用户组,以nginx为例
6usermod -g nginx redis
安装好redis后需要在nextcloud中启用,直接在nextcloud的配置文件修改即可:
1vim /var/www/nextcloud/config/config.php
在最后一行的);
上面添加配置:
1 'memcache.local' => '\\OC\\Memcache\\Redis',
2 'memcache.locking' => '\\OC\\Memcache\\Redis',
3 'filelocking.enabled' => 'true',
4 'redis' => array(
5 'host' => '/dev/shm/redis.sock',
6 'port' => 0,
7 'dbindex' => 0,
8 'password' => 'H#p$#9kNn#ol8NLBtoiy89FV6098@',
9 'timeout' => 1.5,
10 ),
注意:
- 在
'redis'
里面,只有'host'
和'port'
是必须要有的,其他的都是可选项。
使用
按照上面的教程安装完nextcloud之后就可以使用了,可以在官网下载对应的客户端:https://nextcloud.com/install/#install-clients
以下以Windows客户端为例子。
安装nextcloud后打开,先输入服务器IP地址,如果设置了域名解析,那么可以直接输入网盘的域名。
域名解析设置可以参考这篇文章:设置域名解析:给域名设置一些实用有趣的二级域名。
输入服务器地址之后使用设置的用户密码登陆即可:
登陆之后选择同步文件夹,这里需要注意,如果本地需要同步的文件并不是放在一起的,例如我有些文件常用到,就放在桌面,而有些重要但又不常用到的备份文件就放在D盘,这种时候就不要选择同步服务器的所有内容
,而要选择下面的跳过文件夹设置
,否则就只能同步一个文件夹,无法添加其他文件夹。
此时进入了nextcloud,点击账户名称下面的添加文件夹
,
选择需要同步的文件夹,然后下一步
,再新建一个存放在网盘上的同步文件夹,
最后确认添加链接就可以开始同步了。
问题解决
网页版一直在登录页面循环
如果登录时输入了正确的帐号密码,url也已经是进入网盘的网址,但是却仍停留在登录页面,其实是使用php部分文件夹的时候,nginx的权限不够,运行以下命令即可解决:
1chown nginx:nginx /var/lib/php/session/
2chown root:nginx /var/lib/php/wsdlcache/
3chown root:nginx /var/lib/php/opcache/
Linux客户端没有记住密码
Linux上的客户端在使用的时候,如果每次打开都需要重新输入用户名和密码进行登录,其实只是缺少一个依赖而已:
1dnf install libgnome-keyring
最后更新于 2018 年 11 月 01 日评论正在加载中...目录
redis可以使用常规的TCP连接,也就是让redis监听127.0.0.1:6379
,这是redis默认的设置,不过,如果redis的客户端和服务端都在同一个服务器内,更推荐使用socks方式,能提升性能。
UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。
打开redis配置文件:
1vim /etc/redis.conf
作如下修改:
1# 监听端口改为0
2port 0
3
4# 只监听本地端口
5bind 127.0.0.1
6
7# 添加unix socket监听,/dev/shm/是挂载在内存的临时文件夹,具体可搜索tmpfs
8unixsocket /dev/shm/redis.sock
9
10# 设置socket权限
11unixsocketperm 775
12
13# 设置密码
14requirepass H#p$#9kNn#ol8NLBtoiy89FV6098@
最后启动生效即可
1# 启动redis
2systemctl start redis
3systemctl enable redis
4
5# 把redis添加进相应的用户组,以nginx为例
6usermod -g nginx redis
安装好redis后需要在nextcloud中启用,直接在nextcloud的配置文件修改即可:
1vim /var/www/nextcloud/config/config.php
在最后一行的);
上面添加配置:
1 'memcache.local' => '\\OC\\Memcache\\Redis',
2 'memcache.locking' => '\\OC\\Memcache\\Redis',
3 'filelocking.enabled' => 'true',
4 'redis' => array(
5 'host' => '/dev/shm/redis.sock',
6 'port' => 0,
7 'dbindex' => 0,
8 'password' => 'H#p$#9kNn#ol8NLBtoiy89FV6098@',
9 'timeout' => 1.5,
10 ),
注意:
- 在
'redis'
里面,只有'host'
和'port'
是必须要有的,其他的都是可选项。
使用
按照上面的教程安装完nextcloud之后就可以使用了,可以在官网下载对应的客户端:https://nextcloud.com/install/#install-clients
以下以Windows客户端为例子。
安装nextcloud后打开,先输入服务器IP地址,如果设置了域名解析,那么可以直接输入网盘的域名。
域名解析设置可以参考这篇文章:设置域名解析:给域名设置一些实用有趣的二级域名。
输入服务器地址之后使用设置的用户密码登陆即可:
登陆之后选择同步文件夹,这里需要注意,如果本地需要同步的文件并不是放在一起的,例如我有些文件常用到,就放在桌面,而有些重要但又不常用到的备份文件就放在D盘,这种时候就不要选择同步服务器的所有内容
,而要选择下面的跳过文件夹设置
,否则就只能同步一个文件夹,无法添加其他文件夹。
此时进入了nextcloud,点击账户名称下面的添加文件夹
,
选择需要同步的文件夹,然后下一步
,再新建一个存放在网盘上的同步文件夹,
最后确认添加链接就可以开始同步了。
问题解决
网页版一直在登录页面循环
如果登录时输入了正确的帐号密码,url也已经是进入网盘的网址,但是却仍停留在登录页面,其实是使用php部分文件夹的时候,nginx的权限不够,运行以下命令即可解决:
1chown nginx:nginx /var/lib/php/session/
2chown root:nginx /var/lib/php/wsdlcache/
3chown root:nginx /var/lib/php/opcache/
Linux客户端没有记住密码
Linux上的客户端在使用的时候,如果每次打开都需要重新输入用户名和密码进行登录,其实只是缺少一个依赖而已:
1dnf install libgnome-keyring