实验环境
CentOS 1804
Nginx 1.14.1 stable version
Nginx安装以及配置
Nginx目录结构
下载Nginx解压后目录结构如下
[root@localhost ~]# wget http://nginx.org/download/nginx-1.14.1.tar.gz [root@localhost ~]# tar zxf nginx-1.14.1.tar.gz [root@localhost nginx-1.14.1]# ll total 728 drwxr-xr-x. 6 1001 1001 4096 Nov 20 15:31 auto -rw-r--r--. 1 1001 1001 287441 Nov 6 21:52 CHANGES -rw-r--r--. 1 1001 1001 438114 Nov 6 21:52 CHANGES.ru drwxr-xr-x. 2 1001 1001 168 Nov 20 15:31 conf -rwxr-xr-x. 1 1001 1001 2502 Nov 6 21:52 configure drwxr-xr-x. 4 1001 1001 72 Nov 20 15:31 contrib drwxr-xr-x. 2 1001 1001 40 Nov 20 15:31 html -rw-r--r--. 1 1001 1001 1397 Nov 6 21:52 LICENSE drwxr-xr-x. 2 1001 1001 21 Nov 20 15:31 man -rw-r--r--. 1 1001 1001 49 Nov 6 21:52 README drwxr-xr-x. 9 1001 1001 91 Nov 20 15:31 src
- src目录:存放Nginx源码
- man目录:存放Nginx帮助手册
- html目录:存放默认网站文件
- contrib目录:存放其他机构或组织贡献的代码
- conf目录:存放Nginx服务器的配置文件
- auto目录:存放大量的脚本文件,和configure脚本程序相关
- configure文件:Nginx自动安装脚本,用于检查环境,生成编译代码需要的makefile文件
- CHANGES、CHANGES.ru、LICENSE和README都是Nginx服务器的相关文档资料。
Nginx安装依赖
Nginx中的功能是模块化的,而模块有依赖于一些软件包(如pcre库、zlib库、openssl库),因此需要先安装依赖库
yum -y install pcre-devel zlib-devel openssl-devel
Linux中的某些软件包具有devel包和非devel包两种形式,如lib和lib-devel。那么两者有什么区别呢?
非devel包就是普通的软件包,而devel包则一般会包括头文件、静态库甚至源码。若仅仅使用这些软件,则仅安装非devel包即可,但若在开发时需要用到这些软件包中的共享库,就需要安装devel包。
通常在使用yum-yinstall安装devel包时,服务器会自动先安装非devel包,然后再安装devel包。因此,当同时需要使用两种包时,可以在yum命令中省略非devel包的书写。
Nginx编译安装
配置编译选项
[root@localhost nginx-1.14.1]# ./configure > --prefix=/usr/local/nginx > --with-http_ssl_module
上述命令等价于,表示当前命令没有结束需要换到下一行书写,直到没有时结束。
./configure --prefix=/usr/local/nginx --with-http_ssl_module
--prefix设置Nginx的安装目录
--with-http_ssl_module设置在Nginx中允许使用http_ssl_module模块的相关功能。
Nginx中还有许多其他模块,后面如果先添加某些模块,再重现编译Nginx并使用--with-选项添加模块即可。
编译及安装
make && make install
&&用于连接2个命令,根据左边命令的返回值决定是否执行后面的命令。只有前面的命令执行成功后面的命令才会执行。
启动Nginx
/usr/local/nginx/sbin/nginx
[root@localhost ~]# ps aux | grep nginx root 1371 0.0 0.0 45924 1124 ? Ss 19:02 0:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 1372 0.0 0.0 46372 1892 ? S 19:02 0:00 nginx: worker process root 1374 0.0 0.0 112704 968 pts/0 S+ 19:02 0:00 grep --color=auto nginx
Nginx启动后会生成一个主进程(master process)和 工作进程(worker process)。主进程以root用户运行,工作进程以nobody用户运行。
Nginx启动后会占用默认端口号80,如果80端口号已被占用,Nginx则会启动失败
[root@localhost ~]# netstat -tlnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1371/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1022/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1179/master tcp6 0 0 :::22 :::* LISTEN 1022/sshd tcp6 0 0 ::1:25 :::* LISTEN 1179/master
tlnp分别表示查看tcp协议,查看监听服务,不解析名称,显示进程名称和PID
设置防火墙
默认启动Nginx后,防火墙是阻止80端口的。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
此时访问Nginx服务器