快速搭建共享云盘实战

腾讯云
入门
0 个任务
剩余 2 个名额

你还可以 创建 或者 使用已有 云主机不限时上机

实验内容

-

首次可免费使用云主机 20 分钟 ,到期后云主机将被重置并退库,若想保留成果请及时留用。

实验资源

云服务器

软件环境

-

目录

# 快速搭建共享云盘实战 > 腾讯云开发者实验室的教程使用 Markdown 作为基本的编辑语法,下面是语法概述: > > * 引用内容(通过 `> ` 开头的段落)不会被渲染。 > * 二级标题(通过 `## ` 开头的段落)会作为教程的任务,一个教程可以定义多个任务 > * 二级标题下的正文内容会作为任务的概要 > * 三级标题(通过 `### ` 开头的段落)会作为任务下的步骤,每个任务至少包含一个步骤 > * 可以在步骤中通过指令定义教程中的任务时间、超链接、解释气泡、视频内容、文件定位、实例代码等,具体可参考上方工具栏提示或者阅读下面的示例内容。 ## 实验环境及简介 > <time>10min ~ 20min</time> 本次实验将基于 COS 和 COSFS 工具,在 VFM 3.45 版本上搭建简单的存储网盘。实现多地挂载,一地存储,展示对象存储的易用性。 ### COSFS 简介 COSFS 工具支持将 COS 存储桶挂载到本地,像使用本地文件系统一样直接操作腾讯云对象存储中的对象, COSFS 提供的主要功能包括: 支持 POSIX 文件系统的大部分功能,如:文件读写、目录操作、链接操作、权限管理、uid/gid 管理等功能。 大文件分块传输功能。 MD5 数据校验功能。 [更多详细介绍][https://cloud.tencent.com/document/product/436/6883] ### Veno File Manager 简介 Veno File Manager 是一个简单而灵活的即插即用文件管理器,易于使用且有很多选项。将文件发送给其他小伙伴,使用专用文件夹创建新用户,或者只是将其用作个人文件云都非常方便快捷。支持从任何设备访问,拥有直观的管理面板,可以方便快捷的进行自定义。程序本身无需使用数据库。 所需环境:Nginx/Apache、PHP [更多详细介绍][https://codecanyon.net/item/veno-file-manager-host-and-share-files/6114247] ## 实验环境安装 ### 安装 Nginx 使用 `yum` 安装 Nginx: ``` yum install nginx -y ``` 查看 [/etc/nginx/nginx.conf][edit-default],具体配置含义可见如下注释(无需操作): ```conf /// <example verb="edit" file="/etc/nginx/nginx.conf" /> listen 服务监听端口 server_name 服务名称,一般为域名; root 网站文件路径; include 引用配置文件; location 重写规则填写; error_page 错误页跳转; ``` 启动 Nginx: ``` nginx ``` 此时,可访问实验机器外网 HTTP 服务([http://${runtime.vars.cvmIpAddress}][])来确认是否已经安装成功。 将 Nginx 设置为开机自动启动: ``` systemctl enable nginx ``` > <locate for="edit-default" path="/etc/nginx/nginx.conf" hint="查看 Nginx 配置" /> > <checker type="output-contains" command="ls /etc/nginx/" hint="Nginx 未安装"> > <keyword regex="nginx.conf" /> > </checker> > <checker type="output-contains" command="netstat -nltp" hint="Nginx 未启动"> > <keyword regex="LISTEN" /> > <keyword regex="80" /> > </checker> ### 安装 PHP 使用 `yum` 安装 PHP7: ``` yum install epel-release -y rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum install php70w-fpm -y ``` 安装之后,启动 PHP-FPM 进程: ``` systemctl start php-fpm ``` 启动之后,可以使用下面的命令查看 PHP-FPM 进程监听哪个端口 [:question][port] ``` netstat -nlpt | grep php-fpm ``` 把 PHP-FPM 也设置成开机自动启动: ``` systemctl enable php-fpm ``` > <bubble for="port"> > PHP-FPM 默认监听 9000 端口 > </bubble> > <checker type="output-contains" command="netstat -nlpt" hint="PHP-FPM 进程未启动"> > <keyword regex="php-fpm" /> > </checker> ## 配置安装本地 VFM > <time>20min</time> ### VFM 程序下载获取 使用 `wget` 安装 VFM : ``` mkdir /usr/share/VFM/ cd /usr/share/VFM/ wget https://about-10050352.cos.ap-shanghai.myqcloud.com/VFM3.45.zip unzip VFM3.45.zip mv vfm/* /usr/share/VFM/ chmod 777 /usr/share/VFM/ -R * ``` > <bubble for="wpinstall"> > 也可以自行下载最新中文版 VFM,上传到相应目录即可 > https://codecanyon.net/item/veno-file-manager-host-and-share-files/6114247 > </bubble> 安装完成后,就可以在 [/usr/share/VFM][vfm-path] 看到 VFM 的源代码了。 > <locate for="vfm-path" path="/usr/share/VFM" hint="VFM 源码在此" /> > <checker type="output-contains" command="ls /usr/share/VFM" hint="VFM 尚未安装"> > <keyword regex="index.php" /> > </checker> ### 配置 Nginx VFM 已经安装完毕,我们配置 Nginx 把请求转发给 PHP-FPM 来处理 首先,修改默认的配置文件 [nginx.conf][nginxconf]:[:question][rename],去掉 ~~default_server~~默认站点 ``` # listen 80 default_server; listen 80 ; ``` 在 `/etc/nginx/conf.d` [创建 VFM.conf 配置][VFM-nginx],参考下面的内容: ```conf /// <example verb="create" file="/etc/nginx/conf.d/VFM.conf" /> server { listen 80 default_server; root /usr/share/VFM; location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php index.php; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` [配置 PHP session ][session] : > <bubble for="session"> > 如出现 VFM 无法正常上传,则需进行此操作 > </bubble> 打开 [www.conf][wwwconf] ,查看当前 session.save_path 设置: ``` php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache ``` 如路径为上述所示,需查看 session 路径是否存在,不存在则需新建,否则 VFM 无法拉取本地路径: ``` mkdir -p /var/lib/php/session chmod 777 /var/lib/php/session -R * mkdir -p /var/lib/php/wsdlcache chmod 777 /var/lib/php/wsdlcache -R * ``` > <locate for="wwwconf" path="/etc/php-fpm.d/www.conf" hint="查看 session.save_path 路径" /> 配置后,通知 Nginx 进程重新加载: ``` nginx -s reload ``` 目前,整个本地存储安装已经完成,可以直接通过IP访问:[http://${runtime.vars.domain}][] ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/87u6hw1dyq/image.png) ``` 默认登录管理: 用户名 admin 密码 password ``` > <bubble for="rename"> > 删除默认站点配置 > </bubble> > <locate for="VFM-nginx" path="/etc/nginx/conf.d" hint="右击新建 VFM.conf 文件" /> > <locate for="nginxconf" path="/etc/nginx/nginx.conf" hint="修改 nginx.conf" /> > <checker type="output-contains" command="cat /etc/nginx/conf.d/VFM.conf" hint="为 VFM 添加 Nginx 配置"> > <keyword regex="VFM" /> > </checker> ## 增加 COS 对象存储桶挂载 > <time>10min ~ 20min</time> ### 新建 Bucket 做为 VFM 存储空间 点击 [新建 Bucket][https://console.cloud.tencent.com/cos/bucket] ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/9vhaqo92al/image.png) ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/onqpi316zz/image.png) ### 安装 COSFS 工具 获取源码 ``` yum install git -y git clone https://github.com/tencentyun/cosfs /usr/cosfs ``` 安装相关依赖 ``` yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel fuse -y ``` 编译和安装 COSFS ``` cd /usr/cosfs ./autogen.sh ./configure make sudo make install ``` 查看 COSFS 版本及说明 ``` cosfs --version ``` > <checker type="output-contains" command="cosfs --version" hint="安装COSFS"> > <keyword regex="Tencentyun" /> > </checker> ### 配置 COSFS 文件 `/etc/passwd-cosfs` 中,写入存[储桶名称][https://console.cloud.tencent.com/cos/bucket] <Name>-<Appid>,以及该存储桶对应的 [SecretId][https://console.cloud.tencent.com/cam/capi] 和 [SecretKey][https://console.cloud.tencent.com/cam/capi],三项之间使用半角冒号隔开。且为防止密钥泄露,COSFS 要求您将密钥文件的权限设置成 640,配置 /etc/passwd-cosfs 密钥文件的命令格式如下 ``` echo <BucketName-APPID>:<SecretId>:<SecretKey> > /etc/passwd-cosfs chmod 640 /etc/passwd-cosfs ``` 参考下面的内容: ``` echo vfm-1251746107:AKIDHTVVaVR6e3:PdkhT9e2rZCfy6 > /etc/passwd-cosfs chmod 640 /etc/passwd-cosfs ``` [BucketName-APPID][https://console.cloud.tencent.com/cos/bucket] 获取: ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/vl523ujjn1/image.png) [SecretId,SecretKey][https://console.cloud.tencent.com/cam/capi] 获取: ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/n8d8ngqvzm/image.png) > <checker type="output-contains" command="ls /etc/passwd-cosfs -a" hint="安装COSFS"> > <keyword regex="/etc/passwd-cosfs" /> > </checker> ### 运行 COSFS 将已经在密钥文件中配置好信息的存储桶挂载到指定目录,可以使用如下命令行: ``` cosfs <BucketName-APPID> <MountPoint> -ourl=<CosDomainName> -odbglevel=info ``` * `MountPoint` 为VFM网盘上传目录(如 /usr/share/VFM/uploads)。 * `CosDomainName` 为存储桶对应的访问域名,形式为 http://cos.<Region>.myqcloud.com (适用于XML API,请勿在该参数中携带存储桶名称),其中 `Region` 为地域简称, 如: ap-guangzhou 、 eu-frankfurt 等。更多地域信息,请查阅 可用地域。 * `-odbglevel` 指定日志级别。 [CosDomainName][https://console.cloud.tencent.com/cos/bucket] 查看 ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/ek4w50qm6c/image.png) 移除旧 uploads ,并新建挂载目录: ``` mv /usr/share/VFM/uploads /usr/share/VFM/uploads_old mkdir -p /usr/share/VFM/uploads ``` 创建 cosfs 挂载示例如下: ``` cosfs vfm-1251746107 /usr/share/VFM/uploads -ourl=http://cos.ap-chengdu.myqcloud.com -odbglevel=info -onoxattr -oallow_other ``` ## 实验存储验证 > <time>5min ~ 10min</time> ### 实验存储验证 可直接通过IP访问:[http://${runtime.vars.domain}][] 首先用 VFM 上传一张图片 ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/bx2c7qxols/image.png) 打开 COS 存储桶管理即可查看已经上传完成的文件 ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/liomo61e8z/image.png) ### 改进及建议 我们在实验中发现 根节点 会出现 `DataTables warning` 但是并不影响子目录的上传和访问 ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/85df1ynmdy/image.png) 这个报错主要是 VFM 的程序逻辑,COS存储桶的目录挂载可以用在 wordpress,Discuz 等不依赖 ajax 组件的cms系统,当然我们也可以尝试[文件存储进行挂载][https://cloud.tencent.com/product/cfs],或者自行修改程序。