1:检查pcre是否安装,安装pcre库是为了使Nginx支持具备URL重写的rewrite模块.openssl是nginx使用https服务要用的模块。
1
2
3
4
5
6
7
8
9
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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:启动并检查安装结果
1
2
3
4
5
6
7
8
9
10
11
|
[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用户即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[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时的参数
解答:可采用如下命令
1
2
3
4
5
6
|
[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端口。
本文转自 运维小学生 51CTO博客,原文链接:http://blog.51cto.com/yasar/1909681,如需转载请自行联系原作者