本文共 5597 字,大约阅读时间需要 18 分钟。
文件,图片存储需要注意的:
* 图片名称不能重复
* 图片的后缀名,保存跟源文件后缀名一致
* 文件服务器-长期开着的
传统的用io流保存到web服务器本地的方式,可以直接用当前web服务的路径+图片名称来访问。
但是类似于商品图片这种海量级文件,光靠web服务器的硬盘是无法满足的。
另外如果,web服务器是集群的那么A服务器是没法访问B服务器的本地文件的。
所以需要把文件服务单独管理起来,成为文件服务器。
实现方式就是nginx+FastDFS
FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统,作者余庆(happyfish100),支持Linux、FreeBSD、AID 等 Unix 系统,解决了大数据存储和读写负载均衡等问题,适合存储 4KB~500MB之间的小文件,如图片网站、短视频网站、文档、app 下载站等,UC、京东、支付宝、迅雷、酷狗等都有使用。
该软件作者是阿里巴巴大牛、chinaUnix版主余庆个人独立开发的。
如果没有安装包,可自取:
链接: 提取码:pt3h安装之前给自己的虚拟机做个快照
FastDFS是C语言开发,建议在linux上运行,本教程使用Centos7.0作为安装环境。
安装gcc 依赖环境
# yum install gcc-c++ -y
# 如果安装redis的时候,可能需要 yum install gcc-c++ -y automake autoconf 这个两个依赖。
# yum -y install libevent
1、上传压缩包文件libfastcommonV1.0.7.tar.gz 到 /usr/local目录下,并解压。
2、tar -zxvf libfastcommonV1.0.7.tar.gz
3、进入到解压后的文件夹中
4、进行编译 ./make.sh
5、如果出现编译perl 不识别 运行下面这段命令 – os7# yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
6、安装 ./make.sh install
注意:libfastcommo.so安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录,所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。# cp /usr/lib64/libfastcommon.so /usr/lib/
1、上传资料FastDFS_v5.05.tar.gz到 /usr/local 目录下
2、解压编译安装
# tar -zxvf FastDFS_v5.05.tar.gz
# cd FastDFS
# ./make.sh
# ./make.sh install
3、安装成功之后,将安装目录下的conf下的文件拷贝到**/etc/fdfs/**下。
# cd conf
# cp * /etc/fdfs/
4、修改配置文件
# vim /etc/fdfs/tracker.conf
base_path=/home/yuqing/fastdfs ----> base_path=/opt/fastdfs
5、 创建fastdfs文件夹
# mkdir /opt/fastdfs
# mkdir /usr/local/fdfs
1、拷贝安装目录/usr/local/FastDFS下stop.sh 和restart.sh 到**/usr/local/fdfs/**
# cp restart.sh /usr/local/fdfs/
# cp stop.sh /usr/local/fdfs/
2、修改启动脚本# vim /etc/init.d/fdfs_trackerd
2.1 将第15行
**usr/local/bin —> ** /usr/bin
2.2 将bin换成fdfs
共4处 23 28 49 57行
把启动脚本中的路径按照上图修改
修改完毕后
3、注册服务
[root@localhost FastDFS]# cd /etc/init.d/
[root@localhost init.d]# chkconfig --add fdfs_trackerd
可以使用 chkconfig --list 查看是否已经添加成功!
然后可以用service fdfs_trackerd start 启动测试如下图
注意:建议到此给虚拟机做快照!
# vim /etc/fdfs/storage.conf
行号:41 base_path=/home/yuqing/fastdfs ----> base_path=/opt/fastdfs
行号:109 base_path=/home/yuqing/fastdfs ----> base_path=/opt/fastdfs/fdfs_storage
行号:118 tracker_server=192.168.209.121:22122 ----> tracker_server=192.168.xxx.xxx:22122(自己虚拟机ip)
Store_path0 : 表示文件存储路径 fdfs_storage
# mkdir /opt/fastdfs/fdfs_storage
# vim /etc/init.d/fdfs_storaged
# cd /etc/init.d/
# chkconfig - -add fdfs_storaged
# chkconfig --list
启动服务
# service fdfs_storaged start
/opt/fastdfs/ | 数据文件及日志 |
---|---|
/usr/bin/fdfs_trackerd 、 fdfs_storaged | 启动执行程序 |
/usr/local/fdfs/stop.sh 、 restart.sh | 关闭、重启脚本 |
/etc/init.d/fdfs_tracked 、fdfs_storaged | 服务启动脚本 |
/etc/fdfs/ | 配置文件 |
FastDFS安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作。
1、修改**/etc/fdfs/client.conf**
[root@localhost ~]# vim /etc/fdfs/client.conf
base_path=/opt/fastdfs
tracker_server=192.168.xxx.xxx:22122(自己虚拟机ip)
比如将/root下的日志上传到FastDFS中:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/001.jpg
对应的上传路径:
图片存储在 /opt/fastdfs/fdfs_storage/data/00/00
注意:到此处!必须备份快照!
1、上传fastdfs-nginx-module_v1.16.tar.gz上传到 /usr/local,并解压
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
2、编辑配置文件:修改config文件将/usr/local/路径改为/usr/ 3处
# vim fastdfs-nginx-module/src/config
3、将FastDFS-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下/etc/fdfs/ : 所有的配置文件都在此处!
[root@localhost src]# cp mod_fastdfs.conf /etc/fdfs/
并修改mod_fastdfs.conf的内容:
# vim /etc/fdfs/mod_fastdfs.conf
行号 10,40 ,53行url中包含group名称,62行指定文件存储路径
继续修改(ip地址为自己虚拟机的)
4、将libfdfsclient.so拷贝至/usr/lib下
[root@localhost src]# cp /usr/lib64/libfdfsclient.so /usr/lib/
安装nginx 需要先配置nginx 的运行环境
Nginx 安装
1、Nginx服务器搭建
第一步:安装C语言编译环境
gcc:yum -y install gcc-c++
第二步:安装第三方的开发包。
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 Perl 兼容的正则表达式库。Nginx的HTTP模块使用PCRE来解析正则表达式,所以需要在Linux上安装PCRE库。
yum install -y pcre pcre-devel
注:pcre-devel是使用PCRE开发的一个二次开发库。Nginx也需要这个库。
zlib库提供了很多种压缩和解压缩的方式,Nginx使用zlib对HTTP包的内容进行gzip,所以需要在Linux上安装zlib库。
yum install -y zlib zlib-devel
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
2、创建nginx/client目录
解压:nginx-1.12.2.tar.gz
# cd nginx-1.12.2
[root@localhost src]# mkdir -p /var/temp/nginx/client
cd /usr/local/nginx-1.12.2的原始程序目录 [/usr/local/nginx-1.12.2]
configure: 表示自动配置nginx 的相关目录!
./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--with-http_gzip_static_module \--http-client-body-temp-path=/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/temp/nginx/scgi \--add-module=/usr/local/fastdfs-nginx-module/src
3、配置成功
编译
[root@localhost nginx-1.12.2]# make
安装
[root@localhost nginx-1.12.2]# make install
编辑 nginx 的安装路径的nginx.conf
vim /usr/local/nginx/conf/nginx.conf
server { listen 80; server_name 192.168.1.136; \#charset koi8-r; \#access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /group1/M00/ { ngx_fastdfs_module; }
启动nginx
# /usr/local/nginx/sbin/nginx
重启:
# /usr/local/nginx/sbin/nginx -s reload
转载地址:http://qpshn.baihongyu.com/