复制代码

为懒人提供无限可能,生命不息,code不止

人类感性的情绪,让我们知难行难
我思故我在
日拱一卒,功不唐捐
  • 首页
  • 前端
  • 后台
  • 数据库
  • 运维
  • 资源下载
  • 实用工具
  • 接口文档工具
  • 登录
  • 注册

nginx

【原创】centos环境中Nginx编译安装

作者: 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
* hard nofile 655360

更改nginx.conf参数

 代码如下

复制代码

vi /etc/nginx/nginx.conf

找到worker_rlimit_nofile和worker_connections参数,将值改为:

 代码如下

复制代码

worker_rlimit_nofile 10240;

worker_connections 10240;


注意位置,不要加错地方了。虽然改了系统文件,但是不需要重启系统,只要重启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