4.2 Nginx源码编译安装
以Centos平台编译环境为例,安装Make并编译Gcc/GccDemo的方法如代码清单4-1所示。
代码清单4-1 GccDemo代码
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
Nginx重写rewrite,需要安装pcre,而Gzip压缩需要安装zlib,网络转发需要ssl设定源码目录为/usr/local/source。安装pcre、zlib、ssl的方法如代码清单4-2所示。
代码清单4-2 Nginx插件安装
------------pcre-----------------
cd /usr/local/source
wget http:// www.programming.cn/pcre/pcre-8.36.tar.gz
tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make
make install
-----------zlib--------------
wget http:// zlib.net/zlib-1.2.7.tar.gz
tar -zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7
./configure
make
make install
-----------ssl--------------
wget https:// www.openssl.org/source/openssl-1.0.1t.tar.gz
tar -zxvf openssl-1.0.1t.tar.gz
Nginx安装的方法如代码清单4-3所示。
代码清单4-3 Nnigx安装
wget http:// nginx.org/download/nginx-1.5.8.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
下载Nginx包的页面效果如图4-2所示。
图4-2 下载Nginx包
解压Nginx包,如图4-3所示。
图4-3 解压Nginx包
具体的Nginx参数配置,如代码清单4-4所示。
代码清单4-4 Nginx参数配置
./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/opt/app/openet/zachary/pcre-8.36 \
--with-zlib=/opt/app/openet/zachary/zlib-1.2.7 \
--with-openssl=/opt/app/openet/zachary/openssl-1.0.1t
make
make install
其中,make用于编译,它从Makefile中读取指令,然后编译;make install用于安装,它也从Makefile中读取指令,将Nginx安装到指定的位置;configure命令用于检测安装平台的目标特征,它定义了系统的各个方面,包括Nginx被允许使用的连接处理的方法,比如它会检测是不是有CC或GCC(并不是需要CC或GCC,它是个shell脚本,执行结束时,它会创建一个Makefile文件)。
Nginx的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配置文件中使用。默认情况下,文件名为prefix/logs/nginx.pid。
-
--error-log-path=path:设置主错误、警告和诊断文件的名称。安装完成后,可以随时改变文件名,在nginx.conf配置文件中使用。默认情况下,文件名为prefix/logs/error.log。
-
--http-log-path=path:设置主请求HTTP服务器的日志文件的名称。安装完成后,可以随时改变文件名,在nginx.conf配置文件中使用。默认情况下,文件名为prefix/logs/access.log。
-
--user=name:设置Nginx工作进程的用户。安装完成后,可以随时更改名称,在nginx.conf配置文件中使用。默认用户名为nobody。
-
--group=name:设置Nginx工作进程的用户组。安装完成后,可以随时更改名称,在nginx.conf配置文件中使用。默认为非特权用户。
-
--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来完成的。
-
--with-pcre-jit:编译PCRE,包含just-in-time compilation(即PCRE 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"。
其中相关路径说明如下:
-
--with-pcre=/usr/src/source/pcre-8.36:pcre-8.36的源码路径。
-
--with-zlib=/usr/src/source/zlib-1.2.7:zlib-1.2.7的源码路径。
安装成功后,/usr/local/nginx目录如下:
fastcgi.conf koi-win nginx.conf.default
fastcgi.conf.default logs scgi_params
fastcgi_params mime.types scgi_params.default
fastcgi_params.default mime.types.default uwsgi_params
html nginx uwsgi_params.default
koi-utf nginx.conf win-utf
注意
Nginx默认端口是80,启动之前应先检查80端口的使用情况,使用的指令是netstat -ano|grep 80,如果查不到结果则说明该端口未占用,反之,有如下两种处理方式:
-
更改Nginx默认80端口,通过指令whereis nginx.conf找到默认配置文件,更改方式为listen 80 default_server;
-
找到占用80端口的应用,然后kill掉该应用以释放80端口。
温馨提示:
80端口默认可以隐藏,例如:zachary.sh.cn:80等同于zachary.sh.cn,同理80端口也非常容易受到攻击。建议更换默认端口。
nxw9QDjNsUX6Z3Cv6iZdSRYw8wm8f8HumoL9LDEJEq0+MKT9rbkD6Hy6yCiR8PTz