美文网首页
Centos 7下编译安装Nginx

Centos 7下编译安装Nginx

作者: sprainkle | 来源:发表于2018-09-04 17:08 被阅读79次

准备工作

为了编译Nginx源代码,需要标准的GCC编译器。GCC的全称为GNU Compiler Collection, 其由GNU开发,并以GPLLGPL许可证发行,是自由的类UNIX即苹果电脑Mac OSX操作系统的标准编译器。因为GCC原本只能处理C语言,所以原名为GNU C语言编译器,后来得到快速扩展,可处理C++FortranPascalObjective-CJava以及Ada等其他语言。

除此之外,还需要Automake工具,以完成自动创建Makefile文件的工作。

由于Nginx的一些模块需要依赖其他第三方库,通常有pcre库(支持rewrite模块)、zlib库(支持gzip模块)和openssl库(支持ssl模块)等。

安装软件和第三方库

如果已经安装过以上软件,则可以略过;如果没有,可以使用一下命令进行在线安装:

$ yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open spenssl-devel

进入正文

为了方便管理和使用,首先在系统根目录"/"下创建nginx目录,最后会把编译好的Nginx安装到此目录。

下载Nginx压缩包

这里下载是当前的稳定版本,若需要下载其他版本,把nginx-1.14.0.tar.gz换成想要的版本即可。

$ cd /nginx
$ wget https://nginx.org/download/nginx-1.14.0.tar.gz
--2018-09-04 03:04:00--  https://nginx.org/download/nginx-1.14.0.tar.gz
正在解析主机 nginx.org (nginx.org)... 206.251.255.63, 95.211.80.227, 2001:1af8:4060:a004:21::e3, ...
正在连接 nginx.org (nginx.org)|206.251.255.63|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1016272 (992K) [application/octet-stream]
正在保存至: “nginx-1.14.0.tar.gz”

100%[=========================================================================>] 1,016,272   6.30KB/s 用时 1m 59s

2018-09-04 03:06:02 (8.37 KB/s) - 已保存 “nginx-1.14.0.tar.gz” [1016272/1016272])

解压

下载完成后,使用下面的命令进行解压。

$ tar -zxvf nginx-1.14.0.tar.gz # 解压
$ cd nginx-1.14.0 # 进入解压完成的目录
$ ll
drwxr-xr-x. 6 1001 1001   4096 9月   3 03:35 auto
-rw-r--r--. 1 1001 1001 286953 4月  17 11:22 CHANGES
-rw-r--r--. 1 1001 1001 437286 4月  17 11:22 CHANGES.ru
drwxr-xr-x. 2 1001 1001   4096 9月   3 22:56 conf
-rwxr-xr-x. 1 1001 1001   2502 4月  17 11:22 configure
drwxr-xr-x. 4 1001 1001   4096 9月   3 03:23 contrib
drwxr-xr-x. 2 1001 1001   4096 9月   3 03:23 html
-rw-r--r--. 1 1001 1001   1397 4月  17 11:22 LICENSE
-rw-r--r--. 1 root root    336 9月   3 03:36 Makefile
drwxr-xr-x. 2 1001 1001   4096 9月   3 03:23 man
drwxr-xr-x. 3 root root   4096 9月   3 03:42 objs
-rw-r--r--. 1 1001 1001     49 4月  17 11:22 README
drwxr-xr-x. 9 1001 1001   4096 9月   3 03:23 src

这里对解压完成后的部分目录和文件做个简单的介绍:

  • src 该目录存放了Nginx的所有源码;
  • man 该目录存放了Nginx的帮助文档;
  • html 该目录存放了两个html文件。这两个文件与Nginx服务器的运行相关,这两个文件的作用会在下文给出,这里不做赘述;
  • conf 该目录存放的是Nginx服务器的配置文件,包含Nginx服务器的基本配置文件;
  • auto 该目录存放了大量脚本文件,和configure脚本程序有关;
  • configure 该文件是Nginx软件的自动脚本程序。运行configure脚本一般会完成两项工作:一是检查环境,根据环境检查结果生成C代码;二是生成编译代码需要的Makefile文件。

编译安装Nginx

在介绍生成Makefile文件操作之前,先介绍一下configure脚本支持的常用选项:

选项 说明
--prefix=path 定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
--sbin-path=path 设置nginx的可执行文件的路径,默认为 prefix/sbin/nginx.
--conf-path=path 设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
--pid-path=path 设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
--error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
--http-log-path=path 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
--user=name 设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
--group=name 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
--with-select_module
--without-select_module
启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--with-poll_module
--without-poll_module
启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--without-http_gzip_module 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
--without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
--without-http_proxy_module 不编译http_proxy模块。
--with-http_ssl_module 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
--with-pcre=path 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
--with-pcre-jit 编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
--with-zlib=path 设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
--with-cc-opt=parameters 置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
--with-ld-opt=parameters 设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib".

了解了如上选项后,就可以根据实际情况使用configure脚本生成Makefile文件了。若上面的选项无法满足需求,可自行Google其他选项,上面介绍的只是其中的一小部分。

生成Makefile文件

使用下面的命令配置并生成Makefile文件:

$ ./configure --prefix=/Nginx
checking for OS
 + Linux 3.10.0-862.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
... 这里省略n行
checking for zlib library ... found
creating objs/Makefile

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

  nginx path prefix: "/Nginx"
  nginx binary file: "/Nginx/sbin/nginx"
  nginx modules path: "/Nginx/modules"
  nginx configuration prefix: "/Nginx/conf"
  nginx configuration file: "/Nginx/conf/nginx.conf"
  nginx pid file: "/Nginx/logs/nginx.pid"
  nginx error log file: "/Nginx/logs/error.log"
  nginx http access log file: "/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"

--prefix配置指定了Nginx的安装路径,其他的配置使用默认的配置。

在运行过程中,configure脚本调用auto目录中的各种脚本对系统环境及相关配置和设置进行了检查。

编译

得到了Makefile文件后,就可以编译源码了。在当前目录使用命令make编译源代码:

$ make
make -f objs/Makefile
make[1]: 进入目录“/nginx/nginx-1.14.0”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/nginx.o \
    src/core/nginx.c
... 这里省略n行
objs/src/http/modules/ngx_http_upstream_zone_module.o \
objs/ngx_modules.o \
-ldl -lpthread -lcrypt -lpcre -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/Nginx|" \
    -e "s|%%PID_PATH%%|/Nginx/logs/nginx.pid|" \
    -e "s|%%CONF_PATH%%|/Nginx/conf/nginx.conf|" \
    -e "s|%%ERROR_LOG_PATH%%|/Nginx/logs/error.log|" \
    < man/nginx.8 > objs/nginx.8
make[1]: 离开目录“/nginx/nginx-1.14.0”

安装

编译完成后,使用makeinstall命令进行安装:

$ make install
make -f objs/Makefile install
make[1]: 进入目录“/nginx/nginx-1.14.0”
test -d '/Nginx' || mkdir -p '/Nginx'
test -d '/Nginx/sbin' \
    || mkdir -p '/Nginx/sbin'
test ! -f '/Nginx/sbin/nginx' \
    || mv '/Nginx/sbin/nginx' \
        '/Nginx/sbin/nginx.old'
... 这里省略n行
test -d '/Nginx/logs' \
    || mkdir -p '/Nginx/logs'
test -d '/Nginx/html' \
    || cp -R html '/Nginx'
test -d '/Nginx/logs' \
    || mkdir -p '/Nginx/logs'
make[1]: 离开目录“/nginx/nginx-1.14.0”

到此,我们已经安装后了一个最基本的Nginx服务器,其安装路径为/Nginx

后记

安装完成后,将当前目录切换到/Nginx,然后查看安装目录包含哪些文件(夹):

$ cd /Nginx
$ ls *
conf:
fastcgi.conf          fastcgi_params.default  mime.types          nginx.conf.default   uwsgi_params
fastcgi.conf.default  koi-utf                 mime.types.default  scgi_params          uwsgi_params.default
fastcgi_params        koi-win                 nginx.conf          scgi_params.default  win-utf

html:
50x.html  index.html

logs:

sbin:
nginx

安装目录主要包含 conf html logs sbin 四个目录。

  • conf 存放了Nginx的所有配置文件。其中,nginx.conf文件是Nginx服务器的主配置文件,其他配置文件是用来配置Nginx的相关功能,比如,fastcgi.congfastcgi_params用来配置fastcgi
  • html 该目录存放了Nginx服务器在运行过程中调用的一些html文件。index.html文件是在服务器运行成功后默认返回的网页;50x.html是在Nginx服务器出现某些问题时将会调用该页面。
  • logs 顾名思义,用来存放Nginx服务器的日志。因为目前服务器还未启动,所以该目录为空。
  • sbin 只有一个nginx文件,该文件就是Nginx服务器的主程序了。

启动

$ ./sbin/nginx

测试

$ curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

若返回类似如上的结果,证明已成功启动。其实,上面返回的是目录/Nginx/html/下的index.html文件,可以使用cat /Nginx/html/index.html命令进行验证。

若是有图形界面,在浏览器访问[localhost](localhost],可以看到类似下图的页面:


Nginx默认页面

附——常用命令

nginx  #启动nginx
nginx -s quit  #快速停止nginx
nginx -V #查看版本,以及配置文件地址
nginx -v #查看版本
nginx -s reload|reopen|stop|quit   #重新加载配置|重启|快速停止|安全关闭nginx
nginx -h #帮助

相关文章

网友评论

      本文标题:Centos 7下编译安装Nginx

      本文链接:https://www.haomeiwen.com/subject/cnpgwftx.html