从源码编译安装nginx
从Nginx官网下载源码,并解压
其中,configure
为可执行文件,是编译安装前的预备执行文件
1 | # 设定Nginx的安装目录,并生成make文件 |
关于configure
的具体参数,官网有给出详细文档
如果执行make
时出现错误make: *** No rule to make target 'build', needed by 'default'. Stop.
,则是因为缺少依赖。安装以下依赖后重新生成Makefile
安装完成后,Nginx的二进制文件在./sbin/
目录下
1 | # 查看Nginx版本 |
Nginx启动时,可能会报错nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
这是因为Nginx默认端口号是80,在Linux里,低于1024的端口(0~1024)被视为特权端口,只有root用户才被允许使用。所以以普通用户身份启动Nginx时,Nginx会尝试在80端口开启Web服务,但由于用户权限不够,出现Permission denied
所以,可以将nginx监听的80端口改成1024以上的端口
1 | server { |
即可通过localhost:8080
访问Nginx页面
但这个方法访问的URL必须使用端口号,不太方便。根据问题的原因,还有一种解决方法就是用root权限启动Nginx服务。但当我使用sudo ./nginx
时,虽然Nginx服务启动了,用浏览器访问Nginx页面,却显示403 Forbidden,原因不明,只能另寻方法,赋予Nginx执行文件CAP_NET_BIND_SERVICE权限
1 | # 后接路径为Nginx二进制文件路径 |
GCC——GNU编译器集合
GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管理器有不同的实现:yum是基于Red Hat的发布版本;apt用于Debian和Ubuntu
RedHat中安装GCC:yum install gcc
Ubuntu中安装GCC:apt-get install gcc
PCRE库
Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码,这正是我们需要的理由
RedHat中安装PCRE:yum install pcre pcre-devel
Ubuntu中安装PCRE:apt-get install libpcre3 libpcre3-dev
zlib库
zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel
RedHat中安装zlib:yum install zlib zlib-devel
Ubuntu中安装zlib:apt-get install zlib1g zlib1g-dev
OpenSSL库
在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)
RedHat中安装OpenSSL:yum install openssl openssl-devel
Ubuntu中安装OpenSSL:apt-get install openssl openssl-dev
(注:Ubuntu14.04的仓库中没有发现openssl-dev)