NGINX源码安装

文章目录

  • NGINX源码安装
    • 安装依赖包
    • 获取源码
      • NGINX官方网站
      • 各个目录的用途
    • 编译安装
    • 安装结束后的文件
    • 设置为服务

NGINX源码安装

安装依赖包

root执行

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

这些包是用于开发和构建软件的一些常见库和工具。
1.gcc: GNU Compiler Collection 的缩写,是一个用于编译源代码的编译器套件。它可以将高级编程语言(如C、C++等)编译为目标机器的可执行二进制代码。NGINX就是用C写的,要编译成二进制的文件。
2. gcc-c++: 这是 GCC 编译器的 C++ 支持,它允许您编译和构建使用 C++ 编程语言编写的软件。NGINX虽然是C语言写的,但不可避免的使用到C++的一些特性。
3. make: 是一个自动化构建工具,用于处理源代码和构建过程。通过 make 命令,您可以根据预定义的规则和指令自动执行编译、链接和安装等任务。
4. libtool: 是一个用于处理共享库的工具,它允许开发者在不同的操作系统上创建和使用共享库。
5. zlib 和 zlib-devel: zlib 是一个用于数据压缩和解压缩的库,广泛用于许多软件中以减小数据的存储空间和传输带宽。zlib-devel 包含用于开发和编译 zlib 相关程序的头文件和库文件。
6. openssl 和 openssl-devel: OpenSSL 是一个开源的加密库,提供了许多加密和安全相关的功能,如 SSL/TLS 协议、数字证书管理等。openssl-devel 包含了用于开发和编译使用 OpenSSL 的程序的头文件和库文件。
7. pcre 和 pcre-devel: PCRE(Perl Compatible Regular Expressions)是一个正则表达式库,用于处理文本匹配和替换操作。pcre-devel 包含用于开发和编译使用 PCRE 的程序的头文件和库文件。

以上软件是必要的软件包,如果不安装以上包可能会存在某些配置或功能不能使用的情况。

获取源码

NGINX官方网站

NGINX有两个版本,社区版和商业版
我们使用社区版进行研究,一般情况下社区版是能满足我们的需求的

NGINX社区版又分mainline版本和stable版本, 想尝鲜用mainline,想稳定用stable,一般我们线上选择stable版本,即中间位数是偶数的版本。
NGINX源码安装_第1张图片### 获取步骤

# 创建升级的文件夹
mkdir -p /opt/darren/upgrade
cd /opt/darren/upgrade
# 获取安装的源码
wget -c https://nginx.org/download/nginx-1.24.0.tar.gz
# 解压包
tar -zxvf nginx-1.24.0.tar.gz
cd /opt/darren/upgrade/nginx-1.24.0

各个目录的用途

[root@WDQCVM nginx-1.24.0]# ll
total 816
drwxr-xr-x 6 wdq  wdq     326 Aug 14 18:39 auto
-rw-r--r-- 1 wdq  wdq  323312 Apr 11 09:45 CHANGES
-rw-r--r-- 1 wdq  wdq  494234 Apr 11 09:45 CHANGES.ru
drwxr-xr-x 2 wdq  wdq     168 Aug 14 18:39 conf
-rwxr-xr-x 1 wdq  wdq    2611 Apr 11 09:45 configure
drwxr-xr-x 4 wdq  wdq      72 Aug 14 18:39 contrib
drwxr-xr-x 2 wdq  wdq      40 Aug 14 18:39 html
-rw-r--r-- 1 wdq  wdq    1397 Apr 11 09:45 LICENSE
-rw-r--r-- 1 root root    458 Aug 14 18:53 Makefile
drwxr-xr-x 2 wdq  wdq      21 Aug 14 18:39 man
drwxr-xr-x 3 root root    125 Aug 14 18:53 objs
-rw-r--r-- 1 wdq  wdq      49 Apr 11 09:45 README
drwxr-xr-x 9 wdq  wdq      91 Aug 14 18:39 src
[root@WDQCVM nginx-1.24.0]# 
  • auto目录,编译、支持哪些模块、当前系统有哪些特性给NGINX使用
  • CHANGES 提供了哪些特性,和BugFix,.ru是因为NGINX之父是俄罗斯人
  • conf 示例文件
  • configure编译文件
  • contrib 该文件中是一些对NGINX支持高亮显示的文件,这里的内容拷贝到VIM中可以高亮
  • html 提供了500 和index文件
  • man NGINX的帮助文件
  • src NGINX源代码
  • objs 是生成中间文件的目录
    • 其中有个ngx_modules.c的文件,这里记录所有进去的NGINX模块

编译安装

查看configure支持的参数
这里有很多参数,如果不需要变动则只需指定--prefix指定编译后的路径即可
还有带有--with-……这种默认是不会编译进NGINX的,相反 --without-……这种默认是编译进NGINX中的

[root@WDQCVM nginx-1.24.0]# ./configure --help

  --help                             print this message

  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname

  --user=USER                        set non-privileged user for
                                     worker processes
  --group=GROUP                      set non-privileged group for
                                     worker processes

  --build=NAME                       set build name
  --builddir=DIR                     set build directory

  --with-select_module               enable select module
  --without-select_module            disable select module
  --with-poll_module                 enable poll module
  --without-poll_module              disable poll module

  --with-threads                     enable thread pool support

  --with-file-aio                    enable file AIO support

  --with-http_ssl_module             enable ngx_http_ssl_module
……
  --with-http_stub_status_module     enable ngx_http_stub_status_module

  --without-http_charset_module      disable ngx_http_charset_module
  --without-http_gzip_module         disable ngx_http_gzip_module
……
  --without-http_upstream_zone_module
                                     disable ngx_http_upstream_zone_module

  --with-http_perl_module            enable ngx_http_perl_module
……
  --with-perl=PATH                   set perl binary pathname

  --http-log-path=PATH               set http access log pathname
  --http-client-body-temp-path=PATH  set path to store
                                     http client request body temporary files
  --http-proxy-temp-path=PATH        set path to store
                                     http proxy temporary files
  --http-fastcgi-temp-path=PATH      set path to store
                                     http fastcgi temporary files
  --http-uwsgi-temp-path=PATH        set path to store
                                     http uwsgi temporary files
  --http-scgi-temp-path=PATH         set path to store
                                     http scgi temporary files

  --without-http                     disable HTTP server
  --without-http-cache               disable HTTP cache

  --with-mail                        enable POP3/IMAP4/SMTP proxy module
 ……
  --with-stream_ssl_preread_module   enable ngx_stream_ssl_preread_module
  --without-stream_limit_conn_module disable ngx_stream_limit_conn_module
  ……
  --without-stream_upstream_zone_module
                                     disable ngx_stream_upstream_zone_module

  --with-google_perftools_module     enable ngx_google_perftools_module
……
  --with-openssl-opt=OPTIONS         set additional build options for OpenSSL

  --with-debug                       enable debug logging

[root@WDQCVM nginx-1.24.0]# 

编译

cd /opt/darren/upgrade/nginx-1.24.0
mkdir -p /opt/darren/dev/
./configure --prefix=/opt/darren/dev/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream --with-http_gzip_static_module --with-pcre  
make
make install
  • ./configure:这是运行 NGINX 配置脚本的命令。
  • --prefix=/opt/darren/dev/nginx:指定 NGINX 的安装路径为 /opt/darren/dev/nginx,这是 NGINX 被安装到的主目录。
  • --with-http_ssl_module:启用 HTTP SSL 模块,允许 NGINX 支持通过 HTTPS 提供加密的安全连接。
  • --with-http_stub_status_module:启用 HTTP Stub Status 模块,该模块提供了一个简单的状态页面,用于监控 NGINX 的运行状态和统计信息。
  • --with-stream:启用 Stream 模块,使 NGINX 能够处理基于 TCP 或 UDP 的流量。
  • --with-http_gzip_static_module:启用 HTTP Gzip Static 模块,该模块允许 NGINX 在服务器端对静态文件进行 Gzip 压缩,以提高传输效率。
  • --with-pcre:启用 PCRE(Perl Compatible Regular Expressions)模块,该模块用于支持正则表达式,通常用于 URI 路径匹配等。
  • make 和 make install 来执行完成安装操作
    在编译过程中有很多信息,这些信息只要没有报错信息即可,如果有报错信息则需要排查错误后再编译安装。

安装结束后的文件

编译的文件是

[root@WDQCVM nginx]# cd /opt/darren/dev/nginx
[root@WDQCVM nginx]# ll
total 0
drwxr-xr-x 2 root root 333 Aug 14 19:30 conf
drwxr-xr-x 2 root root  40 Aug 14 19:30 html
drwxr-xr-x 2 root root   6 Aug 14 19:30 logs
drwxr-xr-x 2 root root  19 Aug 14 19:30 sbin
[root@WDQCVM nginx]#
  • conf配置文件
  • html 静态页面
  • logs存放日志的目录
  • sbin二进制文件存放的地方

设置为服务

服务启动

# 测试语法是否有问题
[root@WDQCVM sbin]# /opt/darren/dev/nginx/sbin/nginx -t -c /opt/darren/dev/nginx/conf/nginx.conf
nginx: the configuration file /opt/darren/dev/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/darren/dev/nginx/conf/nginx.conf test is successful
# 启动
[root@WDQCVM sbin]# /opt/darren/dev/nginx/sbin/nginx -c /opt/darren/dev/nginx/conf/nginx.conf
[root@WDQCVM sbin]# ps -ef|grep nginx
root      6677     1  0 19:35 ?        00:00:00 nginx: master process /opt/darren/dev/nginx/sbin/nginx -c /opt/darren/dev/nginx/conf/nginx.conf
nobody    6678  6677  0 19:35 ?        00:00:00 nginx: worker process
root      6680  1148  0 19:35 pts/0    00:00:00 grep --color=auto nginx
[root@WDQCVM sbin]# 

将NGINX设置为服务

[root@WDQCVM sbin]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network. target remote-fs.target nss -lookup. target

[Service]
Type=forking
PIDFile=/opt/darren/dev/nginx/logs/nginx.pid
ExecStartPre=/opt/darren/dev/nginx/sbin/nginx -t -c /opt/darren/dev/nginx/conf/nginx.conf
ExecStart=/opt/darren/dev/nginx/sbin/nginx -c /opt/darren/dev/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

服务重载

systemctl daemon-reload

以服务的方式启动

[root@WDQCVM sbin]# systemctl start nginx
[root@WDQCVM sbin]# systemctl status nginx
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-08-14 19:40:15 CST; 1s ago
     Docs: https://nginx.org/en/docs/
  Process: 6737 ExecStart=/opt/darren/dev/nginx/sbin/nginx -c /opt/darren/dev/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
  Process: 6736 ExecStartPre=/opt/darren/dev/nginx/sbin/nginx -t -c /opt/darren/dev/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 6739 (nginx)
   CGroup: /system.slice/nginx.service
           ├─6739 nginx: master process /opt/darren/dev/nginx/sbin/nginx -c /opt/darren/dev/nginx/conf/nginx.conf
           └─6740 nginx: worker process

Aug 14 19:40:15 WDQCVM systemd[1]: [/usr/lib/systemd/system/nginx.service:6] Failed to add dependency on -lookup., ignoring: Invalid argument
Aug 14 19:40:15 WDQCVM systemd[1]: [/usr/lib/systemd/system/nginx.service:6] Failed to add dependency on target, ignoring: Invalid argument
Aug 14 19:40:15 WDQCVM systemd[1]: Starting nginx - high performance web server...
Aug 14 19:40:15 WDQCVM nginx[6736]: nginx: the configuration file /opt/darren/dev/nginx/conf/nginx.conf syntax is ok
Aug 14 19:40:15 WDQCVM nginx[6736]: nginx: configuration file /opt/darren/dev/nginx/conf/nginx.conf test is successful
Aug 14 19:40:15 WDQCVM systemd[1]: Started nginx - high performance web server.
[root@WDQCVM sbin]# 

设置为开机启动

[root@WDQCVM sbin]# systemctl  enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@WDQCVM sbin]

你可能感兴趣的:(linux,NGINX,环境问题,nginx,运维,centos)