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

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

如有错误,请不吝赐教;

  1. ---
  2. - hosts: apollo
  3. # vars:
  4. # filedest: /usr/local/
  5. tasks:
  6. - name: prepare fastdfs-nginx-module
  7. copy: src=/etc/ansible/fastdfs-nginx-module_v1.16.tar.gz dest=/usr/local/
  8. - name: prepare nginx-1.12.0.tar.gz
  9. copy: src=/etc/ansible/nginx-1.12.0.tar.gz dest=/usr/local/
  10. - name: prepare V5.05.tar.gz
  11. copy: src=/etc/ansible/V5.05.tar.gz dest=/usr/local/
  12. - name: gcc,git,openssl-devel,pcre-devel,gd-devel
  13. yum: name=gcc,git,openssl-devel,pcre-devel,gd-devel state=present
  14. - name: push fastdfs-nginx-module-config
  15. copy: src=/etc/ansible/fastdfs_nginx.conf dest=/usr/local/
  16. - name: create user www
  17. user: name=www shell=/sbin/nologin
  18.  
  19. - name: unzip packages and make install....
  20. script: /etc/ansible/install_fastdfs.sh
  21.  
  22. - name: delete fastdfs-nginx-module
  23. file: name=/usr/local/fastdfs-nginx-module_v1.16.tar.gz state=absent
  24. - name: delete nginx-1.12.0.tar.gz
  25. file: name=/usr/local/nginx-1.12.0.tar.gz state=absent
  26. - name: delete V5.05.tar.gz
  27. file: name=/usr/local/V5.05.tar.gz state=absent

  以下为shell 部分

  1. #!/usr/bin/env bash
  2. set -x
  3. set -e
  4. IFS=$'\n'
  5. dest=/usr/local/
  6. fastdfsgz="V5.05.tar.gz"
  7. fastdfsmod="fastdfs-nginx-module_v1.16.tar.gz"
  8. nginxgz="nginx-1.12.0.tar.gz"
  9. IP=$(ip a s eth0 | grep "inet " | awk '{print $2}' | sed -r "s/\/24//g")
  10. for gz in ${dest}${fastdfsgz} ${dest}${fastdfsmod} ${dest}${nginxgz}
  11. do
  12. tar xf $gz -C ${dest}
  13. done
  14. ########安装libfast
  15. cd ${dest}
  16. git clone https://github.com/happyfish100/libfastcommon.git
  17. cd libfastcommon
  18. ./make.sh && ./make.sh install
  19. ############更改fastdfs-nginx-module/src/config
  20. sed -ri "4s/local\///g" ${dest}fastdfs-nginx-module/src/config
  21. ##################安装fastdfs
  22. cd ${dest}fastdfs-5.05/
  23. ./make.sh && ./make.sh install &
  24. wait
  25. cp conf/http.conf /etc/fdfs/
  26. cp conf/mime.types /etc/fdfs/
  27. cd /etc/fdfs/
  28. for filename in client.conf.sample storage.conf.sample tracker.conf.sample
  29. do
  30. cp ${filename} ${filename/.sample/}
  31. sed -ri "s/base_path=/#base_path=/g" ${filename/.sample}
  32. done
  33. mkdir -p /home/fast/client /home/fast/tracker /home/fast/storage/data
  34. cp ${dest}fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
  35. sed -ri "/^connect_timeout/cconnect_timeout = 10" /etc/fdfs/mod_fastdfs.conf
  36. sed -ri "/^tracker_server/ctracker_server=${IP}:22122" /etc/fdfs/mod_fastdfs.conf
  37. sed -ri "/^url_have_group_name/curl_have_group_name=true" /etc/fdfs/mod_fastdfs.conf
  38. sed -ri "/^store_path0=/cstore_path0=\/home\/fast\/storage\/data" /etc/fdfs/mod_fastdfs.conf
  39.  
  40. ###tracker.conf
  41. sed -ri "/#base_path=/abase_path=\/home\/fast\/tracker" tracker.conf
  42. ####client.conf
  43. sed -ri "/#base_path=/abase_path=\/home\/fast\/client" client.conf
  44. sed -ri "s/tracker_server=/#tracker_server=/g" client.conf
  45. sed -ri "/#tracker_server=/atracker_server=${IP}:22122" client.conf
  46. ####storage.conf
  47. sed -ri "/#base_path=/abase_path=\/home\/fast\/storage" storage.conf
  48. sed -ri "s/tracker_server=/#tracker_server=/g" storage.conf
  49. sed -ri "/#tracker_server=/atracker_server=${IP}:22122" storage.conf
  50. sed -ri "/store_path0=/cstore_path0=\/home\/fast\/storage\/data" storage.conf
  51. ############编译nginx
  52. cd ${dest}nginx-1.12.0
  53. ./configure \
  54. --user=www --group=www --prefix=/usr/local/nginx \
  55. --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module \
  56. --with-pcre --add-module=/usr/local/fastdfs-nginx-module/src/ \
  57. --with-http_image_filter_module &
  58. #--add-module=/usr/local/nginx-rtmp-module &
  59. wait
  60. make && make install &
  61. wait
  62. if [ -d ${dest}/nginx/conf.d ];then
  63. mv ${dest}fastdfs_nginx.conf ${dest}/nginx/conf.d/
  64. else
  65. mkdir ${dest}/nginx/conf.d
  66. mv ${dest}fastdfs_nginx.conf ${dest}/nginx/conf.d/
  67. fi
  68. cd /usr/local/nginx/conf.d/
  69. for rows in $(tac ./fastdfs_nginx.conf)
  70. do
  71. sed -ri "40a$rows" /usr/local/nginx/conf/nginx.conf
  72. done
  73. ############
  74. /usr/local/nginx/sbin/nginx -t

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

  1. location ~/group[0-9]/M00/(.+)_([0-9]+)x([0-9]+)\.(jpg|gif|png) {
  2. ngx_fastdfs_module;
  3. index index.html index.htm;
  4. set $w $2;
  5. set $h $3;
  6. if ($w != "0" ) {
  7. rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$1.$4 break;
  8. }
  9. if ($h != "0" ) {
  10. rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$1.$4 break;
  11. }
  12. image_filter resize $w $h ;
  13.  
  14. image_filter_buffer 5M;
  15. }
  16. location ~ /group[0-9] {
  17. ngx_fastdfs_module;
  18. index index.html index.htm;
  19. }
  20. location = /favicon.ico {
  21. log_not_found off;
  22. access_log off;
  23. }

  

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

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

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

  1. FastDFS搭建单机图片服务器(二)

    防丢失转载:https://blog.csdn.net/MissEel/article/details/80856194 根据 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 和 ...

  2. FastDFS搭建单机图片服务器(一)

    防丢失转载:https://blog.csdn.net/MissEel/article/details/80856194 根据 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 和 ...

  3. Nginx,Nginx 搭建图片服务器

    Nginx Nginx 概述 反向代理 工作流程 优点 1:保护了真实的web服务器,保证了web服务器的资源安全 2:节约了有限的IP地址资源 3:减少WEB服务器压力,提高响应速度 4:其他优点 ...

  4. nginx配置图片服务器

    这几天研究了一下nginx配置图片服务器的相关内容,个人的一些收获与大家分享一下: Nginx是目前非常流行的web服务器,它起源于俄罗斯.它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态 ...

  5. Nginx 搭建图片服务器

    Nginx 搭建图片服务器 本章内容通过Nginx 和 FTP 搭建图片服务器.在学习本章内容前,请确保您的Linux 系统已经安装了Nginx和Vsftpd. Nginx 安装:http://www ...

  6. Nginx搭建图片服务器

    Nginx搭建图片服务器 标签(空格分隔): linux,nginx Nginx常用命令 ./nginx 启动 ./nginx -s reload 重载配置文件 ./nginx -s stop|sta ...

  7. nginx 搭建图片服务器(windows 下,linux 下原理应该一样)

    作者的心声:很多知道的.用过的东西,不写下来,下次还要百度查询,浪费时间和精力,故本次写下学习笔记,方便下次查阅. 题外话:如有读者通过我这篇博客解决了工作上的难题,可以给个评论,让我一起分享你的喜悦 ...

  8. 配置nginx的图片服务器

    user nginx; worker_processes 8; error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; pid ...

  9. Nginx 独立图片服务器的搭建

    为什么需要独立图片服务器? 如果你留心的话,可以发现,现在主流的网站都是有单独的图片服务器的,例如,人人网的为rrimg,淘宝的为taobaocdn,下面还有很多的二级域名. 独立的图片服务器有诸多好 ...

随机推荐

  1. table中tr、td标签设置只读,不能修改(readonly属性)

    在不能修改的位置加上代码:onselectstart="return false" οnselect="document.selection.empty()" ...

  2. 【LeetCode】1402. 做菜顺序 Reducing Dishes

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 贪心 日期 题目地址:https://leetcode ...

  3. 【LeetCode】406. Queue Reconstruction by Height 解题报告(Python & C++ & Java)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  4. 【LeetCode】720. Longest Word in Dictionary 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力查找 排序 日期 题目地址:https://le ...

  5. 精通 MySQL 索引

    索引概念: 概念:索引是提高mysql查询效率的数据结构.总的一句话概括就是索引是一种提高查询效率的数据结构. 数据库查询是数据库的最主要功能之一.设计者们都希望查询数据的速度能尽可能的快,因此数据库 ...

  6. Dynamic Routing Between Capsules

    目录 概 主要内容 损失函数 代码 Sabour S, Frosst N, Hinton G E, et al. Dynamic Routing Between Capsules[C]. neural ...

  7. HTML5 纯CSS3实现div按照顺序出入效果

    效果: 源代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  8. 云南农职《JavaScript交互式网页设计》 综合机试试卷②——实现轮播图效果

    一.语言和环境 实现语言:HTML,CSS,JavaScript,JQuery. 开发环境:HBuilder. 二.题目(100分): 使用JQuery淡入淡出动画,实现轮播图效果 每隔2秒钟切换一张 ...

  9. 【MySQL作业】DDL 和 DML——美和易思使用 DDL 定义数据库表结构应用习题

    点击打开所使用到的数据库>>> 1.使用 DDL 创建 easyShopping2 数据库. create database easyShopping2 2.使用 DDL 更改 ea ...

  10. SpringBoot 之 Dao层模拟数据库操作

    单表操作: # src/main/java/com/wu/dao/DepartmentDao .java @Repository public class DepartmentDao { privat ...