梳理一篇Ubuntu 20.04环境部署Nextcloud个人网盘过程

Nextcloud,一个免费开源的可以搭建个人网盘的程序项目。我们可以摆脱市面上付费的网盘和限速,用一台服务器快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。支持全部的客户端平台软件,包括可以用于Windows、Mac、Android、iOS、Linux 等各种平台,同时也有提供了网页端以及 WebDAV接口。

梳理一篇Ubuntu 20.04环境部署Nextcloud个人网盘过程

这篇文章中,我们简单的梳理在Ubuntu 20.04环境中如何部署Nextcloud搭建私人网盘的过程。

1、安装依赖包和软件

apt update -y
apt-get install nginx mysql-server
$ sudo apt-get install php7.4 php7.4-cli php7.4-common php7.4-json php7.4-fpm php7.4-curl php7.4-mysql php7.4-gd php7.4-opcache php7.4-xml php7.4-zip php7.4-mbstring

升级镜像源,以及安装数据库和PHP环境。

2、配置PHP环境

$ sudo systemctl start php7.4-fpm
$ sudo systemctl enable php7.4-fpm

启动和开机启动PHP。

3、配置数据库

$ sudo systemctl start mysql
$ sudo systemctl enable mysql

启动 mysql数据库和设置开机启动。

$ sudo mysql -u root

登录和创建用户:

mysql> CREATE DATABASE nextcloud;

然后创建用户和设置密码和权限。

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'username'@'localhost';
mysql> FLUSH PRIVILEGES;

然后退出:

mysql> exit;

4、设置系统配置

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

启动和设置Nginx开机启动。

$ sudo wget https://download.nextcloud.com/server/releases/latest.zip -P /var/www/

这里需要下载最新版本的NextCloud软件源。

$ cd /var/www/
$ sudo unzip -q latest.zip
$ sudo rm latest.zip

登录目录然后解压。

$ sudo chown -R www-data:www-data nextcloud

设置目录权限。

$ cd /etc/nginx/sites-available/
$ sudo rm default
$ sudo rm /etc/nginx/sites-enabled/default

清理一些没用的文件。

$ sudo vi nextcloud

创建一个配置文件。

upstream php-handler {
        server unix:/var/run/php/php7.4-fpm.sock;
}

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

        root /var/www/nextcloud;
        index index.php index.html /index.php$request_uri;

        # Limit Upload Size
        client_max_body_size 512M;
        fastcgi_buffers 64 4K;

        # Gzip Compression
        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;

        # Recommended Security Headers
        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;
        fastcgi_hide_header X-Powered-By;

        # Recommended Hidden Paths
        location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/)  { return 404; }
        location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console)              { return 404; }

        location ~ \.php(?:$|/) {
                fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
                set $path_info $fastcgi_path_info;
                try_files $fastcgi_script_name =404;
                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;
                include fastcgi_params;
                proxy_connect_timeout 600s;
                proxy_send_timeout 600s;
                proxy_read_timeout 600s;
                fastcgi_send_timeout 600s;
                fastcgi_read_timeout 600s;
        }

        # Cache-Control on Assets
        location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
                try_files $uri /index.php$request_uri;
                add_header Cache-Control "public, max-age=15778463";
                expires 6M;
        }

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

        location / {
                try_files $uri $uri/ /index.php$request_uri;
        }
}

配置WEB环境。

$ sudo ln -s /etc/nginx/sites-available/nextcloud -t /etc/nginx/sites-enabled/

创建软连接。

$ sudo systemctl restart nginx

重启Nginx后生效。

然后,我们登陆服务器的IP,默认就可以登录NextCloud。当然我们上面配置WEB环境的时候也可以指定域名。打开后可以默认看到NextCloud的设置界面。创建用户信息登录。后续如果为了系统的速度和效率,我们还可以配置SSL证书和用缓存加速。其实,如果我们服务器WEB环境如果提前安装宝塔面板在安装NextCloud会更快一些更直观一些。

其实,NextCloud 不过一个是CMS系统,我们可以直接像网站一样部署程序。

未经允许不得转载:云主机笔记 » 梳理一篇Ubuntu 20.04环境部署Nextcloud个人网盘过程