Linux Centos7.5 安裝FastDFS以及遇到的坑
目錄:
附:Linux Centos7.5安裝FastDFS所需軟體
準備工作
1、安裝編譯工具及庫檔案
2、上傳所需檔案到linux虛擬機器上
3、安裝FastDFS
4、測試:
5、安裝nginx
6、FastDFS與Nginx整合
特別注意:
最後的測試:
前言:
在linux Centos7.5安裝FastDFS,感覺真是特別的複雜,安裝了兩天,終於成功了。因此寫一部落格記錄下來。
一、準備工作
1、安裝編譯工具及庫檔案
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2、上傳所需檔案到linux虛擬機器上
mkdir software 建立software資料夾(目錄路徑:/usr/local/software)
這裡我是用Xftp工具上傳的,當然其它工具也行。
這裡特別說明:(建議版本與我一致,否則可能會報錯)
下載:(注:)
https://codeload.github.com/happyfish100/libfastcommon/zip/master
1)安裝libfastcommon時(特別注意,容易遇到坑)
此處需要注意的是需要下載:libfastcommon-master.zip,可以在百度自己搜下安裝包,我剛開始在官網下載了libfastcommon_v1.04.tar.gz 和libfastcommon_v1.01.tar.gz 之後,在編譯安裝完後,再去FastDFS目錄中編譯安裝會報錯,報缺少檔案。
由於在網上遇到過100kb的,這個之前與fast5.05安裝時是成功的,但是與fast5.08安裝就會報缺少檔案的錯。
如果遇到../common/fdfs_global.c:20:20: 致命錯誤:logger.h:沒有那個檔案或目錄,這個錯誤。
那麼請更換libfastcommon包,我使用libfastcommon_v1.04.tar.gz 和libfastcommon_v1.01.tar.gz 均報錯,安裝libfastcommon-master.zip時可以的。
unzip libfastcommon-master.zip -d /usr/local/fast/ #解壓libfastcommon-master.zip到/usr/local/fast/目錄下 yum install unzip #如果提示-bash: :unzip: 未找到命令,需要執行此命令,否則可以忽略 cd /usr/local/fast/libfastcommon-master #進入該目錄 ./make.sh && ./make.sh install #編譯並安裝
編譯安裝後,發現libfastcommon預設安裝到了/usr/lib64/這個 位置。
ls | grep libfastcommon.so #可以通過此命令在/usr/lib目錄和/usr/lib64都檢視下
cd /usr/lib
ls | grep libfastcommon.so
cd /usr/lib64/
ls | grep libfastcommon.so
FastDFS版本不同的差異:
FastDFS_v5.05.tar.gz:
FastDFS_v5.08.tar.gz:
進行軟體建立。FastDFS主程式設定的目錄為/usr/local/lib/,所以我們需要建立/ usr/lib64/下的一些核心執行程式的軟連線檔案。
cd /usr/local/lib #如果沒有/usr/local/lib,則mkdir /usr/local/lib
##建立軟連線
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so #如果是fastdfs5.0.8,這一步會提示已存在
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
3、安裝FastDFS
cd /usr/local/software #進入/usr/local/software目錄下
tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast/ #解壓
cd /usr/local/fast/FastDFS/ #進入/usr/local/fast/FastDFS/ 目錄下
./make.sh && ./make.sh install #編譯並安裝
ps:
如果你在執行編譯安裝命令時遇到下面這種錯誤,更換FastDFS 版本,或者libfastcommon-master.zip包,如果libfastcommon-master.zip是100kb左右的,用FastDFS5.0.5,如果是212kb的壓縮包,使用FastDFS5.0.8的。在這裡用的是是100kb左右的libfastcommon-master.zip,使用FastDFS_v5.08.tar.gz,結果在編譯安裝時報如下錯誤:(我更換到FastDFS_v5.05.tar.gz,報錯提示沒有了)
/usr/include/fastcommon/ioevent.h:82:2: 錯誤:#error port me
#error port me
^
/usr/include/fastcommon/ioevent.h:95:2: 錯誤:#error port me
#error port me
^
/usr/include/fastcommon/ioevent.h:108:2: 錯誤:#error port me
#error port me
cd /usr/bin && ls |grep fdfs #進入/usr/bin目錄下,並列出fdfs的所有指令碼
這裡5.05版本需要更改,5.0.8預設是usr/bin了 ,因此執行編輯檔案替換命令的這幾步可以省略了,當然穩妥起見可以進入配置檔案看看。
##因為FastDFS服務指令碼設定的bin目錄為/usr/local/bin/下,但是實際我們安裝在了/usr/bin/下面。所以我們需要修改FastDFS配置檔案中的路徑,也就是需要修改兩個配置檔案
yum -y install vim* #如果vim編輯命令,執行後,提示找不到命令,就執行這個,否則可忽略
vim /etc/init.d/fdfs_storaged #編輯fdfs_storaged 檔案
:%s+/usr/local/bin+/usr/bin #然後回車,執行全域性替換命令,:wq!儲存退出
vim /etc/init.d/fdfs_trackerd
:%s+/usr/local/bin+/usr/bin #然後回車,執行全域性替換命令,:wq!儲存退出
cd /etc/fdfs/ #進入/etc/fdfs/目錄下
##拷貝,並重命名
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf
cp tracker.conf.sample tracker.conf
效果圖如下:
編輯tracker.conf:
vim /etc/fdfs/tracker.conf #編輯tracker.conf
base_path=/fastdfs/tracker #暫時就只修改tracker.conf中base_path內容
mkdir -p /fastdfs/tracker #由於tracker.conf中base_path的/fastdfs/tracker路徑沒有,所以需建立
Centos7關閉防火牆方法(詳解):
centos7中的防火牆改成了firewall,使用iptables無作用,開放埠的方法如下:
firewall-cmd --zone=public --add-port=80/tcp --permanent
返回success為成功
######################################################################################
命令含義:
--zone #作用域
--add-port=80/tcp #新增埠,格式為:埠/通訊協議
--permanent #永久生效
######################################################################################
systemctl restart firewalld.service #重啟防火牆
systemctl stop firewalld.service #關閉防火牆
netstat -lntp #檢視監聽(Listen)的埠
netstat -lnp|grep 8080 #檢查埠被哪個程序佔用
注:此處僅為學習,所以直接關閉防火牆即可,如果在公司,則只能開啟所用埠,不能關閉。
tracker啟動:
cd /fastdfs/tracker/ && ll #進入/fastdfs/tracker/ 目錄並檢視該目錄下所有檔案
注:啟動tracker兩種方式:
方式一:
/etc/init.d/fdfs_trackerd start #啟動tracker命令
/etc/init.d/fdfs_trackerd stop #停止tracker命令
方式二:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start #啟動tracker命令
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop #關閉tracker命令
這裡方式一、方法二都可以在/fastdfs/tracker目錄下生成data,log資料夾。
效果圖如下:
修改storage.conf檔案:
vim /etc/fdfs/storage.conf #修改storage.conf檔案
##修改內容:
base_path=/fastdfs/storage
store_path0=/fastdfs/storage
tracker_server=192.168.59.131:22122 ##改成自己的虛擬機器IP地址
http.server_port=80
mkdir -p /fastdfs/storage #建立storage.conf中的base_path、store_path0路徑
注:啟動關閉storaged 兩種方式:
方式一:
/etc/init.d/fdfs_storaged start #啟動storaged
/etc/init.d/fdfs_storaged stop #關閉storaged
方式二:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start #啟動storaged
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop #關閉storaged
(我第一次安裝成功是用FastDFS5.05版本,用方式一併沒有生成data和log檔案,我第二次安裝用5.0.8版本,可以生成兩個檔案夾了)
第一次安裝成功的時候使用FastDFS5.05版本:
對比如圖:使用方式一,並沒有在/fastdfs/storage目錄下生成data和log資料夾,而方式二可以。
第二次安裝的時候FastDFS5.0.8版本:
對比圖:
cd /fastdfs/storage/data/ && ls #進入/fastdfs/storage/data/,並檢視
效果圖:
##設定開機啟動
命令:vim /etc/rc.d/rc.local
加入配置:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
第二次安裝fastdfs開機啟動的配置我是用方式一的啟動命令,看自己吧。
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start
編輯client.conf檔案 :
##編輯client.conf檔案
命令:vim /etc/fdfs/client.conf
######################################################################################
修改內容:
base_path=/fastdfs/tracker
tracker_server=192.168.59.131:22122
cd /usr/bin && ls |grep fdfs
效果圖:
4、測試:
原本/fastdfs/storage/data/00/00為空,並沒有檔案。
我們進行上傳操作,比如把之前的/usr/local/software/資料夾下的某一個 檔案上傳到FastDFS系統中去,命令如 下:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/software/FastDFS_v5.05.tar.gz
效果圖如下: (/fastdfs/storage/data/00/00 目錄中已經有檔案了)
注:
這生成的group1/M00/00/00/wKg7g1vlYXeATmYTAAVFOL7FJU4.tar.gz就是我們訪問路徑的一部分,完整路徑是192.168.59.131/group1/M00/00/00/wKg7g1vlYXeATmYTAAVFOL7FJU4.tar.gz
5、安裝nginx(建議此處不要用yum方式安裝nginx,因為需要新增模組,沒有./configure)
tar -zxvf nginx-1.14.1.tar.gz -C /usr/local/ #解壓nginx-1.14.1.tar.gz,並放在/usr/local/目錄下
安裝pcre:
yum -y install wget #如果wget沒有安裝的,報wget命令未找到,需要先安裝wget,否則可以忽略
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz #安裝pcre
tar -zxvf pcre-8.35.tar.gz -C /usr/local #解壓到/usr/local
cd /usr/local/pcre-8.35 #進入pcre-8.35目錄
./configure
make && make install #編譯安裝
pcre-config --version #檢視版本
效果圖:
進入nginx的安裝目錄
cd /usr/local/nginx-1.14.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module
make && make install #編譯並安裝
現在可以在主機瀏覽器中輸入你的ip地址,效果如圖,則表明已經成功安裝nginx。
6、FastDFS與Nginx整合
需要安裝fastdfs-nginx-module。
cd /usr/local/software/ #進入/usr/local/software/目錄下
tar -zxvf /usr/local/software/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/
#解壓fastdfs-nginx-module_v1.16.tar.gz到/usr/local/fast/目錄中
cd fast/fastdfs-nginx-module/src/ #進入fast/fastdfs-nginx-module/src/目錄下
vim /usr/local/fast/fastdfs-nginx-module/src/config #編輯配置檔案config
:%s+/usr/local+/usr #將config檔案中的/usr/local替換成/usr
修改後的配置檔案config如圖:
rm -rf nginx #首先把之前的nginx進行刪除
cd nginx-1.14.1/ #進入nginx-1.14.1目錄下
./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/
make && make install #編譯安裝
##複製fastdfs-ngin-module中的配置檔案,到/etc/fdfs目錄中
命令:cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
## 進行修改 /etc/fdfs/ 目錄下,我們剛剛copy過來的mod_fastdfs.conf 檔案
vim /etc/fdfs/mod_fastdfs.conf
修改內容:比如連線超時時間、跟蹤器路徑配置、url的group配置、
connect_timeout=10
tracker_server=192.168.59.131:22122
url_have_group_name = true
store_path0=/fastdfs/storage
##複製FastDFS裡的2個檔案,到/etc/fdfs目錄中
cd /usr/local/fast/FastDFS/conf/ #進入/usr/local/fast/FastDFS/conf目錄下
cp http.conf mime.types /etc/fdfs/ #將http.conf,mime.types兩個檔案拷貝到/etc/fdfs/目錄下
##建立一個軟連線,在/fastdfs/storage檔案儲存目錄下建立軟連線,將其連結到實際存放資料 的目錄。
cd /fastdfs/storage #進入/fastdfs/storage目錄下
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
##編輯nginx.conf
cd /usr/local/nginx/conf #進入/usr/local/nginx/conf目錄下
vim nginx.conf #編輯nginx.conf
編輯如圖:(部分截圖,只需新增如下部分)
location ~/group([0-9])/M00 {
root /fastdfs/storage/data;
ngx_fastdfs_module;
}
注意:nginx裡的埠要和配置FastDFS儲存中的storage.conf檔案配置一致, 也就是(http.server_port=80)
特別注意:
這裡的nginx啟動命令是:
關閉nginx命令:/usr/local/nginx/sbin/nginx -s stop
啟動nginx命令:/usr/local/nginx/sbin/nginx
檢視版本命令:/usr/local/nginx/sbin/nginx -v
如果直接用nginx -s stop,nginx -s reload,nginx -v。。。。。會報錯:
如果遇到使用命令/usr/local/nginx/sbin/nginx -s reload,出現報錯:nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
解決方法(命令如下,效果如上圖):
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
以上命令太長,比較複雜,因此提供解決辦法:編輯etc目錄下的profile檔案。
vim /etc/profile
在最後一行加上PATH=$PATH:/usr/local/nginx/sbin
,儲存退出
source profile,讓profile配置檔案生效
具體如下圖:
最後的測試:
1.storage,tracker,nginx需要是啟動的。
/etc/init.d/fdfs_trackerd start 啟動
/etc/init.d/fdfs_storaged start 啟動
ps -ef | grep fdfs 檢視fdfs服務是否啟動
ps -ef | grep nginx 檢視nginx服務是否啟動