zoukankan      html  css  js  c++  java
  • Ansible + shell 实现部署fastdfs+nginx 实现图片服务器并提供动态缩放功能;

       因为公司阿里服务器变动几次,手动部署了好几次fastdfs+nginx,于是就想到了自动化部署,以下为脚本内容,由于只是想把着功能实现,并未有完完整的判断逻辑;

       以下为ansible-playbook及shell及模板nginx-fastdfs及动态缩略图配置; 

       如有错误,请不吝赐教;

    ---
      - hosts: apollo
      #  vars:
      #    filedest: /usr/local/
        tasks:
          - name: prepare fastdfs-nginx-module
            copy: src=/etc/ansible/fastdfs-nginx-module_v1.16.tar.gz dest=/usr/local/
          - name: prepare nginx-1.12.0.tar.gz
            copy: src=/etc/ansible/nginx-1.12.0.tar.gz dest=/usr/local/
          - name: prepare V5.05.tar.gz
            copy: src=/etc/ansible/V5.05.tar.gz dest=/usr/local/ 
          - name: gcc,git,openssl-devel,pcre-devel,gd-devel 
            yum: name=gcc,git,openssl-devel,pcre-devel,gd-devel state=present
          - name: push fastdfs-nginx-module-config
            copy: src=/etc/ansible/fastdfs_nginx.conf dest=/usr/local/
          - name: create user www
            user: name=www shell=/sbin/nologin
    
          - name: unzip packages and make install....
            script: /etc/ansible/install_fastdfs.sh
    
          - name: delete fastdfs-nginx-module
            file: name=/usr/local/fastdfs-nginx-module_v1.16.tar.gz state=absent
          - name: delete nginx-1.12.0.tar.gz
            file: name=/usr/local/nginx-1.12.0.tar.gz state=absent
          - name: delete V5.05.tar.gz 
            file: name=/usr/local/V5.05.tar.gz state=absent
    

      以下为shell 部分

    #!/usr/bin/env bash
    set -x 
    set -e 
    IFS=$'
    '
    dest=/usr/local/
    fastdfsgz="V5.05.tar.gz"
    fastdfsmod="fastdfs-nginx-module_v1.16.tar.gz"
    nginxgz="nginx-1.12.0.tar.gz"
    IP=$(ip a s eth0 | grep  "inet " | awk '{print $2}' | sed -r "s//24//g")
    for gz in ${dest}${fastdfsgz} ${dest}${fastdfsmod} ${dest}${nginxgz}
    do
    	tar xf $gz -C ${dest}
    done
    ########安装libfast
    cd ${dest}
    git clone https://github.com/happyfish100/libfastcommon.git
    cd libfastcommon
    ./make.sh && ./make.sh install 
    ############更改fastdfs-nginx-module/src/config
    sed -ri "4s/local///g" ${dest}fastdfs-nginx-module/src/config
    ##################安装fastdfs
    cd ${dest}fastdfs-5.05/
    ./make.sh && ./make.sh install & 
    wait 
    cp conf/http.conf /etc/fdfs/
    cp conf/mime.types /etc/fdfs/
    cd /etc/fdfs/
    for filename in client.conf.sample storage.conf.sample tracker.conf.sample
    do
    	cp ${filename} ${filename/.sample/}
    	sed -ri "s/base_path=/#base_path=/g" ${filename/.sample}
    done
    mkdir -p /home/fast/client /home/fast/tracker /home/fast/storage/data
    cp ${dest}fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
    sed -ri "/^connect_timeout/cconnect_timeout = 10" /etc/fdfs/mod_fastdfs.conf
    sed -ri "/^tracker_server/ctracker_server=${IP}:22122" /etc/fdfs/mod_fastdfs.conf
    sed -ri "/^url_have_group_name/curl_have_group_name=true" /etc/fdfs/mod_fastdfs.conf
    sed -ri "/^store_path0=/cstore_path0=/home/fast/storage/data" /etc/fdfs/mod_fastdfs.conf
    
    ###tracker.conf
    sed -ri "/#base_path=/abase_path=/home/fast/tracker" tracker.conf
    ####client.conf
    sed -ri "/#base_path=/abase_path=/home/fast/client" client.conf
    sed -ri "s/tracker_server=/#tracker_server=/g" client.conf
    sed -ri "/#tracker_server=/atracker_server=${IP}:22122" client.conf
    ####storage.conf
    sed -ri "/#base_path=/abase_path=/home/fast/storage" storage.conf
    sed -ri "s/tracker_server=/#tracker_server=/g" storage.conf
    sed -ri "/#tracker_server=/atracker_server=${IP}:22122" storage.conf
    sed -ri "/store_path0=/cstore_path0=/home/fast/storage/data" storage.conf
    ############编译nginx 
    cd ${dest}nginx-1.12.0 
    ./configure 
    --user=www --group=www --prefix=/usr/local/nginx 
    --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module 
    --with-pcre --add-module=/usr/local/fastdfs-nginx-module/src/ 
    --with-http_image_filter_module  & 
    #--add-module=/usr/local/nginx-rtmp-module & 
    wait
    make && make install & 
    wait
    if [ -d ${dest}/nginx/conf.d ];then
    	mv ${dest}fastdfs_nginx.conf ${dest}/nginx/conf.d/
    else
    	mkdir ${dest}/nginx/conf.d
    	mv ${dest}fastdfs_nginx.conf ${dest}/nginx/conf.d/
    fi
    cd /usr/local/nginx/conf.d/
    for rows in $(tac ./fastdfs_nginx.conf)
    do
    sed -ri "40a$rows" /usr/local/nginx/conf/nginx.conf
    done 
    ############
    /usr/local/nginx/sbin/nginx  -t 
    

      以下为nginx动态缩放配置及网页

    location ~/group[0-9]/M00/(.+)_([0-9]+)x([0-9]+).(jpg|gif|png) {
                    ngx_fastdfs_module;
                    index index.html index.htm;
                    set $w $2;
                    set $h $3;
                    if ($w != "0" ) {
                            rewrite group1/M00(.+)_(d+)x(d+).(jpg|gif|png)$ group1/M00$1.$4 break;
    }
                    if ($h != "0" ) {
                            rewrite group1/M00(.+)_(d+)x(d+).(jpg|gif|png)$ group1/M00$1.$4 break;
    }
                    image_filter resize $w $h ;
    
                    image_filter_buffer 5M;
    }
            location ~ /group[0-9] {
                    ngx_fastdfs_module;
                    index index.html index.htm;
    }
    		location = /favicon.ico {
                    log_not_found off;
                    access_log off;
    }
    

      

    最后安装完成以后,并未启动fastdfs ,请先运行命令启动fastdfs: fdfs_trackerd /etc/fdfs/tracker.conf && fdfs_storaged /etc/fdfs/storage.conf 

           启动完成以后,如果不能正常访问返回415,请复制粘贴模板内容到nginx的配置文件里;

  • 相关阅读:
    Spring AOP 详解
    java 线程的几种状态
    Atomic
    ConcurrentHashMap原理分析
    MySQL存储过程详解 mysql 存储过程
    spring-定时器(2)
    spring-定时器(1)
    spring-线程池(3)
    spring-线程池(2)
    spring-线程池(1)
  • 原文地址:https://www.cnblogs.com/Mail-maomao/p/7587695.html
Copyright © 2011-2022 走看看