技术文档

以自定义参数自动编译安装或升级Nginx脚本

前言

以自定义参数自动编译安装或升级Nginx脚本

之前偷懒直接在 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 中按需自行配置。配置文件以英文分号 ; 分隔,每个选项和值之间用无空格英文冒号分隔 。

配置选项包括:

  • configure-options:编译选项(模块为主)
  • user:nginx 用户
  • group:nginx 用户组
  • prefix:配置文件位置
  • sbin-path:可运行文件位置
  • modules-path:模块目录位置
  • conf-path:nginx.conf 的路径
  • cc-opt:gcc编译参数
  • install-as-service:是否在安装时同时安装为服务并启动
  • original-sbin-path:升级前可执行文件路径

使用

  • 安装指定版本 nginx :./auto-nginx install xx.x.xx
  • 自动更新已安装的 nginx :./auto-nginx update
  • 通过 ... 2>&1 | tee -a log 的方法即可记录日志
  • 向 crontab 添加例如 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> 的形式罗列着所有的版本,借助这个页面及链接就可以配合正则表达式来获取所有版本号。

1
©2020-2024   万云SSL证书  (www.sslssl.com.cn)  万云科技   豫ICP备2020034358号-10