因为公司阿里服务器变动几次,手动部署了好几次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的配置文件里;

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. Hibernate 限制查询数目,使用limit功能

    在hql语句中,不能使用limit来限制显示的条数. 如果要限制查询的数目,要使用setMaxResults(e)方法来解决. query.setFirstResult(e);  //e是int值,要 ...

  2. java源码——计算立体图形的表面积和体积

    计算球,圆柱,圆锥的表面积和体积. 利用接口实现. 上代码. Contants.java 常量存储类 package com.fuxuemingzhu.solidgraphics.contants; ...

  3. 【LeetCode】561. Array Partition I 解题报告(Java & Python)

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

  4. 1340 - Story of Tomisu Ghost

    1340 - Story of Tomisu Ghost   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...

  5. Generative Modeling by Estimating Gradients of the Data Distribution

    目录 概 主要内容 Langevin dynamics Score Matching Denoising Score Matching Noise Conditional Score Networks ...

  6. Java,JDK安装及环境配置

    jdk安装及环境配置 一.jdk安装 1.找到jdk安装包 2.安装jdk 3.安装jre 二.环境变量配置          1.JAVA_HOME JAVA_HOME C:\Program Fil ...

  7. 云南农职《JavaScript交互式网页设计》 综合机试试卷④——蔚蓝网导航栏

    一.语言和环境 实现语言:javascript.html.css. 开发环境:HBuilder. 二.题目(100分) 1.功能需求: 布局出顶部导航栏目 鼠标放到新手入门显示对象的下拉列表 鼠标移开 ...

  8. Log4j2日志框架集成Slf4j日志门面

    1.说明 本文介绍使用日志门面Slf4j打印日志, 底层日志实现使用Log4j2框架, 方便以后切换底层日志实现, Log4j2可以替换成Logback等. 2.依赖管理 在pom.xml依赖管理中导 ...

  9. Debug解决问题方法论

    发现问题怎么办,如何处理, 所谓的Debug的一般流程是什么, 下面是我对此的一些思考总结, 后面还会继续完善补充. 1.处理思路总纲 发现问题 查看日志 没有日志,去找日志 找不到日志,继续找,有些 ...

  10. vue3.0 没有 vue.condig.js 解决

    第一次用 vue3.0 ,发现没有vue.config.js  ,只有一个babel.config.js 怎么办? 需要在根目录手动添加一个即可,如下 相关的配置说明 module.exports = ...