快速搭建共享雲盤實戰
實驗環境及簡介
任務時間:10min ~ 20min
本次實驗將基於COS 和COSFS 工具,在VFM 3.45 版本上搭建簡單的存儲網盤。實現多地掛載,一地存儲,展示對象存儲的易用性。
COSFS 簡介
COSFS 工具支持將COS 存儲桶掛載到本地,像使用本地文件系統一樣直接操作騰訊雲對象存儲中的對象, COSFS 提供的主要功能包括:
支持POSIX 文件系統的大部分功能,如:文件讀寫、目錄操作、鏈接操作、權限管理、uid/gid 管理等功能。
大文件分塊傳輸功能。
MD5 數據校驗功能。
Veno File Manager 簡介
Veno File Manager 是一個簡單而靈活的即插即用文件管理器,易於使用且有很多選項。將文件發送給其他小伙伴,使用專用文件夾創建新用戶,或者只是將其用作個人文件雲都非常方便快捷。支持從任何設備訪問,擁有直觀的管理面板,可以方便快捷的進行自定義。程序本身無需使用數據庫。
所需環境:Nginx/Apache、PHP
實驗環境安裝
任務時間:時間未知
安裝Nginx
使用yum
安裝Nginx:
yum install nginx -y
查看/etc/nginx/nginx.conf,具體配置含義可見如下註釋(無需操作):
示例代碼:/etc/nginx/nginx.conf
listen 服务监听端口
server_name 服务名称,一般为域名;
root 网站文件路径;
include 引用配置文件;
location 重写规则填写;
error_page 错误页跳转;
啟動Nginx:
nginx
此時,可訪問實驗機器外網HTTP服務(http://<您的CVM IP地址>)來確認是否已經安裝成功。
將Nginx 設置為開機自動啟動:
systemctl enable nginx
安裝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進程監聽哪個端口[ ? ]
netstat -nlpt | grep php-fpm
把PHP-FPM 也設置成開機自動啟動:
systemctl enable php-fpm
PHP-FPM 默認監聽9000 端口
配置安裝本地VFM
任務時間:20min
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 *
安裝完成後,就可以在/usr/share/VFM看到VFM的源代碼了。
也可以自行下載最新中文版VFM,上傳到相應目錄即可 https://codecanyon.net/item/veno-file-manager-host-and-share-files/6114247
配置Nginx
VFM 已經安裝完畢,我們配置Nginx 把請求轉發給PHP-FPM 來處理
首先,修改默認的配置文件nginx.conf:[ ? ],去掉default_server默認站點
# listen 80 default_server;
listen 80 ;
在/etc/nginx/conf.d
創建VFM.conf配置,參考下面的內容:
示例代碼:/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 ]:
打開www.conf ,查看當前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 *
配置後,通知Nginx 進程重新加載:
nginx -s reload
目前,整個本地存儲安裝已經完成,可以直接通過IP訪問:http://<您的域名>
默认登录管理:
用户名 admin
密码 password
如出現VFM 無法正常上傳,則需進行此操作
刪除默認站點配置
增加COS 對象存儲桶掛載
任務時間:10min ~ 20min
新建Bucket 做為VFM 存儲空間
點擊新建Bucket
安裝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
配置COSFS
文件/etc/passwd-cosfs
中,寫入存儲桶名稱 -,以及該存儲桶對應的SecretId和SecretKey,三項之間使用半角冒號隔開。且為防止密鑰洩露,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
運行COSFS
將已經在密鑰文件中配置好信息的存儲桶掛載到指定目錄,可以使用如下命令行:
cosfs <BucketName-APPID> <MountPoint> -ourl=<CosDomainName> -odbglevel=info
MountPoint
為VFM網盤上傳目錄(如/usr/share/VFM/uploads)。CosDomainName
為存儲桶對應的訪問域名,形式為http://cos ..myqcloud.com (適用於XML API,請勿在該參數中攜帶存儲桶名稱),其中Region
為地域簡稱,如: ap-guangzhou 、 eu-frankfurt等。更多地域信息,請查閱可用地域。-odbglevel
指定日誌級別。CosDomainName查看
移除舊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
實驗存儲驗證
任務時間:5min ~ 10min
實驗存儲驗證
可直接通過IP訪問:http://<您的域名>
首先用VFM 上傳一張圖片
打開COS 存儲桶管理即可查看已經上傳完成的文件
改進及建議
我們在實驗中發現根節點會出現DataTables warning
但是並不影響子目錄的上傳和訪問
這個報錯主要是VFM的程序邏輯,COS存儲桶的目錄掛載可以用在wordpress,Discuz等不依賴ajax組件的cms系統,當然我們也可以嘗試文件存儲進行掛載,或者自行修改程序。