Nginx安装

2016年7月15日 发表评论 阅读评论

nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。

正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。

ububtu平台编译环境可以使用以下指令

centos平台编译环境使用如下指令

安装make:

安装g++:

下面正式开始
---------------------------------------------------------------------------
一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
1.选定源码目录
可以是任何目录,本文选定的是/usr/local/src

2.安装PCRE库
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:

3.安装zlib库
http://zlib.net/zlib-1.2.8.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:

4.安装ssl(某些vps默认没装ssl)

5.安装nginx

Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:

--with-pcre=/usr/src/pcre-8.34 指的是pcre-8.34 的源码路径。
--with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。

安装成功后 /usr/local/nginx 目录下如下

6.启动
确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx,

如果查不到结果后执行,有结果则忽略此步骤(ubuntu下必须用sudo启动,不然只能在前台运行)

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

-----------------------------------------------------
到这里nginx就安装完成了,如果只是处理静态html就不用继续安装了

如果你需要处理php脚本的话,还需要安装php-fpm

下面安装排错

附:可能遇到的错误和一些帮助信息

1.1编译pcre错误

解决办法:安装g++,别忘了重新configure

1.2 make出错

按照第4步的安装方法或
ubuntu下

centos下

2.nginx编译选项

make是用来编译的,它从Makefile中读取指令,然后编译。

make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

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配置文件中使用 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".

典型实例(下面为了展示需要写在多行,执行时内容需要在同一行)

  1. hyan
  2. hyan
  3. 2017年1月13日18:14 | #3

    дженерик левитра купить в санкт петербурге Купить дженерики дженерики купить рф купить дженерики с доставкой купить дженерики виагра в санкт петербурге купить дженерики недорого в москве дженерик левитры купить в санкт петербурге купить дженерик сиалис в санкт петербурге купить дешевые дженерики

    http://stoyak.men

  4. 迷彩
    2017年1月5日18:36 | #4

    ./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=/usr/local/src/pcre-8.38
    --with-zlib=/usr/local/src/zlib-1.2.10
    --with-openssl=/usr/local/src/openssl-1.0.1t

    • 迷彩
      2017年1月5日18:50 | #5

      这是我安装的文件目录配置!

  5. 2016年12月10日23:29 | #6

    你的问题2015年的了,我是刚刚安装的,安装pcre最新版pcre2-10.22, ,也是报错这个,装了pcre-8.39就没有问题

  6. 一木
    2016年12月7日16:58 | #7

    很不错啊,谢谢分享

  7. 2016年11月22日22:40 | #8

    不错,照着做完美编译!看其他人的老是各种错误

  8. 2016年11月10日10:01 | #9

    一直有想学习下nginx源码。啥时候出个源码解读呀?

  9. 白开水
    2016年10月25日14:20 | #10

    请问,nginx支持ftp转发吗

  10. 2016年7月22日13:38 | #11

    make: *** No rule to make target build', needed by default'. Stop.

  11. blueo666
    2016年5月8日21:48 | #13

    openssl 1.1 编译没法通过,换低版本才可以通过

  12. 古德
    2016年3月26日14:03 | #14

    ubuntu不是ububtu

  13. Damon
    2016年2月19日10:43 | #15

    gaoqi

  14. 2015年12月27日16:52 | #16

    楼主好,windows 服务器上用nginx来做代理服务器怎么样呢

  15. nin
    2015年12月23日13:59 | #17

    安装nginix 时,./configure: error: invalid option "--sbin-path" 什么原因?

  16. 大肥肉
    2015年12月23日11:06 | #18

    点赞

  17. 2015年12月5日23:39 | #19

    在安装nginx的时候,pcre的依赖和zlib的依赖,你直接指向了源码,那么是不是意味着zlib和pcre并不需要安装呢?

  18. 无名
    2015年11月22日21:47 | #20

    openssl 这个高版本就是不行,最后换了低版openssl-1.0.1p OK

  19. 2015年11月12日18:23 | #21

    编译安装和apt安装,配置的时候是不是有点不同?

  20. 2015年11月7日22:02 | #22

    网站做的好棒哦

  21. 2015年7月19日13:41 | #23

    晕晕

  22. 2015年6月20日10:29 | #24

    教程很好,支持下

  23. 2015年5月18日19:48 | #25

    安装时要不要添加nginx用户

  24. 2015年4月21日21:58 | #27

    执行./nginx -t 显示配置文件OK还有successful,就是打开浏览器访问本地ip地址是404 Not Found,而且很奇怪下面还写着nginx/1.6.3 这是怎么回事啊5555555~~明明我装的版本和楼主是一样的呀,好心塞。。求教。。

  25. 2015年4月19日15:06 | #31

    with-http_rewrite_module 这个有什么用处吗

  26. sufy
    2015年3月6日15:37 | #33

    我的tomcat端口设置的是8081然后也启动了,但是按照nginx后,访问主机ip,出现无法显示该网页

  27. 逃之夭夭
    2015年3月4日16:52 | #34

    编译错了src/core/ngx_regex.h:15:18: 致命错误: pcre.h:没有那个文件或目录
    编译中断。
    make : *** [objs/src/core/nginx.o] 错误 1
    make :正在离开目录 `/usr/local/src/nginx-1.7.9'
    make: *** [install] 错误 2

    • 2015年7月30日22:54 | #35

      原因是缺少pcre,需要安装libpcre

      ubuntu/debian:
      apt-get install libpcre3 libpcre3-dev

      centos/redhat:
      yum install pcre-devel

  28. 2015年2月22日22:57 | #36

    pcre能否用pcre2替代?(我看到pcre官网上说今后只对pcre进行漏洞修补)
    我用pcre2替代了pcre
    出现了错误:src/core/ngx_regex.h:15:18: fatal error: pcre.h: No such file or directory
    #include <pcre.h>
    ^
    compilation terminated.
    make : *** [objs/src/core/nginx.o] Error 1
    make : Leaving directory `/usr/local/src/nginx-1.7.10'
    make: *** [build] Error 2
    怎么解决?

    • 2015年2月22日23:01 | #37

      最好跟官网一致

    • gigi
      2015年7月19日11:54 | #38

      我也出现 了这个问题,改回用pcre就能通过,没用pcre2

    • 2015年7月30日22:51 | #39

      原因是缺少pcre,需要安装libpcre

      ubuntu/debian:
      apt-get install libpcre3 libpcre3-dev

      centos/redhat:
      yum install pcre-devel

  29. 2014年12月23日12:05 | #40

    mark

  30. 2014年12月4日11:40 | #41

    3ks ~ 很不错呦~

  31. Hans
    2014年10月8日16:48 | #42

    Windows下咋整?

  32. 2014年6月13日21:32 | #43

    php-fpm 最后安装的时候,报错。
    make:***没有规则可以创建目标“all”,停止。

  33. 2014年6月10日11:34 | #44

    我用虚拟机安装好,一切正常,主机上:telnet 192.168.59.128 80不能访问,就是不能用主机通过ip访问,然后我搜索了下,解决了,原来是centos有防火墙的原因,要关闭。(1)/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT (2)/etc/init.d/iptables save (3)/etc/init.d/iptables restart

  34. tony
    2014年6月7日22:19 | #46

    已通过rpm安装zlib 和pcre, 还需要指定--with-pcre= --with-zlib=吗,如需要如何定义呢

    • 2014年6月7日22:30 | #47

      如果安装的没问题,可以不用指定路径

      • tony
        2014年6月7日22:42 | #48

        多谢,楼主好人呀,能加你Q吗,方便交流请教,My Q378064127

  35. s
    2014年6月2日10:29 | #49

    sss

  36. 2014年4月16日15:34 | #50

    我安装失败了,
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

  37. 2014年4月8日17:50 | #53

    rrrrrrrrrr

  38. 2014年3月6日12:03 | #54

    写有用的东西,要比高深的东西更令人喜欢呀~!

  39. 2014年2月26日16:00 | #55

    晚上也试试

  40. 2014年2月24日17:25 | #56

    当初 v 你好宿舍当成 v

  41. 2014年2月17日17:58 | #57

    这个没有sbin 如何查看配置文件是否对啊

    • 2014年2月19日10:26 | #58

      进入安装目录,找到可行性文件nginx ,执行./nginx -t

  42. xinda
    2014年1月16日13:08 | #59

    很不错的安装教程
    不过,有个建议,就是configure中的 *-path这些参数还是用默认值会比较好,这样安装后的目录更清晰
    要不然配置文件、启动脚本都在同一目录,很乱,不利于维护

    • 2014年1月16日17:34 | #60

      如果想用默认的路径,把*-path删掉就好了,放在一起考虑的是升级,删除方便。

      • 2014年7月25日10:59 | #61

        楼主,能够加下qq吗?方便咨询问题,谢谢!
        QQ:522480647

  43. 余芦煌
    2013年12月21日13:03 | #62

    谢谢

  44. 2013年11月19日14:40 | #63

    好,很好,写的很详细的nginx启动步骤。

  45. 2013年11月17日13:34 | #64

    --with-pcre=/usr/src/pcre-8.21 指的是pcre-8.21 的源码路径。
    --with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。
    这里折腾我很久

  46. anne
    2013年11月13日19:54 | #67

    楼主真好人 资料好全 感谢!!!

  47. 2013年11月12日15:03 | #68

    这是我见到写得最好的了

  48. 阿f
    2013年11月7日09:20 | #69

    网页无法显示图片,403错误

  49. yelin
    2013年11月2日16:40 | #72

    不错

  50. ryan
    2013年8月9日21:41 | #73

    好稳扎个,呵呵,一目了然

  51. fish
    2013年7月5日11:09 | #74

    安装完成后如何启动啊?

    • bigfish
      2013年10月28日14:36 | #75

      6.启动
      确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx,

  52. 2013年6月19日10:55 | #76

    good

  53. 2013年6月19日10:47 | #77

    good

  54. 2013年6月4日18:43 | #78

    这个安装完后nginx没有指定用户要制定nginx的用户建立这个用户,在下一步安装phpfpm的时候用户会报错

  55. jack20039
    2013年5月21日20:30 | #79

    第四步执行后,(假设例子是正确的)
    继续step 5,
    invalid option: --with-http_ssl_module
    所以把这句抛弃,重新再来:

    gcc: /libz.a: No such file or directory
    make : *** [objs/nginx] Error 1
    make : Leaving directory `/usr/local/src/nginx-1.2.8'
    make: *** [build] Error 2

    • j.a.ck
      2013年5月21日20:30 | #80

      I just don't know why..

      • 2013年5月21日22:33 | #81

        应该是续行符导致的,在zlib-1.2.8后面放了一个空格,这样导致没有去zlib的安装目录去查找libz.a

        • j.a.ck
          2013年5月23日13:51 | #82

          咩哈哈,我没有多个空格,所以我把backslash去掉了,就成功了

      • 2013年5月23日13:08 | #83

        我遇到这情况的,就是选项后面的空格导致。

    • 2013年5月21日22:25 | #85

      你是不是centos 5.3 如果是的话用这个重新congifugre,然后在编译

      ./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=/usr/local/src/pcre-8.21 --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c
      make
      make install

      低版本的centos好像不支持''续航

  56. 2013年5月16日14:54 | #86

  57. 2013年4月28日14:41 | #87

    新手请注意防火墙 添加iptables -I INPUT -p tcp --dport 80 -j ACCEPT

  58. 2013年4月10日21:17 | #89

    我用的8.31也正常安装啊

    • mood
      2013年4月11日11:12 | #90

      是可以,没问题。

  59. Dino
    2013年1月28日07:32 | #91

    请问有nginx+twiki的安装方法吗?网上好要没有这样子的设定

  60. zteye@163.com
    2013年1月23日23:30 | #92

    谁能分享下aix系统安装nginx的宝贵经验啊,我搜遍全网都没有成功安装的案例。

  61. 小刀
    2013年1月10日18:16 | #93

    --with-pcre=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径--笔误

  62. 2012年12月23日19:05 | #95

    呵呵 更新的好快 中午的问题 晚上就更新了

  63. jay61439476
    2012年12月19日11:58 | #97

    centos报错:error: SSL modules require the OpenSSL library. 下载了openssl的代码 加上--with-openssl=/usr/local/src/openssl-1.0.1c 就OK了

  64. 2012年11月2日13:44 | #98

    安装过程中,使用pcre库的最新版本8.31会报错,换用8.21版本正常。测试过nginx-1.2.3 nginx-1.2.4