转载请备注来源: 《Nginx源码编译安装》 | shuwoom.com

本文介绍

本篇文章主要介绍Nginx的源码编译安装。

Nginx源码下载

登录官网:http://nginx.org/en/download.html

Nginx源码目录结构

drwxr-xr-x 6 nginx nginx   4096 Jul 16 12:56 auto
-rw-r--r-- 1 nginx nginx 296223 Apr 23 21:13 CHANGES
-rw-r--r-- 1 nginx nginx 451813 Apr 23 21:13 CHANGES.ru
drwxr-xr-x 2 nginx nginx   4096 Jul 16 12:56 conf
-rwxr-xr-x 1 nginx nginx   2502 Apr 23 21:12 configure
drwxr-xr-x 4 nginx nginx   4096 Jul 16 12:56 contrib
drwxr-xr-x 2 nginx nginx   4096 Jul 16 12:56 html
-rw-r--r-- 1 nginx nginx   1397 Apr 23 21:12 LICENSE
drwxr-xr-x 2 nginx nginx   4096 Jul 16 12:56 man
-rw-r--r-- 1 nginx nginx     49 Apr 23 21:12 README
drwxr-xr-x 9 nginx nginx   4096 Jul 16 12:56 src
  • auto 自动检测系统环境以及编译相关的脚本
  • conf 存放默认配置文件,在make install后,会拷贝到安装目录中去
  • contrib 存放一些实用工具,如geo配置生成工具
  • html 存放默认的网页文件,在make install后,会拷贝到安装目录中去
  • man nginx的man手册
  • src 存放nginx的源代码

Nginx配置参数(configure)

下面我会挑几个在Nginx配置安装中比较常用的配置项,更多详细的配置项可以访问Nginx官网:http://nginx.org/en/docs/configure.html

  • –user=name

给worker进程设置没有特权的用户名,如果没有设置,默认是nobody。

例如,我们可以通过如下命令创建:

groupadd nginx
  • –group=name

给worker进程设置没有特权的用户组名,如果没有设置,默认是nobody。

例如,我们可以通过如下命令创建:

useradd -g nginx nginx
  • –prefix=path

设置Nginx服务器的目录地址。默认是/usr/local/nginx地址。

  • –sbin-path=path

设置nginx可执行文件的地址。默认地址为prefix/sbin/nginx

  • –conf-path=path

设置nginx.conf配置文件的地址。默认地址为prefix/conf/nginx.conf

  • –error-log-path=path

设置错误日志的保存地址。默认是prefix/logs/error.log

  • –with-pcre=path

设置PCRE库的源码地址,这个库需要从PCRE 网站下载和解压。接下来的编译安装会在Nginx中的./configure和make步骤中完成。

PCRE库支持正则表达式。如果我们在nginx.conf配置文件中使用了正则表达式,那么在编译Nginx的时候就必须把PCRE库编译进Nginx,因为Nginx的HTTP模块需要靠它来解析正则表达式。另外,pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的。

Ubuntu下可以这样安装:

yum install -y pcre pcre-devel

Centos下可以这样安装:

sudo apt-get install -y libpcre3 libpcre3-dev
  • with-pcre-jit

用及时编译构建pcre库

  • –with-zlib=path

设置zlib库的源码地址,这个库需要从zlib下载和解压。同样的,其编译和安装会在Nginx中的./configure和make步骤中完成。

zlib库用于对HTTP包的内容进行gzip格式的压缩,如果我们在nginx.conf中配置了gzip on,并制定了对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量,则在编译的时候就必须把zlib编译进Nginx。

同样的,zlib-devel是二次开发所需要的库,也是编译Nginx所必需使用的。

Ubuntu下可以这样安装:

sudo apt-get install -y zlib1g-dev 

Centos下可以这样安装:

yum install -y zlib1g-dev
  • –with-http_ssl_module

如果服务器要采用SSL协议传输HTTP,那么需要拥有OpenSSL。另外,如果我们想使用MD5、SHA1等散列函数,那么也需要安装它。

Ubuntu下可以这样安装:

sudo apt-get install -y openssl libssl-dev 

Centos下可以这样安装:

yum install -y openssl openssl-devel

Nginx安装过程

安装编译环境

ubuntu下:

sudo apt-get -y install libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev

centos下:

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel 

Nginx 配置

下面我们是某个安装的配置参数:

首先在当前目录下下载并解压nginx源码:

wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar -xvf nginx-1.16.0.tar.gz
cd nginx-1.16.0

下载pcre库并解压到nginx源码目录中:

wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
tar -xvf pcre-8.43.tar.gz

下载zlib库并解压到nginx源码目录中:

wget https://www.zlib.net/fossils/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz

配置

./configure
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-pcre=../pcre-8.43 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11

配置成功后,会返回如下结果:

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

Nginx编译(build)

命令:

make

如果服务器是多核的,可以使用如下命令加快编译速度:

make -j 核数

Nginx安装(install)

编译没有报错,接下来就可以进行安装:

make install

安装完后,我们通过如下命令测试,说明已经安装成功

[root@VM_16_4_centos nginx-1.16.0]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.16.0

启动Nginx服务

[root@VM_16_4_centos nginx-1.16.0]# service nginx start
Starting nginx (via systemctl):                            [  OK  ]

通过ps命令,我们可以看到nginx正常运行起来了。

[root@VM_16_4_centos nginx-1.16.0]# ps -ef|grep nginx
root     17545     1  0 13:04 ?        00:00:00 nginx: master process /usr/local/services/nginx-1.0/sbin/nginx -c /usr/local/services/nginx-1.0/conf/nginx.conf
nginx    17546 17545  0 13:04 ?        00:00:00 nginx: worker process
nginx    17547 17545  0 13:04 ?        00:00:00 nginx: worker process
nginx    17548 17545  0 13:04 ?        00:00:00 nginx: worker process
nginx    17549 17545  0 13:04 ?        00:00:00 nginx: worker process
root     17568 12043  0 13:04 pts/0    00:00:00 grep --color=auto nginx

到此,我们就完成了Nginx的安装。

转载请备注来源: 《Nginx源码编译安装》 | shuwoom.com

打赏

发表评论

电子邮件地址不会被公开。