首页 > 代码库 > Centos7编译安装Nginx

Centos7编译安装Nginx

1:检查pcre是否安装,安装pcre库是为了使Nginx支持具备URL重写的rewrite模块.openssl是nginx使用https服务要用的模块。

rpm -qa|grep -E ‘pcre|pcre-devel‘
# 如果无返回结果,证明pcre包未安装,使用以下命令下载安装
yum install pcre pcre-devel -y
rpm -qa|grep -E ‘openssl|openssl-devel‘
# 如果返回值为空,表示系统尚未安装,安装命令如下
yum install openssl openssl-devel
rpm -qa |grep gcc gcc-c++
# 如果未安装gcc,则编译过程中会出现./configure: error: C compiler cc is not found错误
yum install gcc gcc-c++

2:安装nginx1-11-11

wget -q -P /tmp/ 
# 将nginx指定下载到当前目录下,-q表示断电断续
tar -zxvf /tmp/nginx-1.11.11.tar.gz -C /usr/local/src/
# 将软件固定存放在/usr/local/src/下
useradd nginx -s /sbin/nologin -M
cd /usr/local/src/nginx-1.11.11
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.11.11/ --with-http_stub_status_module --with-http_ssl_module
# 编译参数说明:
# --prefix=PATH                                         # 设置安装路径
# --user=user --group=group                             # 设置运行nginx的用户和用户组
# --with-http_stub_status_module                        # 激活状态信息
# --with-http_ssl_module                                # 激活ssl功能
# Nginx的大部分模块功能都会编译到软件中,不需要单独指定编译参数                   
echo $?
make && make install
echo $?
ln -s /usr/local/nginx-1.11.11 /usr/local/nginx
# 设立一条软连接,好处是程序中如果有引用nginx路径的地方,不需要修改程序,如果升级nginx版本
直接重新做一条连接即可

3:启动并检查安装结果

[root@C-A nginx-1.11.11]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.11.11//conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.11.11//conf/nginx.conf test is successful
# 在启动之前检查语法非常重要,可防止因配置错误导致网站重启或重新加载配置等对用户的影响。
[root@C-A nginx-1.11.11]# /usr/local/nginx/sbin/nginx
# 启动nginx服务
[root@C-A nginx-1.11.11]# lsof -i :80
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   18360  root    6u  IPv4  45635      0t0  TCP *:http (LISTEN)
nginx   18361 nginx    6u  IPv4  45635      0t0  TCP *:http (LISTEN)
[root@C-A nginx-1.11.11]# netstat -lnp|grep 80

4:Nginx启动的疑难杂症汇总

问题1:启动Nginx时有如下报错“nginx:[emerg] getpwnam("nginx")failed".

解答:这是因为没有对应的Nginx服务用户,执行useradd -s /sbin/nologin -M创建nginx用户即可。

[root@C-A nginx-1.11.11]# pkill nginx
[root@C-A nginx-1.11.11]# lsof -i :80
[root@C-A nginx-1.11.11]# userdel nginx
[root@C-A nginx-1.11.11]# lsof -i :80
[root@C-A nginx-1.11.11]# /usr/local/nginx/sbin/nginx
nginx: [emerg] getpwnam("nginx") failed
[root@C-A nginx-1.11.11]# useradd -s /sbin/nologin -M nginx
正在创建信箱文件: 文件已存在
[root@C-A nginx-1.11.11]# /usr/local/nginx/sbin/nginx
[root@C-A nginx-1.11.11]# lsof -i :80
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   22812  root    6u  IPv4  54655      0t0  TCP *:http (LISTEN)
nginx   22813 nginx    6u  IPv4  54655      0t0  TCP *:http (LISTEN)
[root@C-A nginx-1.11.11]#

问题2:如何查看编译安装nginx时的参数

解答:可采用如下命令

[root@C-A nginx-1.11.11]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.11.11
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/local/nginx-1.11.11/ --with-http_stub_status_module --with-http_ssl_module

问题3:curl,浏览器等无法访问Nginx页面

解答:此类问题排查思路分在服务端和客户端,服务端可排查防火墙是否放行nginx端口。进程是否存在,进程启动的是否是80端口。客户端可排查是否Ping通服务器,telnet检查是否可连服务端80端口。

本文出自 “搁浅丶” 博客,请务必保留此出处http://yasar.blog.51cto.com/9120455/1909681

Centos7编译安装Nginx