回到家目錄
cd ~
新建packages目錄(用于存放 下載的包)
mkdir packages
下載libfastcommon蜻底、fastdfs、fastdfs-nginx-module
:
# -S print server response
# -O write documents to file
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz -SO libfastcommon.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz -SO fastdfs.tar.gz
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz -SO fastdfs-nginx-module.tar.gz
# 解壓
tar -xf xxx.tar.gz
安裝 libfastcommon
# 切到解壓目錄
cd ~/packages/libfastcommon-1.0.39
./make.sh
./make.sh install
# 最好本機(jī)執(zhí)行make聘鳞。遠(yuǎn)端ssh 執(zhí)行薄辅,可能會報(bào)錯(cuò)
安裝 fastdfs
cd ~/packages/fastdfs-5.11
./make.sh
./make.sh install
安裝好后,程序是在/usr/bin目錄下:
$ which fdfs_trackerd
/usr/bin/fdfs_trackerd
而配置文件是在/etc/fdfs目錄下:
# 但是這些配置文件是不全的抠璃,而且都是模板
$ ls /etc/fdfs
client.conf.sample storage_ids.conf.sample tracker.conf.sample storage.conf.sample
但是這些配置文件是不全的站楚,而且都是模板,需要所以需要拷貝并重命名 模板文件tracker.conf.sample , storage.conf.sample, client.conf.sample
搏嗡,并修改它們的配置:
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
修改配置
在家目錄下新建tracker, storage, client
目錄:
$ cd ~
$ mkdir tracker
$ mkdir storage
$ mkdir client
sudo vi /etc/fdfs/tracker.conf
:
# the tracker server port
port=22122
# the base path to store data and log files
base_path=/home/python/fastdfs/tracker
# HTTP port on this tracker server
http.server_port=8888
sudo vi /etc/fdfs/storage.conf
:
# storage所屬的組
group_name=group1
# the storage server port
port=23000
# tracker服務(wù)器窿春,雖然是同一臺機(jī)器上拉一,但是不能寫127.0.0.1。這項(xiàng)配置可以出現(xiàn)一次或多次
tracker_server=10.211.55.15:22122
# the port of the web server on this storage server
http.server_port=8888
# the base path to store data and log files
base_path=/home/python/fastdfs/storage
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/home/python/fastdfs/storage
#store_path1=/home/caibh/fdfs2
sudo vi /etc/fdfs/client.conf
:
# the base path to store log files
base_path=/home/python/fastdfs/tracker
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=10.211.55.15:22122
#HTTP settings
http.tracker_server_port=8888
# 切到~/packages/fastdfs-nginx-module-1.20目錄:
$ cd ~/packages/fastdfs-nginx-module-1.20
# 拷貝fastdfs-nginx-module-master/src下的mod_fastdfs.conf 到 /etc/fdfs/mod_fastdfs.conf
$ sudo cp src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
sudo vim /etc/fdfs/mod_fastdfs.conf
:
connect_timeout=10
# the base path to store log files
base_path=/tmp
# FastDFS tracker_server
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=自己虛擬機(jī)的ip地址(10.211.55.15):22122
# the port of the local storage server
# the default value is 23000
storage_server_port=23000
# the group name of the local storage server
group_name=group1
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as storage.conf
store_path0=/home/python/fastdfs/storage
#store_path1=/home/yuqing/fastdfs1
url_have_group_name=true
配置過程中有幾點(diǎn)要注意:
- 確保各種配置文件之間引用的端口一直旧乞。比如:
mod_fastdfs.conf文件中tracker_server的端口應(yīng)該跟tracker.conf中port一致蔚润;
mod_fastdfs.conf文件中storage_server_port的端口應(yīng)該跟跟storage.conf中port一致;
其他配置文件(
anti-steal.jpg http.conf mime.types storage_ids.conf
)雖然不用修改尺栖,但是fastdfs-nginx-module模塊會用到嫡纠。因此需要復(fù)制fastdfs-nginx-module/src/
下的anti-steal.jpg http.conf mime.types storage_ids.conf
到 /etc/fdfs目錄下。-
上面的配置 有錯(cuò)誤的地方:除了22122延赌,23000這兩個(gè)端口除盏,其它(以http開頭的端口,諸如http.server_port, http.tracker_server_port)端口要一致(同時(shí)皮胡,也要和/usr/local/nginx/conf/nginx.conf 中的server - listen 端口一致)痴颊。
/usr/local/nginx/conf/nginx.conf
中赏迟,要添加一行user root;
(行尾要加上分號;
), 來賦予nginx權(quán)限屡贺。
port端口設(shè)置 注意事項(xiàng)
注意事項(xiàng):上圖中(上圖中以開頭的配置項(xiàng), 實(shí)際配置過程 并不帶號,只是為了 著重強(qiáng)調(diào)這幾個(gè)配置項(xiàng)) 锌杀,以
http開頭的端口
配置 應(yīng)該 保持一致甩栈。
tracker.conf:
port = 22122 # the tracker server port
*http.server_port = 8888,(8080默認(rèn)) # HTTP port on this tracker server
storage.conf
port = 23000 # the storage server port
tracker_server=10.211.55.15:22122 # tracker server
*http.server_port = 8888,(8888默認(rèn)) # the port of the web server on this storage server
client.conf
tracker_server=10.211.55.15:22122 # tracker server
*http.tracker_server_port = 8888, (80默認(rèn)) # http settings
mod_fastdfs.conf
tracker_server=10.211.55.15:22122 # FastDFS tracker_server
storage_server_port=23000 # the port of the local storage server
nginx.conf
listen 8888 # ***應(yīng)該和上面的http端口 一致***。
啟動tracker
和storage
:
# 啟動
$ fdfs_trackerd /etc/fdfs/tracker.conf start
$ fdfs_storaged /etc/fdfs/storage.conf start
# 停止
$ service fdfs_trackerd stop
$ fdfs_trackerd /etc/fdfs/tracker.conf stop
$ service fdfs_storaged stop
$ fdfs_storaged /etc/fdfs/storage.conf stop
# 查看fdfs_trackerd, fdfs_storaged是否存活
$ ps aux | grep fdfs
# 查看nginx是否存活
$ ps aux | grep nginx
# 查看日志
$ tail -n10 ~/fastdfs/tracker/logs/trackerd.log
$ tail -n10 ~/fastdfs/storage/logs/storaged.log
# 如果日志顯示有錯(cuò)誤信息糕再,需要根據(jù)信息來查找錯(cuò)誤原因
用fdfs_tes
t測試上傳
$ fdfs_test /etc/fdfs/client.conf upload ~/Downloads/logo_small.png
如果返回類似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg
的文件id則說明文件上傳成功
安裝nginx
# 解壓縮 nginx-1.16.0.tar.gz
$ tar -xf nginx-1.16.0.tar.gz
# 進(jìn)入nginx-1.16.0目錄中
$ cd ~/packages/nginx-1.16.0
# --prefix表示 安裝路徑量没,--add-module表示 加入fastdfs-nginx-module-1.20模塊
$ sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/python/packages/fastdfs-nginx-module-1.20/src
################################
# 想要徹底刪除 `tar包安裝的nginx`,需要刪除--prefix目錄(即是 目錄/usr/local/nginx). 命令$ rm -rf /usr/local/nginx
################################
$ sudo make
$ sudo make install
# 執(zhí)行make時(shí)突想,可能會報(bào)錯(cuò)
Fatal error: can't create objs/addon/src/ngx_http_fastdfs_module.o: Permission denied
In file included from /home/xxxx/caibh/fdfs-package/fastdfs-nginx-module-1.20/src/common.c:26:0,
from /home/xxxx/caibh/fdfs-package/fastdfs-nginx-module-1.20/src/ngx_http_fastdfs_module.c:6:
/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory
# 解決方法
# 修改fastdfs-nginx-module的src/config文件
$ cd /home/python/packages/fastdfs-nginx-module-1.20/src
$ sudo vi config
# 修改以下兩項(xiàng):
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
sudo vim /usr/local/nginx/conf/nginx.conf
###########################################
# 添加下面一行(這行 很重要)
user root;
###########################################
# 在http部分中添加配置信息如下:
# listen 8888:監(jiān)聽端口8888
# server_name localhost: 域名localhost
# location: 瀏覽器訪問路徑中含有`group[0-9]`時(shí)殴蹄,`nginx`會從`fastdfs`中 取文件
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
root /home/python/fastdfs/storage/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
啟動nginx
# 啟動nginx
$ sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 停止nginx
$ sudo /usr/local/nginx/sbin/nginx -s stop
# 重新加載nginx
sudo /usr/local/nginx/sbin/nginx -s reload
# 檢查自己編譯出來的nginx能否運(yùn)行
$ sudo /usr/local/nginx/sbin/nginx -V
# nginx version: nginx/1.16.0
開放端口:
$ firewall-cmd --zone=public --add-port=8888/tcp --permanent # 開放8888端口
$ firewall-cmd --zone=public --add-port=9270/tcp --permanent # 開放9270端口
測試上傳圖片:
$ fdfs_test /etc/fdfs/client.conf upload ~/Downloads/logo_small.png
This is FastDFS client test program v5.11
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2019-07-28 22:03:40] DEBUG - base_path=/home/python/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=10.211.55.15, port=23000
group_name=group1, ip_addr=10.211.55.15, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/CtM3D109qzyAIOTRAAAX7nDuhUA387.png
source ip address: 10.211.55.15
file timestamp=2019-07-28 22:03:40
file size=6126
file crc32=1894679872
example file url: http://10.211.55.15:9270/group1/M00/00/00/CtM3D109qzyAIOTRAAAX7nDuhUA387.png
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/CtM3D109qzyAIOTRAAAX7nDuhUA387_big.png
source ip address: 10.211.55.15
file timestamp=2019-07-28 22:03:40
file size=6126
file crc32=1894679872
example file url: http://10.211.55.15:9270/group1/M00/00/00/CtM3D109qzyAIOTRAAAX7nDuhUA387_big.png
訪問:
http://10.211.55.15:9270/group1/M00/00/00/CtM3D109qzyAIOTRAAAX7nDuhUA387_big.png
# 如果能看到圖片則表示安裝fastdfs-nginx-module成功
本文參考了https://segmentfault.com/a/1190000018251300?utm_source=tag-newest