Nginx源码编译安装
目录
转载请备注来源: 《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