CentOS 下安装 nginx

国内CentOS用的比较多,大部份都是在CentOS下安装。
使用的 nginx 版本nginx-1.15.10.tar.gz

官网上有三种版本:Mainline version、Stable version、Legacy versions
网上推荐用 Stable 稳定版

安装依赖

前提是已安装了主要三个依赖包: pcre、openssl、zlib

如果没有安装,使用下面的命令装一遍

1
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装依赖

安装 nginx

先到官网上下选择自己需要的版本

官网

我通常直接在这个页面选择下载 http://nginx.org/download/ ,这上面全是,找一个合适 wget 一下。

下载列表

./configure --prefix=/usr/local/nginx 加不加前缀都在这个目录下

1
2
3
4
5
wget http://nginx.org/download/nginx-1.15.10.tar.gz  
tar -zxvf nginx-1.15.10.tar.gz
cd nginx-1.15.10/
./configure
make & make install

执行 ./configure 后已经有提示路径了:

config

你也可以在预编译阶段直接指定用户、安装目录等

1
2
3
4
5
./configure
-user=www #添加一个用户
-group=www #添加一个用户组
-prefix=/usr/local/nginx #文件生成目录
--with-http_ssl_model #添加 ssl 模块

安装成功后主目录:

/usr/local/nginx/

如果不知道目录在哪里,可以通过whereis 命令来定位nginx命令所以位置,也就是nginx的安装目录。

添加 nginx 用户

添加这个用户主要是用应用账户隔离,每一个应用通过用户来控制它的权限,这样也是为了安全考虑。

1
useradd nginx

启停服务

niginx 的安装目下有4个目录分别是:

/usr/local/nginx/sbin
/usr/local/nginx/conf
/usr/local/nginx/html

sbin 目录

存放niginx命令,也是nginx的主要操作命令

启动

启动可以直接使用nginx命令,这种方式使用默认配置文件启动
默认配置文件路径:/usr/local/nginx/conf/nginx.conf

1
/usr/local/nginx/sbin/nginx

或者下面这个命令,效果一样,看个人习惯。

1
2
cd /usr/local/nginx/sbin
./nginx

指定配置文件启动,参数: -c

1
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

测试启动,参数:-t 测试
如果测试问题会报错

1
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

进程验证

启动后,怎么看成功没成功,直接访问一下?生成环境下很多是没有开外网访问的。直接访问肯定不行。
内网访问?云主机的内网浏览器访问不到。

1.直接查进程

1
ps -ef | grep nginx

结果

root 17014 1 0 18:16 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
root 17162 14260 0 19:22 pts/0 00:00:00 grep nginx

2.查端口

默认使用80端口,直接看下80端口是不是LISTEN状态。

1
netstat -na | grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

1
netstat -ntlp

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17014/nginx

查看日志,也果没有 ERROR 就是启动成功了

1
tail logs/error.log

重启

参数:-s

-s 代表向主线程发送信号,有4种信号:stop、quit、reopen、reload
这个参数也做到平滑重启,如果当前有用户连接,不断开用户连接。会再开线程处理

1
/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf

1
/usr/local/nginx/sbin/nginx -s reload

停止

web服务器,不是web服务,基本上不需要持久化,直接杀死线程就可以。

1
ps -ef | grep nginx

从容停止 kill -QUIT 主进程号
快速停止 kill -TERM 主进程号
强制停止 kill -9 nginx

不知道区别在哪