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=$‘\n‘
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的配置文件里;

时间: 2024-07-30 10:39:55

Ansible + shell 实现部署fastdfs+nginx 实现图片服务器并提供动态缩放功能;的相关文章

vsftpd+nginx搭建图片服务器的一些问题

前言 五月份做了一个项目,其中有一个vsftpd+nginx搭建图片服务器的部分,一直出现错误,在控制台上显示上传成功,可是访问相关图片页面却一直访问不了,想了几天也没解决,于是这个bug就一直放在那,直到今天才解决. 一.安装vsftpd+nginx 这里网上都是资料,不多阐述 二.vsftpd遇到的错误    1.启动systemctl start vsftpd 发生错误: 解决方法 1)按照网上说的,把vsftpd.conf配置文件下的#listen_ipv6=YES注释掉或者改为NO 2

nginx搭建图片服务器

http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用. 安装nginx wget http://nginx.org/download/nginx-1.7.3.tar.gz 安装gd yum install gd-devel 安装p

nginx配置图片服务器

这几天研究了一下nginx配置图片服务器的相关内容,个人的一些收获与大家分享一下: Nginx是目前非常流行的web服务器,它起源于俄罗斯.它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态资源的处理更佳,有测试证明是apache的30倍.现在已经广泛的应用于多家门户网站.中大型网站中,作为反向代理.图片缓存服务器等.本例是结合张宴的blog(http://blog.s135.com/nginx_cache/),做的变动.主站是IIS7.5(192.168.36.70),用的是.net

Nginx 独立图片服务器的搭建

为什么需要独立图片服务器? 如果你留心的话,可以发现,现在主流的网站都是有单独的图片服务器的,例如,人人网的为rrimg,淘宝的为taobaocdn,下面还有很多的二级域名. 独立的图片服务器有诸多好处,其中一个就是客户端浏览器对一个主机下的连接数量限制,具体的连接数目忘记了,但基本都在10以下.也就是说,浏览器会控 制一个站点下的并发请求数量在10以下,如果对于网站有很多样式文件.脚本文件和图片需要加载的话,请求的过程会被阻塞,影响网站的打开速度. 建立图片服务器,将图片资源放在另外一个域名下

配置nginx的图片服务器

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

FastDFS + Nginx module

前言 新项目使用FastDFS 已经有一段时间了,最近又与Nginx 做了结合.趁有时间,做下整理. 需求 使用FastDFS 存储资源(图片.文档.音频.视频...)文件,使用Nginx 提供资源请求服务. PS:FastDFS特别适合大中型网站使用,所以这里选型时一定要注意.不是说小型不适用,而是一定要想清楚,是否一上来就有必要使用DFS这类应用.对于中小型网站,使用本地文件系统.NFS或Samba,就可以很好的解决此类需求. 网站的架构是随着业务增长而演变的,而非一蹴而就. 具体还是需要根

使用FastDFS搭建图片服务器(单实例)

一.背景描述 之前公司的图片服务器已经不能胜任了(直接使用tomcat),需要重新搭建图片服务器,这两天研究了下FastDFS,感觉挺好用记录下来以供日后参考. 二.FastDFS官方介绍 FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用.准确地讲,Google FS以及FastDFS.mogileFS. HDFS.TFS等类

使用FastDFS搭建图片服务器单实例

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用.准确地讲,Google FS以及FastDFS.mogileFS. HDFS.TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务.  1.FastDFS架构图 图1:FastDFS架构图 1)Tracker cluster中各个tracke

(转)Nginx图片服务器

本文转至博客http://wenxin2009.iteye.com/blog/2117079 Nginx搭建图片服务器 Nginx下载地址:http://nginx.org/en/download.html 本例下载的是window版本nginx-1.6.1 以下是我本机操作说明: 下载完后,解压,并把它放到D:\tools\nginx-1.6.1,双击nginx.exe即可运行nginx.可通http://127.0.0.1访问到nginx欢迎界面,如下  也可在cmd中通过命令进行启停启动n