| #! /bin/bash |
| |
| |
| |
| NGINX_version=nginx-1.18.0 |
| |
| NGINX_Download_URL=http://nginx.org/download/${NGINX_version}.tar.gz |
| |
| |
| install_path=/apps/nginx |
| |
| |
| SRC_DIR=/usr/local/src |
| |
| CPUS=`lscpu|grep "^CPU(s)"|awk '{print $2}'` |
| |
| os_type=`grep "^NAME" /etc/os-release |awk -F'"| ' '{print $2}'` |
| |
| os_version=`awk -F'"' '/^VERSION_ID/{print $2}' /etc/os-release` |
| |
| color (){ |
| if [[ $2 -eq 0 ]];then |
| echo -e "\e[1;32m$1\t\t\t\t\t\t[ OK ]\e[0;m" |
| else |
| echo $2 |
| echo -e "\e[1;31m$1\t\t\t\t\t\t[ FAILED ]\e[0;m" |
| fi |
| } |
| |
| install_nginx () { |
| if [ -e ${NGINX_version}.tar.gz ];then |
| color "${NGINX_version}.tar.gz 源码包已存在" 0 |
| else |
| color "开始下载源码包" 0 |
| wget ${NGINX_Download_URL} |
| fi |
| if [ $? -nq 0 ];then |
| color "下载失败" 1 |
| exit 1 |
| fi |
| color "开始安装 nginx" 0 |
| if id nginx &>/dev/null;then |
| color "nginx 用户已存在" 1 |
| else |
| useradd -s /sbin/nologin nginx |
| color "创建nginx用户" 0 |
| fi |
| color "开始安装nginx依赖包" 0 |
| if [ ${os_type}=="CentOS" -a ${os_version}=="8" ];then |
| yum -y 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 install make gcc pcre-devel openssl-devel zlib-devel perl-ExtUtils-Embed |
| else |
| color "系统不符,无法安装" 1 |
| exit 1 |
| fi |
| tar -xvf ${NGINX_version}.tar.gz -C ${SRC_DIR} |
| cd ${SRC_DIR} |
| ln -s ${NGINX_version} nginx |
| cd nginx |
| ./configure --prefix=${install_path} \ |
| --user=nginx \ |
| --group=nginx \ |
| --with-http_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 \ |
| --with-http_ssl_module |
| make -j ${CPUS} && make install |
| chown -R nginx:nginx /apps/nginx |
| ln -s ${install_path}/sbin/nginx /usr/sbin/nginx |
| cat > /usr/lib/systemd/system/nginx.service <<EOF |
| [Unit] |
| Description=The nginx HTTP and reverse proxy server |
| After=network-online.target remote-fs.target nss-lookup.target |
| Wants=network-online.target |
| |
| [Service] |
| Type=forking |
| PIDFile=${install_path}/logs/nginx.pid |
| ExecStartPre=/bin/rm -f ${install_path}/logs/nginx.pid |
| ExecStartPre=${install_path}/sbin/nginx -t |
| ExecStart=${install_path}/sbin/nginx -c ${install_path}/conf/nginx.conf |
| ExecReload=/bin/kill -s HUP \$MAINPID |
| KillSignal=SIGQUIT |
| TimeoutStopSec=5 |
| KillMode=process |
| PrivateTmp=true |
| |
| [Install] |
| WantedBy=multi-user.target |
| EOF |
| systemctl daemon-reload |
| systemctl enable --now nginx &>/dev/null |
| systemctl is-active nginx &>/dev/null |
| if [ $? -eq 0 ];then |
| color "nginx已安装完成!" 0 |
| else |
| color "nginx 启动失败" 1 |
| exit 1 |
| fi |
| } |
| |
| install_nginx |
| |
| exit 0 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!