Centos下安装FastDFS
上传
将FastDFS相关文件上传到linux下的/home/leyou/fdfs
目录:
资源地址
链接:https://pan.baidu.com/s/1WpO28CDcTox0_ZshpuwIXw
提取码:e3ib
安装依赖
安装GCC依赖
GCC用来对C语言代码进行编译运行,使用yum命令安装:
1 | sudo yum -y install gcc |
安装unzip工具
unzip工具可以帮我们对压缩包进行解压
1 | sudo yum install -y unzip zip |
安装libevent
1 | sudo yum -y install libevent |
安装Nginx所需依赖
1 | sudo yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel |
安装libfastcommon-master
这个没有yum包,只能通过编译安装:
解压刚刚上传的
libfastcommon-master.zip
1
tar -xvf libfastcommon-master.zip
如果解压不了,使用
sudo unzip libfastcommon-master.zip
命令进入解压完成的目录:
1
cd libfastcommon-master
编译并且安装:
1
2sudo ./make.sh
sudo ./make.sh install
到这里为止,所有依赖都已经安装完毕,接下来我们安装FastDFS:
安装FastDFS
编译安装
这里我们也采用编译安装,步骤与刚才的编译安装方式一样:
解压
1
tar -xvf FastDFS_v5.08.tar.gz
进入目录
1
cd FastDFS
编译并安装
1
2sudo ./make.sh
sudo ./make.sh install校验安装结果
1)安装完成,我们应该能在/etc/init.d/
目录,通过命令ll /etc/init.d/ | grep fdfs
看到FastDFS提供的启动脚本:
其中:
fdfs_trackerd
是tracker启动脚本fdfs_storaged
是storage启动脚本
2)我们可以在 /etc/fdfs
目录,通过命令查看到以下配置文件模板:
其中:
tarcker.conf.sample
是tracker的配置文件模板storage.conf.sample
是storage的配置文件模板client.conf.sample
是客户端的配置文件模板
启动tracker
FastDFS的tracker和storage在刚刚的安装过程中,都已经被安装了,因此我们安装这两种角色的方式是一样的。不同的是,两种需要不同的配置文件。
我们要启动tracker,就修改刚刚看到的tarcker.conf
,并且启动fdfs_trackerd
脚本即可。
- 编辑tracker配置
首先我们将模板文件进行赋值和重命名:
1 | sudo cp tracker.conf.sample tracker.conf |
打开tracker.conf
,修改base_path
配置:
1 | base_path=/leyou/fdfs/tracker # tracker的数据和日志存放目录 |
- 创建目录
刚刚配置的目录可能不存在,我们创建出来
1 | sudo mkdir -p /leyou/fdfs/tracker |
启动tracker
我们可以使用
sh /etc/init.d/fdfs_trackerd
启动,不过安装过程中,fdfs已经被设置为系统服务,我们可以采用熟悉的服务启动方式:
1 | sudo service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop |
另外,我们可以通过以下命令,设置tracker开机启动:
1 | sudo chkconfig fdfs_trackerd on |
启动storage
我们要启动tracker,就修改刚刚看到的tarcker.conf
,并且启动fdfs_trackerd
脚本即可。
- 编辑storage配置
首先我们将模板文件进行赋值和重命名:
1 | sudo cp storage.conf.sample storage.conf |
打开storage.conf
,修改base_path
配置:
1 | base_path=/leyou/fdfs/storage # storage的数据和日志存放目录 |
- 创建目录
刚刚配置的目录可能不存在,我们创建出来
1 | sudo mkdir -p /leyou/fdfs/storage |
启动storage
我们可以使用
sh /etc/init.d/fdfs_storaged
启动,同样我们可以用服务启动方式:
1 | sudo service fdfs_storaged start # 启动fdfs_storaged服务,停止用stop |
另外,我们可以通过以下命令,设置tracker开机启动:
1 | sudo chkconfig fdfs_storaged on |
最后,通过ps -ef | grep fdfs
查看进程:
安装Nginx及FastDFS模块
FastDFS的Nginx模块
解压
1
tar -xvf fastdfs-nginx-module_v1.16.tar.gz
配置config文件
1
2
3
4
5
6进入配置目录
cd /home/leyou/fdfs/fastdfs-nginx-module/src/
修改配置
vim config
执行下面命令(将配置中的/usr/local改为/usr):
:%s+/usr/local/+/usr/+g配置mod_fastdfs.conf
1
2
3
4将src目录下的mod_fastdfs.conf复制到 /etc/fdfs目录:
sudo cp mod_fastdfs.conf /etc/fdfs/
编辑该文件
sudo vim /etc/fdfs/mod_fastdfs.conf修改一下配置:
1
2
3
4connect_timeout=10 # 客户端访问文件连接超时时长(单位:秒)
tracker_server=192.168.56.101:22122 # tracker服务IP和端口,以你的ip为准
url_have_group_name=true # 访问链接前缀加上组名
store_path0=/leyou/fdfs/storage # 文件存储路径复制 FastDFS的部分配置文件到/etc/fdfs目录
1
2cd /home/leyou/fdfs/FastDFS/conf/
cp http.conf mime.types /etc/fdfs/
安装Nginx
解压
1
tar -xvf nginx-1.10.0.tar.gz
配置
1
sudo ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/home/leyou/fdfs/fastdfs-nginx-module/src
注意:上方这段shell,整段复制执行
其中`add-module`中的值为fastdfs-nginx-module安装目录的src目录,真实值以你安装的路径为准,打印当前所在路径的命令为:`pwd`
编译安装
1
sudo make && sudo make install
配置nginx整合fastdfs-module模块
我们需要修改nginx配置文件,在/opt/nginx/config/nginx.conf文件中:
1
sudo vim /opt/nginx/conf/nginx.conf
将文件中,原来的
server 80{ ...}
部分代码替换为如下代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19server {
listen 80;
server_name image.taotao.com;
location ~/group([0-9])/ {
ngx_fastdfs_module;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}注意:
这个地方如果是centos下的root用户有个坑,完成安装后上传图片成功后,却访问图片报404。需要在
nginx.conf
中配置user root;
,加在配置文件的最上方即可。启动
1
2
3nginx # 启动
nginx -s stop # 停止
nginx -s reload # 重新加载配置设置nginx开机启动
创建一个开机启动的脚本:
1
vim /etc/init.d/nginx
添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/bin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -n "$user" ]; then
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac修改文件权限,并加入服务列表
1
2
3
4修改权限
chmod 777 /etc/init.d/nginx
添加到服务列表
chkconfig --add /etc/init.d/nginx设置开机启动
1
chkconfig nginx on