作者: whooyun发表于: 2017-08-22 10:45
由于公司装的是centos的mini版本,所以很多软件包都无法使用,只能自己安装,特整理一份nginx的安装教程供自己以后参考。废话不说了,直入正题。
1、编译安装nginx(此文档基于版本1.8.0)前,先准备以下资源:
Nginx 的 tar.gz 包;
检查Development Tools是否安装;没安装就执行yum groupinstall "Development Tools"
PCRE是否安装完整;
zlib是否安装完整;
可以用这个命令安装:
yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
2、 先解压需要编译安装的tar.gz包,记得检查是否有报错;
3、 解压后,在nginx目录把 logs 文件夹建好,并且在里面新增三个文件,分别是:access.log,error.log,nginx.pid;
4、 进行nginx模块配置
./configure --prefix=/opt/nginx-1.8.0 --with-http_stub_status_module --with-pcre --without-http_rewrite_module --with-http_gzip_static_module
我这里只是做个实验,所以 without 后面的那些模块就没增加了,按你自己的需求增加,
http_rewrite_module 具有类似于 java urlrewrite 的功能;
http_gzip_module具有压缩文件,以减少带宽的占用功能;
5、 进入 nginx 目录,执行命令 make&&make install 这个命令的意思就是编译,并且安装;
6、 进入 nginx 的 sbin 目录,执行 ./nginx 就可以启动了,如果启动报错,可以去看下第3步建好的error.log日志;
异常:too many open files
解决办法:
在/etc/security/limits.conf文件中添加如下信息:
代码如下
复制代码
*
soft nofile 655360
更改nginx.conf参数
代码如下
复制代码
vi
/etc/nginx/nginx.conf
找到worker_rlimit_nofile和worker_connections参数,将值改为:
代码如下
复制代码
worker_rlimit_nofile
10240;
worker_connections
10240;
* hard nofile 655360
注意位置,不要加错地方了。虽然改了系统文件,但是不需要重启系统,只要重启nginx就可以了。(nginx.conf文件修改比较简单,就不在这篇文章中介绍了)
注意事项:如果功能模块组件未生效可以杀掉已经运行的进程,重新启动试试。如果增加功能模块就需要重新进行configure配置,并且重新编译和安装。
扩展阅读:
· --prefix=PATH : 指定nginx的安装目录。默认 /usr/local/nginx
· --conf-path=PATH : 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf
· --user=name: 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。--group=name类似
· --with-pcre : 设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4 – 8.30)并解压,剩下的就交给Nginx的./configure和make来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。
· --with-zlib=PATH : 指定 zlib(版本1.1.3 – 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。
· --with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
· --with-http_stub_status_module : 用来监控 Nginx 的当前状态
· --with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
· --add-module=PATH : 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)
· 也可以使用./configure --help 查看有效模块
参考资料:http://www.cnblogs.com/bluestorm/p/4574688.html