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端口也非常容易受到攻击。建议更换默认端口。