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的配置文件里;
Ansible + shell 实现部署fastdfs+nginx 实现图片服务器并提供动态缩放功能;的更多相关文章
- FastDFS搭建单机图片服务器(二)
防丢失转载:https://blog.csdn.net/MissEel/article/details/80856194 根据 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 和 ...
- FastDFS搭建单机图片服务器(一)
防丢失转载:https://blog.csdn.net/MissEel/article/details/80856194 根据 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 和 ...
- Nginx,Nginx 搭建图片服务器
Nginx Nginx 概述 反向代理 工作流程 优点 1:保护了真实的web服务器,保证了web服务器的资源安全 2:节约了有限的IP地址资源 3:减少WEB服务器压力,提高响应速度 4:其他优点 ...
- nginx配置图片服务器
这几天研究了一下nginx配置图片服务器的相关内容,个人的一些收获与大家分享一下: Nginx是目前非常流行的web服务器,它起源于俄罗斯.它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态 ...
- Nginx 搭建图片服务器
Nginx 搭建图片服务器 本章内容通过Nginx 和 FTP 搭建图片服务器.在学习本章内容前,请确保您的Linux 系统已经安装了Nginx和Vsftpd. Nginx 安装:http://www ...
- Nginx搭建图片服务器
Nginx搭建图片服务器 标签(空格分隔): linux,nginx Nginx常用命令 ./nginx 启动 ./nginx -s reload 重载配置文件 ./nginx -s stop|sta ...
- nginx 搭建图片服务器(windows 下,linux 下原理应该一样)
作者的心声:很多知道的.用过的东西,不写下来,下次还要百度查询,浪费时间和精力,故本次写下学习笔记,方便下次查阅. 题外话:如有读者通过我这篇博客解决了工作上的难题,可以给个评论,让我一起分享你的喜悦 ...
- 配置nginx的图片服务器
user nginx; worker_processes 8; error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; pid ...
- Nginx 独立图片服务器的搭建
为什么需要独立图片服务器? 如果你留心的话,可以发现,现在主流的网站都是有单独的图片服务器的,例如,人人网的为rrimg,淘宝的为taobaocdn,下面还有很多的二级域名. 独立的图片服务器有诸多好 ...
随机推荐
- redis启动报错 var/run/redis_6379.pid exists, process is already running or crashed
redis启动显示 /var/run/redis_6379.pid exists, process is already running or crashed 出现这个执行 rm -rf /var/r ...
- c++ vector释放概述
这里仅为概述,具体的详情分析,可以Google下,会得到更详尽的解释. 1.函数clear和erase都将数组的size清空,但对应的空间并没有回收,而且,一直push_baclk, 对应的capac ...
- java源码——两种格式日期的转换
这里要实现1981.07.30 格式和July 30.1981格式的日期的转换. 在输入时进行日期格式的识别,并且对字符串进行操作并且输出. 难点在于字符串格式的识别和月份的转换,我用了正则表达式匹配 ...
- 【LeetCode】665. 非递减数列 Non-decreasing Array(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 本文关键词:数组,array,非递减,遍历,python,C++ 目录 题目描述 题目大意 解题方法 一.错误代码 二.举例分析 ...
- 第二十七个知识点:什么是对称密码加密的AEAD安全定义?
第二十七个知识点:什么是对称密码加密的AEAD安全定义? AEAD 在之前的博客里,Luke描述了一种被广泛使用的操作模式(ECB,CBC和CTR)对块密码.我们也可能会想我们加密方案的完整性,完整性 ...
- Dapper in .Net Core
一.前言 关于什么是Dapper,在此不做赘述:本文仅对Dapper在.Net Core中的使用作扼要说明,所陈代码以示例讲解为主,乃抛砖引玉,开发者可根据自身需要进行扩展和调整:其中如有疏漏之处,望 ...
- Android开发案例 设置背景图片轮播
点击按钮实现图片轮播效果 实践案例: xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- SpringCloud创建Eureka模块集群
1.说明 本文详细介绍Spring Cloud创建Eureka模块集群的方法, 基于已经创建好的Spring Cloud Eureka Server模块, 请参考SpringCloud创建Eureka ...
- 《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ...
- Nginx 防爬虫设置
在conf下 vi 一个文件agent_deny.conf 添加如下内容 #禁止Scrapy|curl等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|Http ...