zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SharePoint自动化系列——Add content type to list.
    Java中通过Selenium WebDriver定位iframe中的元素
    Mac环境下用Java(Sikuli+Robot)实现页游自动化
    PowerShell处理RSS信息
    用Python脚本做一些网页游戏中力所能及的自动化任务
    利用Spire for .NET实现办公自动化——Spire.Doc
    两道关于数据处理方面的面试题
    用C#钩子写一个改键外挂
    C#实现中国天气网JSON接口测试
    C#实现中国天气网XML接口测试
  • 原文地址:https://www.cnblogs.com/mophy/p/8270668.html
Copyright © 2011-2022 走看看