某公司的社交網站採用PHP語言開發,爲了管理PHP程序員開發的代碼,上級領導要求搭建SVN服務器進行版本控制。社交網站的第一個版本部署在LNMP平臺之上,前端爲Nginx服務器,經過fastcgi協議訪問後端的PHP服務器。爲了保證數據安全,要求搭建MySQL數據庫主從集羣。php
社交網站項目包含用戶的相冊功能,容許用戶上傳照片,上傳照片須要使用共享存儲來存放。針對共享存儲可用的開源方案有不少,如MFS、FastDFS 等。公司決定使用MFS分佈式文件系統來實現,並將MFS掛載在PHP服務器的相關目錄下。html
根據公司的需求,實施過程大體分爲如下步驟。前端
yum install -y zlib-devel gcc gcc-c++ //安裝依賴包環境包 useradd mfs -s /sbin/nologin -M //建立管理用戶 tar xzvf mfs-1.6.27-5.tar.gz -C /opt/ cd /opt/mfs-1.6.27/ ./configure \ --prefix=/usr/local/mfs \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfschunkserver \ --disable-mfsmount make && make install
cd /usr/local/mfs/etc/mfs/ cp mfsmaster.cfg.dist mfsmaster.cfg # 主配置文件 cp mfsexports.cfg.dist mfsexports.cfg # 掛載權限 cp mfstopology.cfg.dist mfstopology.cfg # top架構感知 cd /usr/local/mfs/var/mfs/ cp metadata.mfs.empty metadata.mfs #防斷裂
/usr/local/mfs/sbin/mfsmaster start //開啓 /usr/local/mfs/sbin/mfsmaster -s //中止 netstat -antp | grep mfs systemctl stop firewalld.service setenforce 0 //關閉防火牆和安全功能
yum install -y zlib-devel gcc gcc-c++ //安裝依賴包環境包 useradd mfs -s /sbin/nologin -M //建立管理用戶 tar xzvf mfs-1.6.27-5.tar.gz -C /opt/ cd /opt/mfs-1.6.27/ ./configure \ --prefix=/usr/local/mfs \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfschunkserver \ --disable-mfsmount make && make install
cd /usr/local/mfs/etc/mfs/ cp mfsmaster.cfg.dist mfsmaster.cfg cp mfsexports.cfg.dist mfsexports.cfg cp mfsmetalogger.cfg.dist mfsmetalogger.cfg vim mfsmetalogger.cfg ...... MASTER_HOST = 192.168.43.118 //IP指向master
/usr/local/mfs/sbin/mfsmetalogger start //開啓 /usr/local/mfs/sbin/mfsmetalogger -s //中止 netstat -antp | grep mfs systemctl stop firewalld.service setenforce 0 //關閉防火牆和安全功能
yum install -y zlib-devel gcc gcc-c++ //安裝依賴包環境包 useradd mfs -s /sbin/nologin -M //建立管理用戶 tar xzvf mfs-1.6.27-5.tar.gz -C /opt/ cd /opt/mfs-1.6.27/ ./configure \ --prefix=/usr/local/mfs \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfsmaster \ --disable-mfsmount make && make install
cd /usr/local/mfs/etc/mfs/ cp mfschunkserver.cfg.dist mfschunkserver.cfg cp mfshdd.cfg.dist mfshdd.cfg vim mfschunkserver.cfg ...... MASTER_HOST = 192.168.43.118 //IP指向master vim mfshdd.cfg ...... /data //添加一行/data,在這裏/data是一個給MFS的分區,生產環境最好使用獨立的分區或磁盤掛載到此目錄 mkdir /data //建立文件夾 chown -R mfs:mfs /data //屬主屬組都改成mfs
/usr/local/mfs/sbin/mfschunkserver start //開啓 /usr/local/mfs/sbin/mfschunkserver start -s //中止 netstat -antp | grep mfs systemctl stop firewalld.service setenforce 0 //關閉防火牆和安全功能
此處PHP服務器是客戶端角色,在PHP服務器上搭建c++
yum install -y zlib-devel gcc gcc-c++ //安裝依賴包環境包 tar xzvf fuse-2.9.2.tar.gz -C /opt //mfs客戶端依賴於fuse cd /opt/fuse-2.9.2 ./configure make && make install
vim /etc/profile #在末尾處插入 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH source /etc/profile //加載當即生效
useradd mfs -s /sbin/nologin -M //建立管理用戶 tar xzvf mfs-1.6.27-5.tar.gz -C /opt/ cd /opt/mfs-1.6.27/ ./configure \ --prefix=/usr/local/mfs \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfschunkserver \ --enable-mfsmount //注意此處開啓客戶端 make && make install
將MFS文件系統掛載在前端PHP服務器的/var/www/html/webphp/uploads/photos目錄下程序員
mkdir -p /var/www/html/webphp/uploads/photos //建立掛載點 modprobe fuse //加載fuse模塊到內核 /usr/local/mfs/bin/mfsmount /var/www/html/webphp/uploads/photos -H 192.168.43.118 //掛載MFS