#临时关闭防火墙:systemctl stop firewalld.service
#永久关闭防火墙:systemctl disable firewalld.service
#打开文件:vi /etc/selinux/config,并把SELINUX=enforcing修改为SELINUX=disabled。
所有机器安装编译工具:yum -y install gcc yum -y install gcc-c++
拷贝文件:libfastcommon-master.zip到/usr/local/src目录下并解压。
进入刚刚解压后的文件夹,使用命令:./make.sh编译安装包,并使用命令:./make.sh install安装。
拷贝文件:FastDFS_v5.05.tar.gz到usr/local/src目录下并解压。
进入刚刚解压后的文件夹,使用命令:./make.sh编译安装包,并使用命令:./make.sh install安装。
进入目录:/etc/fdfs打开tracker.conf.sample另存为tracker.conf。
在根目录创建文件夹tracker。打开文件/etc/fdfs/tracker.conf,修改base_path=/tracker。
一般只需改动以下几个参数即可:
base_path=/tracker #设置tracker的数据文件和日志目录(需预先创建)
max_connections #最大连接数
allow_hosts=* #设置可以连接当前tracker的IP范围,包括client和storage_server
#disabled=false #启用配置文件
#port=22122 #设置tracker的端口号
#http.server_port=8080 #设置http端口号
在/etc/fdfs/目录下执行命令:fdfs_trackerd tracker.conf。或者在任意目录执行:fdfs_trackerd /etc/fdfs/tracker.conf 来启动tracker(跟踪器)。
确认启动是否成功。(查看是否对应端口22122是否开始监听)
命令:netstat -unltp | grep fdfs
结果:tcp 0 0.0.0.0:22122 0.0.0.0:* LISTEN 1766/fdfs_trackerd
设置开机自动启动
复制/usr/local/src/FastDFS/init.d/fdfs_trackerd文件到/etc/rc.d/init.d/fdfs_trackerd,如果存在就不用复制。
打开上述文件,删除所有路径中的/local(根据自己系统的执行文件来修改)。
根目录下执行命令:chkconfig --add /etc/rc.d/init.d/fdfs_trackerd 来把启动项,加入开机启动。
接着执行:chmod 777 /etc/rc.d/init.d/fdfs_trackerd 来修改文件的权限,使所有用户都可读写和执行。
进入目录:/etc/fdfs打开storage.conf.sample另存为storage.conf。
在根目录创建文件夹storage。打开文件/etc/fdfs/storage.conf,修改base_path=/storage、store_path0=/storage、tracker_server=192.168.254.130:22122(自己安装tracker的ip地址和端口)。
一般只需改动以下几个参数即可:
group_name=group1 #组名,根据实际情况修改
base_path=/storage #设置storage的日志目录(需预先创建)
store_path0=/storage #存储路径
store_path_count=1 #存储路径个数,需要和store_path个数匹配
tracker_server=192.168.254.130:22122 #tracker服务器的IP地址和端口号(自己安装tracker的ip地址和端口)
#disabled=false #启用配置文件
#port=23000 #设置storage的端口号
#http.server_port=8080 #设置http端口号 fyj 此处不和nginx的端口对应 无影响
在/etc/fdfs/目录下执行命令:fdfs_storaged storage.conf。或者在任意目录执行:fdfs_storaged /etc/fdfs/storage.conf 来启动storage(存储节点)。
确认启动成功后,可以运行fdfs_monitor查看storage服务器是否已经登记到tracker服务器。
命令:fdfs_monitor /etc/fdfs/storage.conf
结果:看到“192.168.254.131(本机ip) ACTIVE”即可确认storage运行正常。
设置开机自动启动
复制/usr/local/src/FastDFS/init.d/fdfs_storaged文件到/etc/rc.d/init.d/fdfs_storaged,如果存在就不用复制。
打开上述文件,删除所有路径中的/local(根据自己系统的执行文件来修改)。
根目录下执行命令:chkconfig --add /etc/rc.d/init.d/fdfs_storaged 来把启动项,加入开机启动。
接着执行:chmod 777 /etc/rc.d/init.d/fdfs_storaged 来修改文件的权限,使所有用户都可读写和执行。
-----------------------------------------------------------------------------------------------------------------
在每个storage上安装nginx。
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,
但是同组之间的服务器需要复制文件,有延迟的问题.
假设Tracker服务器将文件上传到了192.168.1.80,文件ID已经返回客户端,
这时,后台会将这个文件复制到192.168.1.30,如果复制没有完成,客户端就用这个ID在192.168.1.30取文件,肯定会出现错误
这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。
拷贝文件:fastdfs-nginx-module_v1.15.tar.gz到/usr/local/src目录下并解压。
进入刚刚解压后的文件夹,打开src文件夹下的config开始修改。
原来的内容是
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
修改为
CORE_INCS="$CORE_INCS /usr/include/fastdfs(FastDFS的安装文件) /usr/include/fastcommon(FastDFS的安装文件)"
各个版本的位置并不统一.所以需要根据自己的版本修改位置。
安装编译工具:yum -y install gcc automake autoconf libtool make gcc-c++ pcre* zlib openssl openssl-devel
拷贝文件:nginx-1.7.10.tar.gz到/usr/local/src目录下并解压。
进入刚刚解压后的文件夹,分三步执行命令:
1:./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src(运行./configure进行安装前的设置,主要设置安装路径、FastDFS插件模块目录、pcre库目录、zlib库目录。)
如果提示错误,可能缺少依赖的软件包,需先安装依赖包,再次运行./configure)
2:make( 运行make进行编译,确保编译成功。)
3:make install(运行make install进行安装。)
复制/usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf文件到/etc/fdfs,命令:cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
------------------------------------------------------------------------------------------------------------------------------
编辑/usr/local/nginx/conf配置文件目录下的nginx.conf,设置添加storage信息并保存。
(将server段中的listen端口号改为8080:listen 8080;)
在server段中添加:
location ~/group[1-3]/M00 {
root /storage;
ngx_fastdfs_module;
}
###########一组多个storage###########
location ~/group1/M00 { fyj #~的意思任意ip都可以访问,不止是本机
root /storage; #storage的文件目录
ngx_fastdfs_module;;
}
###########一组多个storage###########
编辑/etc/fdfs配置文件目录下的mod_fastdfs.conf,设置storage信息并保存。
一般只需改动以下几个参数即可:
base_path=/storage #保存日志目录
store_path0=/storage #存储路径
store_path_count=1 #存储路径个数,需要和store_path个数匹配
tracker_server=192.168.254.130:22122 #tracker服务器的IP地址以及端口号(自己安装tracker的ip地址和端口)。
storage_server_port=23000 #storage服务器的端口号
group_name=group1 #当前服务器的group名
url_have_group_name= true #文件url中是否有group名 fyj
http.need_find_content_type=true #从文件扩展名查找文件类型(nginx时为true)
group_count= 0 #设置组的个数,0是单组
在末尾增加3个组的具体信息(解开末尾注释):
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/storage
建立M00至存储目录的符号连接。
命令:
ln -s /storage/data /storage/M00
ll /storage/M00
结果:
lrwxrwxrwx. 1 root root 13 3月 17 13:54 /storage/M00 -> /storage/data
至此,nginx以及FastDFS插件模块设置完成。
-------------------------------------------------------------------------------------------------------------------------
复制/usr/local/src/FastDFS/conf/http.conf和mime.types到/etc/fdfs目录下
命令:cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs
cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs
进入:/usr/local/nginx/sbin目录,使用命令:/usr/local/nginx/sbin/nginx
重启nginx的命令:/usr/local/nginx/sbin/nginx -s reload
storage全部安装上nginx并确认运行正常。
----------------------------------------------------------------------------------------------
在tracker上安装nginx
在tracker上安装的nginx主要为了提供http访问的反向代理、负载均衡以及缓存服务。
安装编译工具:yum -y install gcc automake autoconf libtool make gcc-c++ pcre* zlib openssl openssl-devel
1.安装
首先拷贝文件:nginx-1.7.10.tar.gz和ngx_cache_purge-2.3.tar.gz到/usr/local/src目录下并解压。
进入刚刚解压后的/usr/local/src/nginx-1.7.10文件夹,分三步执行命令:
1:./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3 (运行./configure进行安装前的设置,主要设置安装路径、FastDFS插件模块目录、pcre库目录、zlib库目录。)
#./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src --add-module=/usr/local/src/ngx_cache_purge-2.3 #tracker和storage在同一机器上,用此命令
如果提示错误,可能缺少依赖的软件包,需先安装依赖包,再次运行./configure)
2:make( 运行make进行编译,确保编译成功。)
3:make install(运行make install进行安装。)
2.配置
编辑/usr/local/nginx/conf配置文件目录下的nginx.conf,设置负载均衡以及缓存。
worker_processes 4; #根据CPU核心数而定
events{
worker_connections 65535; #最大链接数
use epoll;#新版本的Linux可使用epoll加快处理性能
}
http{
#在日志格式中加入$upstream_cache_status
log_format test '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $upstream_cache_status $request_time';
access_log logs/access.log test;
#设置缓存参数
client_max_body_size 300m; #用来设置允许客户端请求的最大的单个文件字节数。
client_header_buffer_size 32K; #用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K。
large_client_header_buffers 4 32k;用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个共128K。
sendfile on; #参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
tcp_nopush on;
tcp_nodelay on;
#设置缓存存储路径、存储方式、分配内存大小、磁盘最大空间、缓存期限
#/var/cache/nginx/proxy_cache 表示缓存文件要存放的目录
#levels=1:2 表示缓存目录的第一级目录是1个字符,第二级目录是2个字符,即/var/cache/nginx/proxy_cache/a/1b这种形式
#keys_zone=http-cache:100m 表示这个zone(区)名称为http-cache,分配的内存大小为100MB
#inactive=1d 表示http-cache这个zone(区)中的缓存文件如果在6天内都没有被访问,那么文件会被cache manager进程删除掉
#max_size=1g 表示http-cache这个zone(区)的硬盘容量为6GB
#开启服务器缓存
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=http-cache:100m inactive=1d max_size=1g;
proxy_temp_path /var/cache/nginx/proxy_cache/temp;
#设置group1的服务器,设置group1的集群机器
upstream fdfs_group1 {
server 192.168.77.131:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.77.132:80 weight=1 max_fails=2 fail_timeout=30s;
}
#设置group2的服务器,设置group2的集群机器
upstream fdfs_group2 {
server 192.168.77.133:80 weight=1 max_fails=2 fail_timeout=30s;
}
server{
#设置group1的负载均衡参数
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header; #错误转发,转发到集群中的另一台机器
proxy_cache http-cache; #此处需和缓存keys_zone后的参数名相同
proxy_cache_valid 200 304 1h; #设置状态码为200和304的响应可以进行缓存,并且缓存时间为1小时
proxy_cache_key $host$uri$is_args$args; #设置缓存的key
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_pass http://fdfs_group1; #此处的名称和upstream 后面自定义的名称相同
expires 1d;
}
#设置group2的负载均衡参数
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header; #错误转发,转发到集群中的另一台机器
proxy_cache http-cache; #此处需和缓存keys_zone后的参数名相同
proxy_cache_valid 200 304 1h; #设置状态码为200和304的响应可以进行缓存,并且缓存时间为1小时
proxy_cache_key $host$uri$is_args$args; #设置缓存的key
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_pass http://fdfs_group2; #此处的名称和upstream 后面自定义的名称相同
expires 1d;
}
#设置清除缓存的访问权限
location ~ /purge(/.*) {
#允许的IP
allow 127.0.0.1;
#10网段的都可以访问
allow 192.168.254.0/24;
deny all; #其他的禁止访问
proxy_cache_purge http-cache $host$1$is_args$args;
}
}
----------------至此,nginx以及nginx cachepurge插件模块设置完成。
3. 运行
启动nginx,确认启动是否成功。(查看是否对应端口8080是否开始监听)
启动nginx命令:/usr/local/nginx/sbin/nginx
查看是否对应端口是否开始监听的命令:netstat -unltp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7600/nginx: master
4. 上传文件
尝试上传一个文件到FastDFS,然后访问试试。先配置client.conf文件。
打开文件/etc/fdfs/client.conf
修改以下参数:
base_path=/client #日志存放路径,需要预先创建
tracker_server=192.168.254.130:22122 #tracker服务器IP地址和端口号(自己安装tracker的ip地址和端口)
http.tracker_server_port=8080 #tracker服务器的http端口号 fyj 此处不配置 也无影响?测试时没发现有影响
使用fdfs_upload_file命令来上传一个文件,程序会自动返回文件的URL。
上传文件的命令:fdfs_upload_file /etc/fdfs/client.conf /home/sao.jpg
然后使用浏览器访问,全部访问tracker,tracker上配置了http访问代理,会自动去storage上找文件(storage可以使用内网ip,可以加快文件同步,tracker暴露在外网就可以了):
http://192.168.152.128/group1/M00/00/00/wKiYgVUH4o2AbSYkAAU9pfnz-JI275.jpg
http://192.168.152.128/group1/M00/00/00/wKiYglUH7U2AS89MAAnUHXlWbUg487.jpg
------------------------------把nginx添加进系统服务,并开机启动开始----------------------------------
CentOS 系统服务脚本目录:/usr/lib/systemd/
有系统(system)和用户(user)之分,如需要开机没有登陆情况下就能运行的程序,
存在系统服务(system)里,即:/usr/lib/systemd/system/
反之,用户登录后才能运行的程序,存在用户(user)里。
服务以.service结尾。
这边以nginx开机运行为例:vim /usr/lib/systemd/system/nginx.service
按 i 进入编辑模式,编辑完后按Esc退出编辑模式,再输入:wq 保存并退出vim编辑器。
[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
---------------------配置说明--------------------
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
更改nginx.service文件权限为:754的命令:chmod 754 /usr/lib/systemd/system/nginx.service
启用开机启动:systemctl enable nginx
用systemctl命令,要记住start,stop,restart,status,enable,disable,is-enabled。就可
注意点:在storage中添加nginx开机启动的服务时,必须把/etc/fdfs/mon_fastdfs.conf配置文件中的tracker_server这个参数配置上,哪怕随便配置一个tracker的ip和端口。
否则会导致nginx在开机启动时,子进程无法启动的问题。
------------------------------把nginx添加进系统服务,并开机启动结束-------------------------------
---------------------文件权限:754说明开始--------------------------
读r=4
写w=2
执行x=1
总共用三个数字代表三个组的权限,每个数字的大小等于每个组所包含的三个权限的数字之和。
例如:一个文件的权限为rw-rwx-r-x,它的数字表示方法就是675
也就是 [用户]读写
[群组]读写执行
[其它]读执行
常用的权限组合:
444=r--r--r--
644=rw-r--r--
666=rw-rw-rw
754=rwxr-xr--
777=rwxrwxrwx
所以 644的意思,第一个6肯定是4+2的,有“读”跟“写”的意思,
所以在第一行 在“读”和“写”上打对号
4肯定就是4,就是读,所以在第2行 ,“读”上打对号,(没有“写”跟“执行”的权限)同理第3行也是“读”打对号。
-----------------------文件权限:754说明结束------------------------------
-------------------------firewall防火墙开放端口 start-------------------------------------
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口或端口范围80-90,格式为:端口/通讯协议
--query-port=80/tcp #查询端口是否开放
--permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload
--------------------------firewall防火墙开放端口 end---------------------------------------
-------------------------iptables防火墙开放端口 start-------------------------------------
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
-A #追加
-p tcp #协议 tcp udp
--dport #端口 22
-j
DROP:悄悄丢弃
一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向一个自定义的链
DNAT
SNAT
MASQUERADE:源地址伪装
REDIRECT:重定向:主要用于实现端口重定向
MARK:打防火墙标记的
RETURN:返回
在自定义链执行完毕后使用返回,来返回原规则链。
-D num:删除,明确指定删除第几条规则
iptables save #永久生效
--------------------------iptables防火墙开放端口 end---------------------------------------
-----------------------nginx_proxy_cache start------------------------------
$upstream_cache_status包含以下几种状态:
MISS 未命中,请求被传送到后端
HIT 缓存命中
EXPIRED 缓存已经过期请求被传送到后端
UPDATING 正在更新缓存,将使用旧的应答
STALE 后端将得到过期的应答
BYPASS 缓存被绕过了
清除缓存
使用方式:
其中uri为资源的URI,如果缓存的资源的URL为 http://192.168.10.16/group2/M00/00/46/ooYBAFIODMyAUSk3ANFjhglUy6s933.flv,
那么访问 http://192.168.10.16/purge/group2/M00/00/46/ooYBAFIODMyAUSk3ANFjhglUy6s933.flv则会清除缓存。
注意:nginx配置中location的匹配符优先级
-----------------------nginx_proxy_cache end------------------------------
---------------nginx的location的匹配规则和优先级 start---------------------
一、 location 的匹配符
1.等于匹配符:=
等于匹配符就是等号,特点可以概括为两点:
精确匹配
不支持正则表达式
2.空匹配符
空匹配符的特点是:
匹配以指定模式开始的 URI
不支持正则表达式
3.正则匹配符:~
正则匹配符是可以使用正则表达式的匹配符。不过这里要强调的是,一般来说~是指:
区分大小写的正则匹配
而~*表示:
不区分大小写的正则匹配
但是对于一些对大小写不敏感的操作系统,这两者没有区别。另外一个就是^~,其表示以指定模式开始的正则匹配。
4.内部访问符:@
一般用于错误页面等,这个暂不讨论。
二、匹配符优先级
1.=
2.空匹配符,满足精确匹配时
3.^~
4.~或~*
5.空匹配符,满足以指定模式开始时的匹配时
---------------nginx的location的匹配规则和优先级 end---------------------
--------------------------------命令汇总--------------------------------------
启动tracker(跟踪器):fdfs_trackerd /etc/fdfs/tracker.conf
重启tracker(跟踪器):fdfs_trackerd /etc/fdfs/tracker.conf restart | stop | start
启动storage(存储节点):fdfs_storaged /etc/fdfs/storage.conf
启动storage(存储节点):fdfs_storaged /etc/fdfs/storage.conf restart | stop | start
删除storage(存储节点):fdfs_monitor /etc/fdfs/client.conf delete groupname 192.168.1.2
查看storage(存储节点)的运行状态:fdfs_monitor /etc/fdfs/storage.conf
启动nginx:/usr/local/nginx/sbin/nginx
重启nginx:/usr/local/nginx/sbin/nginx -s reload
停止nginx:/usr/local/nginx/sbin/nginx -s stop
查看对应程序是否执行:netstat -unltp | grep fdfs或者nginx
进入编辑器:vim /lib/systemd/system/nginx.service (不存在会新建)。
进入编辑模式:i
退出编辑模式:Esc
保存的命令为::wq(冒号)
更改文件权限:chmod 754 nginx.service
解压.tar.gz文件:tar zxvf 文件名 (注意解压后的目录)
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
删除文件(夹):rm -rf /home/test
f是不提示用户,删除目录下的所有文件。请注意检查路径,输成别的目录就悲剧了。
把启动文件,加入开机启动:chkconfig --add /etc/rc.d/init.d/fdfs_trackerd
linux系统的文件限制
#./configure --with-http_realip_module --with-pcre --with-luajit --add-module=/usr/local/src/ngx_cache_purge-2.3 --add-module=/usr/local/src/nginx_upstream_check_module-0.3.0 -j2
本文详细介绍了如何配置FastDFS集群,并结合Nginx实现高可用和缓存服务。首先,关闭防火墙和修改SELinux配置,然后安装FastDFS的tracker和storage服务,设置开机启动。接着,安装Nginx并集成FastDFS模块,配置负载均衡和缓存策略。最后,添加Nginx服务至系统启动项,并调整文件权限,确保防火墙开放正确端口。
1129

被折叠的 条评论
为什么被折叠?



