一键编译安装Nginx脚本

简介: 【4月更文挑战第30天】

》》》》》魏红斌带你学shell脚本《《《《《


更多shell脚本学习点击个人主页


作为一个资深程序猿,我将带领您从零开始,一步步踏上运维之旅,无论您是否拥有现成的服务器,都将学会如何轻松购买、部署,并通过编写及应用精心设计的Shell脚本,解决实际工作中遇到的问题。这些脚本不仅源自真实的业务场景,经历了反复实践与严格测试,确保了其简洁高效、易于理解且便于使用。更重要的是,我们将全程免费分享,并深度解析背后原理,助您深入理解并灵活运用,每一款脚本均经过真实业务场景的反复打磨与严格测试,秉持着简洁高效、易于理解和使用的理念设计,无偿提供并且提供相关解析过程,让读者能更深入了解相关内容

无服务器的朋友们

让我们先从选购并部署服务器开始。只需简单三步,即可拥有您的专属云服务器:

  1. 访问ECS官网:点击链接直达阿里云ECS网站:ECS选择网址。这是您获取高质量云服务器的第一站。
  2. 选择并购买:在琳琅满目的服务器配置中,挑选符合您需求的那一款,一键下单,完成支付。整个过程犹如在线购物般便捷。
  3. 进入ECS控制台:支付成功后,您将被引导至ECS管理控制台。在这里,您可以全面掌控您的服务器资源,后续的所有运维操作都将在此展开。

已有服务器的朋友们

如果您已拥有ECS实例,那么请直接登录ECS管理控制台在左侧导航栏中,依次选择“实例与镜像” > “实例”,确保您已定位到目标资源所在的资源组和地域。接下来,在实例列表中找到待连接的实例,点击操作列下的“远程连接”,选择“通过Workbench远程连接”并点击“立即登录”。

登录实例

无论是新购还是已有服务器,接下来都需要进行实例登录。这里支持多种认证方式,以最常见的“密码认证”为例:

  • 输入用户名(通常为rootecs-user)。
  • 接着,输入登录密码。如果您忘记了密码,无需担忧,您可以在ECS实例详情页面查询,或者通过“更改密码”功能进行修改。

编写与运行Shell脚本

成功登录后,您将看到一个熟悉的命令行界面——这就是您的运维主战场。现在,键入vim test.sh,我们便进入了文本编辑模式,准备创建第一个Shell脚本。

按下键盘上的i键,进入插入模式,此刻您可以自由地复制粘贴今天要学习的脚本代码,粘贴后按ecs后,按:wq保存脚本,可以用./ test.sh或者sh test.sh进行脚本执行。

今天我们要学习的脚本是(脚本内容直接复制粘贴即可):

#!/bin/bash

SRC_DIR=/usr/local/src

NGINX_URL=http://nginx.org/download/

NGINX_FILE=nginx-1.18.0

TAR=.tar.gz

NGINX_INSTALL_DIR=/apps/nginx

CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'`

color () {

RES_COL=60

MOVE_TO_COL="echo -en \\033[${RES_COL}G"

SETCOLOR_SUCCESS="echo -en \\033[1;32m"

SETCOLOR_FAILURE="echo -en \\033[1;31m"

SETCOLOR_WARNING="echo -en \\033[1;33m"

SETCOLOR_NORMAL="echo -en \E[0m"

echo -n "$1" && $MOVE_TO_COL

echo -n "["

if [ $2 = "success" -o $2 = "0" ] ;then

${SETCOLOR_SUCCESS}

echo -n $" OK "

elif [ $2 = "failure" -o $2 = "1" ] ;then

${SETCOLOR_FAILURE}

echo -n $"FAILED"

else

${SETCOLOR_WARNING}

echo -n $"WARNING"

fi

${SETCOLOR_NORMAL}

echo -n "]"

echo

}

os_type () {

awk -F'[ "]' '/^NAME/{print $2}' /etc/os-release

}

os_version () {

awk -F'"' '/^VERSION_ID/{print $2}' /etc/os-release

}

check () {

[ -e ${NGINX_INSTALL_DIR} ] && { color "nginx 已安装,请卸载后再安装" 1; exit; }

cd ${SRC_DIR}

if [ -e ${NGINX_FILE}${TAR} ];then

color "相关文件已准备好" 0

else

color '开始下载 nginx 源码包' 0

rpm -q wget &> /dev/null || yum -y install wget &> /dev/null

wget ${NGINX_URL}${NGINX_FILE}${TAR}

[ $? -ne 0 ] && { color "下载 ${NGINX_FILE}${TAR}文件失败" 1; exit; }

fi

}

install () {

color "开始安装 nginx" 0

if id nginx &> /dev/null;then

color "nginx 用户已存在" 1

else

useradd -s /sbin/nologin -r nginx

color "创建 nginx 用户" 0

fi

color "开始安装 nginx 依赖包" 0

if [ `os_type` == "CentOS" -a `os_version` == '8' ] ;then

yum -y -q install make gcc-c++ libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-

Embed

elif [ `os_type` == "CentOS" -a `os_version` == '7' ];then

yum -y -q install make gcc pcre-devel openssl-devel zlib-devel perl-ExtUtils-Embed

else

apt update &> /dev/null

apt -y install make gcc libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev &> /dev/null

fi

cd $SRC_DIR

tar xf ${NGINX_FILE}${TAR}

NGINX_DIR=`echo ${NGINX_FILE}${TAR}| sed -nr 's/^(.*[0-9]).*/\1/p'`

cd ${NGINX_DIR}

./configure --prefix=${NGINX_INSTALL_DIR} --user=nginx --group=nginx --with-http_ssl_module --withhttp_

v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre -

-with-stream --with-stream_ssl_module --with-stream_realip_module

make -j $CPUS && make install

[ $? -eq 0 ] && color "nginx 编译安装成功" 0 || { color "nginx 编译安装失败,退出!" 1 ;exit; }

echo "PATH=${NGINX_INSTALL_DIR}/sbin:${PATH}" > /etc/profile.d/nginx.sh

cat > /lib/systemd/system/nginx.service <<EOF

[Unit]

Description=The nginx HTTP and reverse proxy server

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=${NGINX_INSTALL_DIR}/logs/nginx.pid

ExecStartPre=/bin/rm -f ${NGINX_INSTALL_DIR}/logs/nginx.pid

ExecStartPre=${NGINX_INSTALL_DIR}/sbin/nginx -t

ExecStart=${NGINX_INSTALL_DIR}/sbin/nginx

ExecReload=/bin/kill -s HUP \$MAINPID

KillSignal=SIGQUIT

TimeoutStopSec=5

KillMode=process

PrivateTmp=true

[Install]

WantedBy=multi-user.target

EOF

systemctl daemon-reload

ln -s /apps/nginx/sbin/nginx /usr/sbin/

systemctl enable --now nginx &> /dev/null

systemctl is-active nginx &> /dev/null || { color "nginx 启动失败,退出!" 1 ; exit; }

color "nginx 安装完成" 0

}

check

install

脚本主要分为以下几个部分:

变量定义

  • SRC_DIR: 指定源码存放目录。
  • NGINX_URL: Nginx下载链接的基础URL。
  • NGINX_FILE: 指定要下载的Nginx版本文件名。
  • TAR: 文件扩展名。
  • NGINX_INSTALL_DIR: Nginx的安装目录。
  • CPUS: 通过lscpu获取的CPU核心数,用于编译时的并行处理。
  • 函数color用于输出彩色的安装状态信息。
  • 函数os_typeos_version分别用于获取操作系统类型和版本。

检查及安装函数

  • check函数检查Nginx是否已安装,以及下载Nginx源码包。如果Nginx已安装,脚本将提前退出。如果源码包不存在,则尝试下载。
  • install函数执行以下操作:
  • 检查并创建Nginx系统用户。
  • 根据操作系统类型安装必要的依赖包。
  • 解压并编译Nginx源码,配置编译选项包括SSL、HTTP/2、RealIP、Stub Status、Gzip、Stream模块等。
  • 将Nginx的可执行路径添加到系统PATH。
  • 创建Systemd服务单元文件nginx.service,以便于管理Nginx服务。
  • 链接Nginx的可执行文件到/usr/sbin/,便于系统范围内的访问。
  • 启用并尝试启动Nginx服务,检查启动状态,并给出成功或失败的反馈。

执行流程

脚本首先调用check函数进行前期检查和准备工作,然后调用install函数进行Nginx的安装和配置。整个过程包括了错误检查、用户友好的状态输出,以及适应不同Linux发行版的安装依赖处理,体现了较好的自动化安装脚本设计思路。

如果想上手操作练代码的同学们可以通过阿里云ecs服务器免费试用参与!

入口:新老同学免费试用

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
28天前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
1月前
|
应用服务中间件 PHP nginx
Mac安装Nginx
Mac安装Nginx
22 2
Mac安装Nginx
|
19天前
|
缓存 应用服务中间件 nginx
安装nginx-http-flv-module模块
本文介绍如何为Nginx安装`nginx-http-flv-module`模块。此模块基于`nginx-rtmp-module`二次开发,不仅具备原模块的所有功能,还支持HTTP-FLV播放、GOP缓存、虚拟主机等功能。安装步骤包括:确认Nginx版本、下载相应版本的Nginx与模块源码、重新编译Nginx并加入新模块、验证模块安装成功。特别注意,此模块已包含`nginx-rtmp-module`功能,无需重复编译安装。
56 1
|
2月前
|
应用服务中间件 Linux 网络安全
|
28天前
|
应用服务中间件 Linux nginx
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
|
1月前
|
应用服务中间件 Linux nginx
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
这篇文章介绍了在CentOS系统上使用Nginx源码包进行安装和配置的详细步骤,包括源码包的获取、解压、配置、编译、安装、启动验证以及注意事项。
63 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
|
1月前
|
应用服务中间件 网络安全 nginx
运维专题.Docker+Nginx服务器的SSL证书安装
运维专题.Docker+Nginx服务器的SSL证书安装
37 3
|
1月前
|
应用服务中间件 nginx
[nginx]编译安装openresty
[nginx]编译安装openresty
|
1月前
|
JavaScript 应用服务中间件 nginx
Windows安装hexo并配置nginx
Windows安装hexo并配置nginx