前言
之前偷懒直接在 VPS 上改了 repo 参数后用yum安装与更新 nginx,导致后期希望添加自选模块时遇到了困难。虽然可以采用 为 yum 安装的 Nginx 添加模块 这里的方法为 yum 或者 apt 等方法成功安装的 Nginx 添加新的模块,但是在 yum 自动更新 nginx 后,又会回到二进制 nginx 安装包的默认编译参数,丢失之前新添加的模块选项。综上所述,目前只能通过再次编译安装的方式来升级 nginx 才能保证能正常使用自选模块。以下脚本将自动化该操作。
兼容性
在 CentOS 7.2 、Ubuntu 14.04 、Ubuntu 16.04 中测试正常。
配置
git clone https://github.com/MrEasonYang/shell-boy
后,cd 到 auto-nginx 目录中,执行chmod +x auto-nginx
即可完成初始化。随后在配置文件 config 中按需自行配置。配置文件以英文分号 ; 分隔,每个选项和值之间用无空格英文冒号分隔 。
配置选项包括:
使用
./auto-nginx install xx.x.xx
./auto-nginx update
... 2>&1 | tee -a log
的方法即可记录日志0 23 * * 6 /auto-nginx/auto-nginx update 2>&1 | tee -a /auto-nginx/log
来实现定期自动更新P.S. 安装 Nginx 的功能中默认选择了一些依赖,如有需要自定义依赖,请自行更改脚本中的 apt-dependence 函数或 yum-dependence 函数。
实现
检查最新版本
检查版本需要一个小爬虫,虽然使用 Python 来实现最方便,但这里还是避免跑题,统一用 Shell 来做。
观察 Nginx 官网可以发现,下载地址总是 http://nginx.org/download/nginx-x.x.x.tar.gz 这样的形式,因此获取到最新的版本号,就可以直接下载 Nginx 的压缩包。而在 http://nginx.org/download/ 这个页面中乱序以 <a href="nginx-0.1.0.tar.gz">nginx-0.1.0.tar.gz</a>
的形式罗列着所有的版本,借助这个页面及链接就可以配合正则表达式来获取所有版本号。