WEB应用

菜鸟教程:Ngnix安装详解

Jager · 5月23日 · 2014年 · 4588次已读

今天,不知道写什么,就找来一篇很详细的 Nginx 安装教程,“滥竽充数”了,另外后面附上马哥关于 nginx 讲解的核心视频教程。

Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:新浪网易、 腾讯等。

下面文字部分来自http://www.nginx.cn/install

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

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

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

apt-get install build-essential
apt-get install libtool

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

安装 make:

yum -y install gcc automake autoconf libtool make

安装 g++:

yum install gcc gcc-c++

下面正式开始

---------------------------------------------------------------------------
一般我们都需要先装 pcre, zlib,前者为了重写 rewrite,后者为了 gzip 压缩。

1.选定源码目录
可以是任何目录,本文选定的是/usr/local/src

cd /usr/local/src

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

cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz 
tar -zxvf pcre-8.34.tar.gz
cd pcre-8.34
./configure
make
make install

3.安装 zlib 库

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

cd /usr/local/src
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install

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

cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz

5.安装 nginx

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

cd /usr/local/src
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.34 \
--with-zlib=/usr/local/src/zlib-1.2.8 \
--with-openssl=/usr/local/src/openssl-1.0.1c
make
make install

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

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

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

netstat -ano|grep 80

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

sudo /usr/local/nginx/nginx

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

菜鸟教程:Ngnix安装详解

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

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

下面安装排错

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

1.1 编译 pcre 错误

libtool: compile: unrecognized option `-DHAVE_CONFIG_H'
libtool: compile: Try `libtool --help' for more information.
make[1]: *** [pcrecpp.lo] Error 1
make[1]: Leaving directory `/usr/local/src/pcre-8.34'
make: *** [all] Error 2

菜鸟教程:Ngnix安装详解

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

apt-get install g++
apt-get install build-essential
make clean
./configure
make

1.2 make 出错

make: *** No rule to make target `build', needed by `default'.  Stop.
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl= option.

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

apt-get install openssl
apt-get install libssl-dev

centos 下

yum -y install openssl openssl-devel

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".

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

./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=../pcre-4.4
    --with-zlib=../zlib-1.1.3
9 条回应
  1. 龙三公子 2014-5-23 · 22:20

    马哥是?知道有个鸟哥。

    • avatar
      Jager 2014-5-23 · 22:21

      鸟哥出书,马哥出视频~~哈哈

      • 龙三公子 2014-5-23 · 22:38

        鸟哥的私房菜不错。我当时学习时参考过。马哥还真不知道。

  2. leiboy 2014-5-23 · 23:23

    其实nginx都是和php,mysql相伴相生的,博主应该出个lnmp配置或者lamp配置的教程

    • avatar
      Jager 2014-5-23 · 23:25

      那个都有一键安装包了,安装基本不费事,回头整理一个故障集合教程吧。

      • leiboy 2014-5-23 · 23:38

        嗯,这个还是很有必要的,不过很多人有洁癖,不喜欢别人做好的集成包

  3. 路人V 2014-5-24 · 12:00

    我用的就是lnmp一键安装包

  4. 李沁峰 2016-8-21 · 21:22

    我已经用yum安装了pcre和zlib这个两个库,默认安装的路径没能找到。
    请问一下,这两行代码可以不写吗?
    --with-pcre=/usr/local/src/pcre-8.34 \
    --with-zlib=/usr/local/src/zlib-1.2.8 \

    • avatar
      Jager 2016-8-21 · 23:44

      可以