Centos安装FastDFS+Nginx
一、安装环境:
gcc:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
PCRE:PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
zlib:zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
openssl:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
二、下载,安装文件信息
软件包 |
软件版本 |
下载链接 |
FastDFS |
v5.05 |
https://pan.baidu.com/s/1eTGCi34 |
Fastdfs-nginx-module |
v1.16 |
https://pan.baidu.com/s/1c3HwkgS |
Libevent |
v2.0.21 |
https://pan.baidu.com/s/1gheWCnT |
libfastcommon |
V1.0.7 |
https://pan.baidu.com/s/1gheWCoV |
nginx |
v1.8.0 |
https://pan.baidu.com/s/1c3IIfzq |
三、安装
3.1先安装libfastcommonV1.0.7.tar.gz
解压安装命令:
tar -zxvf libfastcommonV1.0.7.tar.gz
./make.sh
./make.sh install
注意:libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。
3.2安装 libevent-2.0.21-stable.tar.gz
①先用:ls -al /usr/lib | grep libevent 查看是否已安装,如果已安装且版本低于1.3,则先通过:rpm -e libevent —nodeps 进行卸载。
②下载libevent安装包:libevent-2.0.21-stable.tar.gz,然后解压
tar -zxvf libevent-2.0.21-stable.tar.gz
③切换到解压后的 libevent 主目录:
cd libevent-1.4.13-stable
④依次执行:
./configure –prefix=/usr (或 ./configure --program-prefix=/usr)
make
make install
3.3 tracker编译安装
安装FastDFS_v5.05.tar.gz
解压安装命令:
将FastDFS_v5.05.tar.gz拷贝至/usr/local/下
tar -zxvf FastDFS_v5.05.tar.gz cd FastDFS ./make.sh
./make.sh install
安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下。
tracker配置:
安装成功后进入/etc/fdfs目录:
拷贝一份新的tracker配置文件:
cp tracker.conf.sample tracker.conf
修改tracker.conf
vi tracker.conf
base_path=/home/yuqing/FastDFS
改为:
base_path=/home/FastDFS
启动tracker:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart(好奇怪为什么没有start)
启动的日志显示先停止5619进程(实际环境不是5619)再启动,如下图:
注意:如果没有显示上图要注意是否正常停止原有进程。
l 设置开机自动启动。
将运行命令行添加进文件:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
FastDFS--storage安装及配置
storage在tracker安装时已经安装,在这里只需要配置storage.conf文件,即可启动
安装成功后进入/etc/fdfs目录:
拷贝一份新的storage配置文件:
cp storage.conf.sample storage.conf
修改storage.conf
vi storage.conf
group_name=group1
base_path=/home/yuqing/FastDFS改为:base_path=/home/FastDFS
store_path0=/home/yuqing/FastDFS改为:store_path0=/home/FastDFS/fdfs_storage
#如果有多个挂载磁盘则定义多个store_path,如下
#store_path1=.....
#store_path2=......
tracker_server=172.16.2.15:22122 #配置tracker服务器:IP
#如果有多个则配置多个tracker
tracker_server=172.16.2.14:22122
启动storage:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
启动的日志显示先停止8931进程(实际环境不是8931)再启动,如下图:
注意:如果没有显示上图要注意是否正常停止原有进程。
l 设置开机自动启动。
将运行命令行添加进文件:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
上传图片测试:
@Test
public void testUpload() throws Exception {
//创建一个配置文件。文件名任意。内容就是tracker服务器的地址。
//使用全局对象加载配置文件。
ClientGlobal.init("D:/java/mall_working/mowe-manager-web/src/main/resources/conf/client.conf");
//创建一个TrackerClient对象
TrackerClient trackerClient = new TrackerClient();
//通过TrackClient获得一个TrackerServer对象
TrackerServer trackerServer = trackerClient.getConnection();
//创建一个StrorageServer的引用,可以是null
StorageServer storageServer = null;
//创建一个StorageClient,参数需要TrackerServer和StrorageServer
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
//使用StorageClient上传文件。
String[] strings = storageClient.upload_file("D:/java/Java_Tools/FastDFS/sjz.jpg", "jpg", null);
for (String string : strings) {
System.out.println(string);
} }
FastDFS 和nginx整合:
在tracker上安装nginx
nginx的安装细节参考nginx文档。
在每个tracker上安装nginx,的主要目的是做负载均衡及实现高可用。如果只有一台tracker服务器可以不配置nginx。
在Storage上安装nginx:
解压:fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
cd FastDFS-nginx-module/src
修改config文件将/usr/local/路径改为/usr/
将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下
cp mod_FastDFS.conf /etc/fdfs/
并修改mod_FastDFS.conf的内容:
vi /etc/fdfs/mod_FastDFS.conf
#base_path=/home/FastDFS
tracker_server=172.16.2.15:22122 #tracker_server=172.16.2.14:22122(多个tracker配置多行)
url_have_group_name=true #url中包含group名称
store_path0=/home/FastDFS/fdfs_storage #指定文件存储路径
将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
mkdir -p /var/temp/nginx/client
下面分为两种情况
第一种:没有安装nginx,需要重新安装这个过程的
第二种,已经安装好nginx,现在是添加模块的。
针对第一种情况:
进入nginx的源码目录(nginx自行下载)
./configure --prefix=... --add-module=/home/bing/fastdfs-nginx-module/src/
make
make install
这里安装就不写nginx的其他模块了,比如
--prefix=path :定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
--sbin-path=path :设置nginx的可执行文件的路径,默认为 prefix/sbin/nginx.
--conf-path=path :设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
--pid-path=path :设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
--error-log-path=path :设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
在这里就直接写--add-module,这里指向的就是fastdfs-nginx-module的源码路径,一定要进入到src目录下,然后执行make ,再执行make install
make:主要是用来编译的,它从Makefile中读取指令,然后编译生成一个可执行文件在nginx源码目录下的objs,这个可执行文件时nginx
make install:主要是实现安装,它也从Makefile中读取指令,安装到指定的位置。
针对第二种情况:
下面继续说一下如果安装完成nginx,现在在安装一个模块的问题,该如何解决,很多时候,我们是不能说,再重新安装nginx的,所以必须想一个办法实现动态安装module。
首先查看nginx已经安装了哪些模块
# nginx -V
nginx version: nginx/1.10.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module
可以看到列出了一些nginx的信息,包括已经安装的一些模块。
那么我们可以重新编译这些模块,同时在通过--add-module添加模块
例如上面的,重新进入nginx的源码目录
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module--add-module=/home/bing/fastdfs-nginx-module/src/
make
可以看到红色部分,重新添加一个--add-module,指定需要添加的模块的源码目录路径,然后执行make,特别注意,这里不需要执行make install
编译之后,将会在objs的目录下重新生成一个nginx的可执行文件,可以复制,然后用来覆盖原来安装nginx时生成的nginx文件,这个文件默认在/usr/local/nginx/sbin/下,为了安全起见,向备份原来的文件
cd /usr/local/nginx/sbin cp nginx nginx.back
cp ..../objs/nginx /usr/local/nginx/sbin
然后重新启动nginx
那么查看是否安装成功这个模块
/usr/local/nginx/sbin/nginx -V
在这里要注意,我们也可以复制nginx 到/usr/local/sbin下面,这个样子就可以直接nginx -V,不需要输入完整路径。
安装完成这个fastdfs-nginx-module后,接下来,将是如何配置这个模块
在fastdfs的源码安装包下面的conf下面,我们需要复制两个文件至/etc/fdfs/下
cp http.conf mime.types /etc/fdfs/
同时把fastdfs-nginx-modul源码包的src目录下的mod_fastdfs.conf复制至/etc/fdfs/
那么可以看到/etc/fdfs下有的文件
然后配置mod_fastdfs.conf这个文件,主要以下几个
# the base path to store log files
base_path=/tmp tracker_server=172.16.2.15:22122 #include http.conf group_name=group1
url_have_group_name = true
store_path0=/home/FastDFS # group settings for group #1
# since v1.14
# when support multi-group on this storage server, uncomment following section
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/FastDFS
# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
#[group2]
#group_name=group2
#storage_server_port=23000
#store_path_count=1
#store_path0=/home/FastDFS
如果这里有多个group,测配置多个group,这里只有一个group,所以只配置group1
配置完成这个之后,我们将在nginx的配置文件中配置一下
#检查语法
/usr/local/nginx/sbin/nginx -t
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
从这里可以看出,默认使用的是/usr/local/nginx/conf/nginx.conf这个配置文件
修改这个配置文件:
server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / {
# root html;
# index index.html index.htm;
#}
location /group1/M00/ {
root /home/FastDFS/data;
ngx_fastdfs_module;
}
#启动-指定配置文件
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf /usr/local/nginx/sbin/nginx -s reload
如Nginx不能正常启动,则需要执行以下命令让插件重启:
配置防火墙,重新启动,重新上传
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 23000 -j ACCEPT
/etc/init.d/iptables save /usr/local/nginx/sbin/nginx /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/client.conf
重启tracker、storage
重启Nginx
搞定啦
访问http://172.16.2.16/group1/M00/00/00/rBACEFpXEuGARm1tAADq5W3h4Nc650.jpg
Centos安装FastDFS+Nginx的更多相关文章
- Centos安装FastDFS+Nginx(一天时间搞定)
最近在研究和使用Fastdfs,别人搭的环境,终究是别人的,绝知此事要躬行~躬行啊~ 下面的脚本主要参考了官方的INSTALL文件,这个是比较权威的,部分地方和实际情况不一致.比如配置文件的 ...
- centos 系统下安装FastDFS+nginx+fastdfs-nginx-module安装配置
前言: 以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下,由于数据量,服务器的负载均衡(分机的某些图片无法访问的问题处理)等因素的情况下,就想到用fastdfs来文件管理,花了几天时间硬 ...
- linux上安装fastdfs+nginx+ngin-module实践并解决多个异常篇
为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主 ...
- FastDFS单节点安装 & FastDFS+Nginx整合
安装环境 FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastdfs/files/) fastdfs-nginx-module ...
- 安装FastDFS+Nginx
安装FastDFS FastDFS开发者的GitHub地址为:https://github.com/happyfish100 打开上述链接,我们点击fastdfs–>release,发现最新版的 ...
- Linux安装FastDFS~Nginx~
确保Linux联网,我这里使用的是CentOS7操作,联网教程 https://www.cnblogs.com/taopanfeng/p/10978752.html 先把指定的四个文件放入指定目录 安 ...
- centos 安装 rtmp nginx 视频流服务器
---恢复内容开始--- 1.使用yum安装git yum -y install git 2.下载nginx-rtmp-module,官方github地址 // 通过git clone 的方式下载到服 ...
- centos 安装完Nginx后,为什么访问不了?
很多时候,安装完成后,服务也启动了 但是访问不了 看看是不是防火墙开启了: 本地试下端口是否可访问telnet 192.168.4.155 80 CentOS 7默认使用的是firewall作为防火墙 ...
- [linux]CentOS安装pre-built Nginx
官方文档:https://nginx.org/en/linux_packages.html Nginx安装分为软件包安装和pre-built安装.这里使用的pre-built安装,不用自己编译. 设置 ...
随机推荐
- ASP.NET MVC + 工厂模式 + 三层 + 缓存
最近将手头的项目总结整理了一下,以方便自己的学习.... 下面直接上图先介绍项目的结构图: 项目是ASP.NET MVC 4.0的应用程序,DBUtility这个类库主要是DbHelper操作数据库的 ...
- Laravel5.1学习笔记9 系统架构1 请求生命周期 (待修)
Request Lifecycle Introduction Lifecycle Overview Focus On Service Providers Introduction When using ...
- 使用TortoiseSVN碰到的几个问题(2)-冲突解决, 图标重载
8)解决冲突 冲突分为两种:文件冲突---当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突.下面的属性冲突应该也属于文件冲突. 树冲突---当一名开发人员移动.重命名.删除一 ...
- Android 打开设置界面或者WiFi连接界面
1.使用APP打开系统的设置界面或者WiFi连接界面 startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网 ...
- 超简单:纯CSS实现的进度条
——————纯CSS实现的进度条—————— HTML: <div class="wrapper"> <div class="bar"> ...
- SQLite 在 Android 的应用
Android提供了创建和使用SQLite数据库的API(Application Programming Interface,应用程序编程接口). 在Android系统中,主要由类SQLiteData ...
- dubbo之静态服务
有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式 <dubbo:registry address="10.20.141.150:9090" dy ...
- Arduino ULN2009驱动步进电机
一.实物图 二.例子代码 注:代码来自老外 http://www.4tronix.co.uk/arduino/Stepper-Motors.php 功能:控制电机正反转 // This Arduino ...
- 关于layui 下拉框 bug
@for (; i < ; i++) { <option value=</option> } 当value=""时候 自动添加选中样式
- java操作Excel的poi 设置单元格的对其方式
设置单元格的对其方式 package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.po ...