目录

编译安装Nginx记录

通常来说编译不通过都是因为系统环境不满足条件,如缺少包等,本文以CentOS 7 系统为例,其中有些包如xxx-devel在ubuntu下一般都是叫做xxx-dev的,实在找不到可以使用apt-file查找文件属于哪个包。

需要准备好这些包(不用监控可以不用准备nginx-module-vts):

https://github.com/iuxt/src/releases/download/Nginx-Build-Src/nginx-1.20.2.tar.gz
https://github.com/iuxt/src/releases/download/Nginx-Build-Src/nginx-module-vts.zip
https://github.com/iuxt/src/releases/download/Nginx-Build-Src/nginx-module-vts.zip
https://github.com/iuxt/src/releases/download/Nginx-Build-Src/pcre-8.45.tar.gz

全部解压,然后进入nginx-1.20.2目录操作

首先运行一遍configure命令

./configure --prefix=/usr/local/nginx \
            --user=www --group=www \
            --with-stream \
            --with-http_stub_status_module \
            --with-http_sub_module \
            --with-http_v2_module \
            --with-http_ssl_module \
            --with-http_gzip_static_module \
            --with-http_realip_module \
            --with-http_flv_module \
            --with-http_mp4_module \
            --with-openssl=../openssl-1.1.1k \
            --with-pcre=../pcre-8.45 \
            --with-pcre-jit \
            --with-ld-opt=-ljemalloc \
            --add-module=../nginx-module-vts

nginx-module-vts 是监控模块,如果不用监控,可以将这一行删除
user group prefix 这些参数只是个默认值,是可以被配置文件的配置覆盖的

常见报错解决

  • ./configure: error: C compiler cc is not found

    yum install -y gcc-c++
    
  • checking for --with-ld-opt="-ljemalloc" ... not found

    yum install -y epel-release
    yum install -y jemalloc-devel
    
  • checking for zlib library ... not found

    yum install zlib-devel
    
  • You need Perl 5.

    yum install perl-devel
    

开始编译

安装

创建用户组和用户

groupadd www
useradd -g www -M -s /sbin/nologin www

安装可执行文件

可以用make install来快速安装,也可以自己进入objs目录把nginx复制到其他地方,配置文件放在/usr/loca/nginx下

生成systemd文件

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutStartSec=120
LimitNOFILE=1000000
LimitNPROC=1000000
LimitCORE=1000000

[Install]
WantedBy=multi-user.target

然后就可以愉快的使用Nginx了。

其他

监控的使用方法可以查看Nginx使用module_vts模块来做监控