本文共 5587 字,大约阅读时间需要 18 分钟。
最近两年随着各大网盘纷纷关闭,百度云也早早的就开始限速,文件的安全也没有保障。所以还不如自己搭建一个网盘。网上看了下,发现有一个nextcloud比较好用。支持多平台客户端,支持分享,使用操作简单。支持插件扩展,文件预览,在线协作。
安装nginx
1 2 3 4 | wget http: //nginx .org /download/nginx-1 .10.3. tar .gz tar -zxf nginx-1.10.3. tar .gz && cd nginx-1.10.3 . /configure --prefix= /usr/local/data/nginx --user=nginx --group=nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module make && make install |
2.安装配置php
1 2 | yum install http: //rpms .famillecollet.com /enterprise/remi-release-6 .rpm yum --enablerepo=remi-php56 install php php-fpm php-mysql php-gd php-xml php-redis php-libs php-devel php-zlib php-mbstring |
nginx 和php-fpm 的运行用户这里使用nginx
1 2 3 4 5 6 7 8 9 | vim /etc/php-fpm .conf user = nginx group = nginx listen = 127.0.0.1:9000 env [HOSTNAME] = $HOSTNAME env [PATH] = /usr/local/bin : /usr/bin : /bin env [TMP] = /tmp env [TMPDIR] = /tmp env [TEMP] = /tmp |
3.安装mysql
1 2 | yum -y install mysql mysql-server service mysqld start |
4.建库,授权
1 2 | CREATE DATABASE nextcloud_db;GRANT ALL ON nextcloud_db.* TO 'nextcloud' @ '%' IDENTIFIED BY 'nextcloud' ; // 注意一定要加 "%" ,否则无法让网络让任何人上传文件 FLUSH PRIVILEGES; |
5.安装nextcloud
1 2 3 4 5 | wget https: //download .nextcloud.com /server/releases/nextcloud-10 .0.2.zip --no-check-certificate unzip nextcloud-10.0.2.zip mv nextcloud /usr/local/data/nginx/html /usr/local/data/nginx/html chown -R nginx.nginx |
创建数据目录,这里建议数据目录不要和web目录放到一起
1 | /usr/local/data/nginx/html/nextcloud/data |
6.申请证书
为了网盘的安全,有必要使用https 证书,这里可以在阿里云后台申请免费的DV证书
7.配置nginx
创建虚拟主机文件
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 | cd /usr/local/data/nginx/conf vim nextcloud.conf upstream php-handler { server 127.0.0.1:9000; }server {listen 80; server_name cloud.nextcloud.com; return 301 https: // $server_name$request_uri;}server {listen 443 ssl;server_name cloud.nextcloud.com; ssl_certificate /usr/local/data/nginx/conf/nextcloud .crt; ssl_certificate_key /usr/local/data/nginx/conf/nextcloud .key; #添加如下header主要为了安全 add_header Strict-Transport-Security "max-age=15768000;includeSubDomains; preload;" ;add_header X-Content-Type-Options nosniff;add_header X-Frame-Options "SAMEORIGIN" ;add_header X-XSS-Protection "1; mode=block" ;add_header X-Robots-Tag none;add_header X-Download-Options noopen;add_header X-Permitted-Cross-Domain-Policies none; #nextcloud代码目录 root /usr/local/data/nginx/html/nextcloud/ ; location = /robots .txt {allow all;log_not_found off;access_log off;} #为了支持user_webfinger app rewrite ^/.well-known /host-meta /public .php?service=host-meta last; rewrite ^/.well-known /host-meta .json /public .php?service=host-meta-json last; #这儿是为了支持日历和联系人,建议加上 location = /.well-known /carddav { return 301 $scheme: // $host /remote .php /dav ;}location = /.well-known /caldav { return 301 $scheme: // $host /remote .php /dav ;} #设置上传文件的最大大小,php也得修改 client_max_body_size 512M;fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag headergzip off; error_page 403 /core/templates/403 .php;error_page 404 /core/templates/404 .php; #重要的:将所有请求转发到index.php上 location / {rewrite ^ /index .php$uri; } #安全设置,禁止访问部分敏感内容 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/.+|ocs-provider/.+|core /templates/40 [34])\.php(?:$|/) {include fastcgi_params;fastcgi_split_path_info ^(.+\.php)(/.*)$;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param HTTPS on; #Avoid sending the security headers twicefastcgi_param modHeadersAvailable true;fastcgi_param front_controller_active true;fastcgi_pass php-handler;fastcgi_intercept_errors on;fastcgi_request_buffering off; } #安全设置,禁止访问部分敏感内容 location ~ ^/(?:updater|ocs-provider)(?:$|/) {try_files $uri/ =404;index index.php;} # 添加js和css文件的缓存控制头 location ~* \.(?:css|js)$ {try_files $uri /index .php$uri$is_args$args; add_header Cache-Control "public, max-age=7200" ; add_header Strict-Transport-Security "max-age=15768000;includeSubDomains; preload;" ;add_header X-Content-Type-Options nosniff;add_header X-Frame-Options "SAMEORIGIN" ;add_header X-XSS-Protection "1; mode=block" ;add_header X-Robots-Tag none;add_header X-Download-Options noopen;add_header X-Permitted-Cross-Domain-Policies none; access_log off;}location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {try_files $uri /index .php$uri$is_args$args; access_log off;}} |
1 2 3 | vim nginx.conf include nextcloud.conf; service nginx start |
8.配置php上传大小
1 2 3 4 5 | vim /etc/php .ini max_execution_time = 0 post_max_size = 512M upload_max_filesize = 512M service php-fpm start |
9.配置nextcloud
10.nextcloud 配置redis缓存
使用Redis做内存缓存可以有效提升程序运行速度。
1 2 3 4 5 6 7 8 | curl -O http: //download .redis.io /releases/redis-3 .2.8. tar .gz tar -zxvf redis-3.2.8. tar .gz cd redis-3.2.8 /deps/ make geohash-int hiredis jemalloc linenoise lua cd .. make && make install cd utils/ . /install_server .sh |
配置redis
1 2 3 | vim /etc/redis/6379 .conf # requirepass foobared requirepass ExpvUwNOk9XRawC8 bind 192.168.40.200 |
启动
1 | redis-server /etc/redis/6379 .conf |
配置nextcloud
1 2 3 4 5 6 7 8 | cd /usr/local/nginx/html/nextcloud/config vim config.php 'memcache.local' => '\OC\Memcache\Redis' , 'redis' => array( 'host' => '192.168.40.200' , 'port' => 6379, 'password' => 'ExpvUwNOk9XRawC8' , ), |
刷新页面
设置定时
1 | * /15 * * * * /usr/bin/php /usr/local/nginx/html/nextcloud/cron .php > /dev/null |