Loading... ## 引言 这里主要是一个一键编译安装 `Nginx`的脚本 ### 修订记录 | 序号 | 时间 | 修改内容 | | :--: | :--------: | ---------------------------- | | 1 | 2024.04.23 | 创建`Nginx`的脚本安装文件 | | 2 | 2024.04.24 | 补充用户配置修改部分 | | 3 | 2024.04.25 | 补充`Nginx`安装前检测 | | 4 | 2024.05.13 | 将安装前检查和创建目录摘出来 | ### 详细教程 这里的脚本是对源码编译方式进行浓缩的,如果遇到一些报错或异常 > 欢迎移步源码编译Nginx的教程文档 > > <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://hw13.cn/66.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://static.hw13.cn/usr/uploads/2023/12/3317262815.png?x-oss-process=image/resize,w_800);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">手把手教你源码搭建Nginx服务器v1.25.3最新版(非root启动)</p> <div class="inster-summary text-muted"> 引言本命令适用于 Centos7.2系统,其他系统或平台暂未测试过快捷命令# 补充依赖 sudo yum -y i... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> ## 快速执行 复制下面的内容,直接粘贴到服务器的控制台即可 ```bash wget http://static.hw13.cn/usr/uploads/2024/04/nginx.sh && sh nginx.sh ``` 注意,脚本内部有一些敏感操作,需要当前执行的用户有 `sudo`权限,请使用具有 `sudo`权限的用户执行,或使用 `root`用户执行 ## 脚本正文 ```bash #!/bin/bash # 【版本确定】要安装的Nginx版本 NGINX_VERSION="" # 【存放位置】要安装的Nginx源码包存放位置 NGINX_SRC_DIR="" # 【安装位置】要安装的Nginx位置 NGINX_INSTALL_DIR="" # 【用户名】Nginx启动用户名 NGINX_USER="" # 【输出开关】Nginx编译过程是否输出 NGINX_OUTPUT=false # 默认值 NGINX_DEFAULT_USER="nginx" NGINX_DEFAULT_VERSION="1.25.3" NGINX_DEFAULT_SRC_DIR="/server/data/packages" NGINX_DEFAULT_OUTPUT=false readUserInputConfig() { echo "------------------------------------ NGINX 脚本安装程序 ------------------------------------" read -p "请输入源码包存放位置(默认:${NGINX_DEFAULT_SRC_DIR},不修改直接回车):" NGINX_SRC_DIR read -p "请输入nginx使用的用户名(默认:${NGINX_DEFAULT_USER},不修改直接回车):" NGINX_USER read -p "请输入nginx版本号(默认:${NGINX_DEFAULT_VERSION},不修改直接回车):" NGINX_VERSION read -p "是否需要输出运行结果(默认:${NGINX_DEFAULT_OUTPUT},不修改直接回车):" NGINX_OUTPUT # 预防用户空输入 if [[ -z ${NGINX_USER} ]] then NGINX_USER=$NGINX_DEFAULT_USER fi # 预防用户空输入 if [[ -z ${NGINX_VERSION} ]] then NGINX_VERSION=$NGINX_DEFAULT_VERSION fi # 预防用户空输入 if [[ -z ${NGINX_OUTPUT} ]] then NGINX_OUTPUT=$NGINX_DEFAULT_OUTPUT fi NGINX_DEFAULT_INSTALL_DIR="/server/nginx/$NGINX_VERSION" read -p "请输入nginx安装位置(默认:${NGINX_DEFAULT_INSTALL_DIR},不修改直接回车):" NGINX_INSTALL_DIR # 预防用户空输入 if [[ -z ${NGINX_INSTALL_DIR} ]] then NGINX_INSTALL_DIR=$NGINX_DEFAULT_INSTALL_DIR fi # 预防用户空输入 if [[ -z ${NGINX_SRC_DIR} ]] then NGINX_SRC_DIR=$NGINX_DEFAULT_SRC_DIR fi while [[ true ]]; do confirmInstallConfig read -p "是否确认配置并进行安装(yes):" NGINX_CONFIRM if [[ ${NGINX_CONFIRM} == "yes" ]] then break fi done echo "现在开始安装……" } confirmInstallConfig() { echo "---------------------------------- 安装配置确认 --------------------------------------------" echo "Nginx的使用用户为:${NGINX_USER}" echo "Nginx的版本号为:${NGINX_VERSION}" echo "Nginx的安装位置为:${NGINX_INSTALL_DIR}" echo "Nginx的源码包存放位置为:${NGINX_SRC_DIR}" echo "Nginx安装过程是否需要输出:${NGINX_OUTPUT}" } # 主安装程序 main() { # 进入Nginx源码包存放目录 cd $NGINX_SRC_DIR # 下载nginx源码包 wget https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz if [ $? -ne 0 ]; then echo "【错误】下载nginx源代码包出错" exit 1 fi # 解压源码包 tar -xzvf nginx-$NGINX_VERSION.tar.gz if [ $? -ne 0 ]; then echo "【错误】提取nginx源包时出错" exit 1 fi # 进入解压后的目录 cd nginx-$NGINX_VERSION # 配置nginx ./configure \ --prefix=$NGINX_INSTALL_DIR \ --user=$NGINX_USER \ --group=$NGINX_USER \ --with-http_ssl_module \ --with-http_stub_status_module if [ $? -ne 0 ]; then echo "【错误】配置nginx出错" exit 1 fi # 编译和安装nginx make if [ $? -ne 0 ]; then echo "【错误】编译nginx时出错" exit 1 fi make install if [ $? -ne 0 ]; then echo "【错误】编译后安装nginx时出错" exit 1 fi # 开放端口给程序占用(允许非root用户也可以执行nginx的启动(需要root执行)) sudo setcap cap_net_bind_service=+eip $NGINX_INSTALL_DIR/sbin/nginx # 使用命令来启动nginx $NGINX_INSTALL_DIR/sbin/nginx # 检查nginx是否监听80端口 sudo netstat -nltp | grep :80 if [ $? -ne 0 ]; then echo "【错误】Nginx没有监听80端口。" else echo "Nginx正在80端口上运行和侦听" fi $NGINX_INSTALL_DIR/sbin/nginx -v } preInstall() { # 检查nginx是否监听80端口 sudo ps -aux | grep 'nginx: worker process' | grep -v grep if [ $? -eq 0 ]; then echo "【错误】当前Nginx已经安装上了,无需重复安装" exit 1 fi # 安装依赖项 sudo yum install -y zlib-devel openssl-devel pcre pcre-devel if [ $? -ne 0 ]; then echo "【错误】安装依赖项错误" exit 1 fi # 添加nginx用户(如果尚未存在) id $NGINX_USER if [ $? -ne 0 ]; then sudo useradd $NGINX_USER -s /sbin/nologin -M fi # 创建源码包存放目录、安装目录 sudo mkdir -p $NGINX_SRC_DIR $NGINX_INSTALL_DIR sudo chown -R $USER.$USER $NGINX_SRC_DIR sudo chown -R $USER.$USER $NGINX_INSTALL_DIR } # 用户输入自定义配置 readUserInputConfig # 调用函数执行 if [[ $NGINX_OUTPUT ]]; then # 预安装 preInstall # 安装 main else # 预安装 preInstall > /dev/null 2>&1 # 安装 main > /dev/null 2>&1 fi ``` 欢迎关注拓行公众号,分享各种技术博客文章拓行——奋勇进取,开拓未来,砥砺前行 最后修改:2024 年 06 月 14 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~