
一、搭建网盘架构解析在搭建网盘前我们需要先认识搭建网盘需要什么以及各个组件的作用、层级关系。按图中结构梳理如上图1.Linux虚拟机服务器整套 Nextcloud 私有网盘运行在一台Linux 虚拟机服务器里。所有服务、程序、安全组件都依托这台 Linux 系统运行。(1)Web服务器( 这里使用 httpd )在Web服务器中包含三类主流服务程序httpd、nginx、tomcathttpdApache经典通用 Web 服务器主打稳定兼容、文档资料齐全、对 PHP 和 Nextcloud 适配性极好适合课程教学、个人私有网盘部署nginx高性能 Web 服务器优势是高并发、低资源占用适合大量用户同时访问、大流量商用网站场景tomcatJava 专用应用服务器主要运行 Java 程序不能原生运行 PHP 代码不适合 Nextcloud 网盘架构。本次部署选用httpd原因是它兼容性好、配置简单、教程完善适配教学环境和个人网盘使用需求足够稳定满足基础网盘访问需求。(2)MariaDB 数据库mariadb-server在 Linux 虚拟机服务器中还包含独立的 MariaDB 数据库服务。它专门用来存储网盘元数据包括用户账号密码、文件夹结构、访问权限、共享链接等信息不直接存储大体积文件由 PHP 程序调用读写负责网盘核心结构化数据的管理。(3)Nextcloud网盘在 Linux 虚拟机服务器中包含 Nextcloud 网盘源码程序它存放在 httpd 的网站目录里是实现网盘功能的主体代码。Nextcloud 本身无法直接独立运行需要依靠 Web 服务器接收访问请求、依靠 PHP 环境解析执行代码从而提供完整私有网盘功能。(4)PHP 运行环境在 Linux 虚拟机服务器中包含 PHP 运行环境它是独立的代码解析环境用来解析和执行 Nextcloud 的 PHP 源码实现网盘登录、浏览文件、上传下载、共享文件等核心功能并且负责和数据库进行数据交互处理动态数据请求是 Nextcloud 程序正常运行必不可少的翻译器。2.Linux 双重要安全防护组件最左侧是我们的终端用户通过浏览器、输入虚拟机 IP 地址来访问网盘是整个访问链路的起点。从外到内有两层关键安全防护组件第一层是firewalld 防火墙位于服务器外侧负责管控整个服务器的网络端口访问相当于小区大门。默认会拦截大部分端口我们需要手动放行 80、443 网页端口让外部浏览器可以正常连通服务器同时阻挡恶意外部访问。第二层是SELinux属于 Linux 内核级安全管控相当于屋内门锁。它负责管控服务器内部进程和文件夹的权限标签即使外部通过防火墙连上服务器也需要配置好 SELinux 上下文允许 httpd 服务读取 Nextcloud 目录、访问数据库否则网盘会出现打不开、无法上传文件的问题。3.完整访问流程用户通过浏览器发起网盘访问请求 → 首先经过 firewalld 防火墙校验确认端口放行 → 进入 Linux 服务器后受 SELinux 权限校验确认 httpd 具备读写权限 → httpd 接收请求调用 PHP 环境运行 Nextcloud 代码 → PHP 连接 MariaDB 数据库读取、修改网盘数据 → 最终把网盘页面返回给浏览器完成访问。二、本次使用代码yum install httpd php php-zip php-gd php-mysqlnd mariadb-server -y#安装相对应的环境(php环境、数据库是mariadbweb服务器是httpd)systemctl enable httpd mariadb --now#开启httpd和mariadb服务并且设置开机自启systemctl disable firewalld --now#关闭防火墙setenforce 0#临时关闭selinux。如果此时关闭了系统之后又打开就又会显示开启状态。getenforce#显示为Permissive表示selinux已经关闭了mysqladmin -uroot password root#设置数据库root用户的密码为rootmysql -uroot -proot#用对应身份密码登录数据库show databases;查看create database nextcloud;#创建一个名为nextcloud的数据库chown -R apache:apache nextcloudsystemctl restart httpd#重启web服务器三、教程展示1.配置yum源搭建 Nextcloud 网盘需要一次性安装一堆依赖:httpd(Apache网页服务)、PHP运行环境、php-mysql插件、mariadb数据库 等整套软件包。配置正确国内 yum 源 则yum可一键自动安装并匹配版本解决软件依赖问题顺利部署先输入ping www.baidu,com 检测是否有网再输入vim /etc/yum.repos.d/rpm.repo并插入以下代码[base] namea baseurlhttps://mirrors.aliyun.com/rockylinux/9/AppStream/x86_64/os/ gpgcheck0 [app] namea baseurlhttps://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/ gpgcheck0检查代码对应网址是否可跳转2.安装对应环境php环境、数据库是mariadbweb服务器是httpdyum install httpd php php-zip php-gd php-mysqlnd mariadb-server -y3.开启httpd和mariadb服务并且设置开机自启systemctl enable httpd mariadb --nowenable为设置开机自启now为现在启用无now为开机自启systemctl status httpd 查看服务状态Q退出4、关闭防火墙不推荐在生产环境使用systemctl disable firewalld --now5.关闭selinux 不推荐在生产环境使用setenforce 0 #临时关闭selinux。如果此时关闭了系统之后又打开就又会显示开启状态。getenforce #显示为Permissive表示已经关闭了6.创建数据库名称为nextcloudmysqladmin -uroot password root #设置数据库root用户的密码为root(此密码与用户名为数据库并非虚拟机用户密码及用户名)mysql -uroot -proot #用root身份登录数据库后show databases;#查看数据库create database nextcloud;#创建一个名为nextcloud的数据库exit退出7.获取网盘压缩包网址https://nextcloud.com/install/#install-clients8.把网盘的压缩包复制到/var/www/html目录中并解压9.修改/var/www/html目录下的nextcloud目录以及它目录下的文件的所属者和所属组改为apachehttpd外部服所形成的进程的所有者为apache。为了使外部服访问到我们的目录所以修改10.重启web服务器通过浏览器查看11.安装网盘安装好后会显示网页无法访问此为正常操作重新输入后访问搭建完成12、配置web界面vim index.html编入以下代码将ghl改为自己简写html headtitleindex of ghl/title/head body this is ghl a hrefnextcloud/nextclouda /html此时用浏览器访问时可直接使用虚拟机IP访问