CentOS8 源码安装 Nginx

Nginx(engine x)是一款是由俄罗斯的程序设计师Igor Sysoev所开发 高性能Web 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

下面我们详细介绍在 CentOS 8 系统下通过源码安装 Nginx, 如果是 ubuntu 或者 debian 系统,将 yum -y或者dnf insall -y换成apt-get,依赖后缀-devel改成-dev基本都可以。

如果不是root用户,请在命令前面加上sudo获取安装权限。

1 准备工作:编译工具和库

因为从源码编译安装,所以一些编译工具和库文件是必须的,如下是从RedHat或者CentOS中安装这些工具和库:

$ yum -y install make zlib-devel gcc-c++ libtool openssl-devel pcre-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed

如果是Ubuntu或者Debian,对应命令为:

$ apt-get update
$ apt-get install make zlib1g-dev build-essential libtool libssl-dev  # 通用工具和库,可以通过apt-cache search命令查找对应的包

2 下载依赖源码

2.1 安装 PCRE

PCRE(Perl Compatible Regular Expressions,Perl兼容正则表达式),它作用是让 Ngnix 支持 Rewrite 功能。

$ pcre-config --version             # 查看上面命令安装的 PCRE 版本
8.45

$ wget https://ftp.pcre.org/pub/pcre/pcre-8.45.tar.gz  # 下载
tar zxf pcre-8.45.tar.gz       # 解压

2.2 安装 zib

zib 可以用于压缩 header,减少网络宽带占用,nginx 的 ngx_http_gzip_module 模块依赖于该工具。

$ head /usr/include/zlib.h
/* zlib.h -- interface of the 'zlib' general purpose compression library
  version 1.2.11, January 15th, 2017

$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxf zlib-1.2.11.tar.gz

3 安装 Nginx

下载并解压 Nginx 源码包:

$ wget http://nginx.org/download/nginx-1.21.0.tar.gz        # 下载Nginx
$ tar zxvf nginx-1.8.0.tar.gz     # 解压
$ cd nginx-1.8.0                  # 进入源码目录

然后,配置 Makefile,示例如下:

$ ./configure \
--prefix=/usr/share/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--user=nginx \
--group=nginx \
--modules-path=/usr/lib64/nginx/modules \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-stream \
--with-mail=dynamic \
--with-pcre=../pcre-8.45 \
--with-zlib=../zlib-1.2.11

各个选项的作用,请参考 Nginx 官网的 Building nginx from Sources

如果要增加其他的扩展,比如geoip2,则可以在 ./configure 后面继续加:

--add-dynamic-module=../ngx_http_geoip2_module-3.3

配置完成后,再编译安装

$ make
$ sudo make install
$ nginx -v  # 查看版本

4 启动 Nginx

先检查 Nginx 配置文件语法:

nginx -t

如果报错:

nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_image_filter_module.so" version 1014001 instead of 1021000 in /usr/share/nginx/modules/mod-http-image-filter.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed

说明有旧版本的 Nginx 模块,进到目录 /usr/share/nginx/modules,重命名这些不需要 .conf 扩展文件,后面都加个.bak

然后再测试一遍,没语法错误再启动 Nginx。

$ systemctl start nginx

用 ps 命令可以检查是否启动成功,如下:

$ ps -ef|grep nginx
root 20203 1 0 04:43 ? 00:00:00 nginx: master process /usr/sbin/nginx
www 20204 20203 0 04:43 ? 00:00:00 nginx: worker process 
www 20205 20203 0 04:43 ? 00:00:00 nginx: worker process 
root 20207 10085 0 04:44 pts/2 00:00:00 grep nginx

从浏览器访问我们配置的站点IP:

5 Nginx常用命令

以下包含了 Nginx 常用的几个命令:

/usr/sbin/nginx -s reload            # 重新载入配置文件
/usr/sbin/nginx -s reopen            # 重启 Nginx
/usr/sbin/nginx -s stop              # 停止 Nginx

到此,Ngnix 安装完毕。

参考资料:

  1. Nginx 安装配置
  2. linux devel包 和 非 devel 包的区别
  3. How to Install Nginx from Source on CentOS 8

1 条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

昵称 *