Hello World !
是一种心态,也是一种格局。力透纸背,写小白看得懂的技术文章!
一、准备工作
1、Linux系统服务器,例如这里使用的系统是CentOS7.7
2、SSH连接工具,用于远程连接Linux服务器,推荐使用SecureCRT
3、Nginx安装文件,这里安装的版本为nginx-1.17.5
,官网下载地址:http://nginx.org/download/nginx-1.17.5.tar.gz
4、下载后的Nginx安装文件nginx-1.17.5.tar.gz
,通过SecureCRT
中的文件上传工具SecureFX
上传到Linux服务器(在Linux服务器上也可以直接使用wget http://nginx.org/download/nginx-1.17.5.tar.gz
下载)
二、编译安装
1、解压Nginx安装包nginx-1.17.5.tar.gz
到/usr/local/src/
目录,解压出来的目录为nginx-1.17.5
[root@localhost ~]# ll
total 692696
-rw-------. 1 root root 1430 Oct 22 11:05 anaconda-ks.cfg
-rw-r--r--. 1 root root 10267082 Oct 27 16:29 apache-tomcat-8.5.47.tar.gz
-rw-r--r--. 1 root root 194151339 Oct 27 12:39 jdk-8u231-linux-x64.tar.gz
-rw-r--r--. 1 root root 503854832 Oct 27 19:19 mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
-rw-r--r--. 1 root root 1036056 Oct 27 16:35 nginx-1.17.5.tar.gz
[root@localhost ~]# tar -zxvf nginx-1.17.5.tar.gz -C /usr/local/src/
2、编译准备
进入解压后的安装文件目录/usr/local/src/nginx-1.17.5/
,执行./configure
命令。这一步用来生成 Makefile
,为下一步的编译做准备,可以通过在./configure
后加参数来对安装进行控制,比如./configure --prefix=/usr/
意思是将该软件安装在 /usr/
目录下,不指定时默认的安装目录为/usr/local/
(这里我们安装在默认的安装目录下)。
[root@localhost src]# cd nginx-1.17.5/
[root@localhost nginx-1.17.5]# ll
total 760
drwxr-xr-x. 6 1001 1001 4096 Nov 7 11:04 auto
-rw-r--r--. 1 1001 1001 300262 Oct 22 23:16 CHANGES
-rw-r--r--. 1 1001 1001 458263 Oct 22 23:16 CHANGES.ru
drwxr-xr-x. 2 1001 1001 168 Nov 7 11:04 conf
-rwxr-xr-x. 1 1001 1001 2502 Oct 22 23:16 configure
drwxr-xr-x. 4 1001 1001 72 Nov 7 11:04 contrib
drwxr-xr-x. 2 1001 1001 40 Nov 7 11:04 html
-rw-r--r--. 1 1001 1001 1397 Oct 22 23:16 LICENSE
drwxr-xr-x. 2 1001 1001 21 Nov 7 11:04 man
-rw-r--r--. 1 1001 1001 49 Oct 22 23:16 README
drwxr-xr-x. 9 1001 1001 91 Nov 7 11:04 src
[root@localhost nginx-1.17.5]# ./configure
./configure
编译选项如下:
–prefix= Nginx安装路径。如果没有指定,默认为 /usr/local/nginx
–sbin-path= Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为 /sbin/nginx
–conf-path= 在没有给定`–c`选项下默认的`nginx.conf`的路径。如果没有指定,默认为 /conf/nginx.conf
–pid-path= 在nginx.conf中没有指定pid指令的情况下,默认的Nginx.pid的路径。如果没有指定,默认为 /logs/nginx.pid
如果报错(Error),一般是因为CC
或GCC
环境不具备。首次编译安装需先安装编译环境,CentOS7下使用yum -y install
进行安装
[root@localhost src]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
模块依赖:Nginx的一些模块需要其他第三方库的支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等,这里一并安装
安装好GCC
环境后重新执行./configure
预编译,编译成功提示如下:
预编译成功在目录中会出现Makefile文件:
3、编译安装
使用make
命令编译、make install
命令安装(make uninstall
是卸载):
[root@localhost nginx-1.17.5]# make
[root@localhost nginx-1.17.5]# make install
安装后的目标目录为/usr/local/nginx
,包含conf
配置文件目录、html
静态页面目录、logs
日志文件存放目录、sbin
可执行文件所在目录,四个子目录。
[root@localhost src]# cd /usr/local/nginx/
[root@localhost nginx]# ll
total 4
drwxr-xr-x. 2 root root 4096 Nov 6 09:32 conf
drwxr-xr-x. 2 root root 40 Nov 2 10:11 html
drwxr-xr-x. 2 root root 58 Nov 6 09:04 logs
drwxr-xr-x. 2 root root 19 Nov 2 10:11 sbin
三、启动运行
运行/usr/local/nginx/sbin
目录下的nginx
文件即可开启Nginx。
[root@localhost nginx]# cd sbin/
[root@localhost sbin]# ll
total 3748
-rwxr-xr-x. 1 root root 3835368 Nov 2 10:11 nginx
[root@localhost sbin]# ./nginx
使用ps -ef|grep nginx
命令查看Nginx进程(master process
代表主进程,worker process
代表工作进程):
[root@localhost sbin]# ps -ef|grep nginx
root 3911 1 0 15:38 ? 00:00:00 nginx: master process ./nginx
bobo 3912 3911 19 15:38 ? 00:00:01 nginx: worker process
bobo 3913 3911 19 15:38 ? 00:00:01 nginx: worker process
bobo 3914 3911 20 15:38 ? 00:00:01 nginx: worker process
bobo 3915 3911 20 15:38 ? 00:00:01 nginx: worker process
root 3918 1588 0 15:38 pts/0 00:00:00 grep --color=auto nginx
Nginx默认监听80端口,使用lsof -i:80
查看80端口监听情况(可使用yum -y install lsof
安装lsof
工具):
[root@localhost sbin]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3911 root 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3912 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3913 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3914 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3915 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
浏览器打开http://192.168.2.128/
(你的地址)访问Nginx页面:
如果不能正常访问服务,可尝试关闭防火墙:
systemctl stop firewalld.service
四、配置环境变量
为了后续方便操作Nginx,可将/usr/local/nginx/sbin/nginx
可执行文件所在目录添加到系统环境变量中,添加后可在任意目录执行nginx
命令。
1、编辑/etc/profile
系统配置文件
[root@localhost sbin]# vi /etc/profile
2、在配置文件/etc/profile
末尾添加如下内容(vi命令:使用上下左右键移动光标到目标位置,按i
键进入输入模式编辑内容,按Esc
键退回到命令模式,按:wq
保存并退出)
export NGX_HOME=/usr/local/nginx
export NGX_PATH=${NGX_HOME}/sbin
export PATH=$PATH:${JAVA_PATH}:${NGX_PATH}
注意:export PATH=
多个环境变量之间使用:
(冒号)分割,变量使用${}
表示。
3、使用source
命令让配置生效
[root@localhost sbin]# source /etc/profile
五、常用命令
1、Nginx常用命令(配置了环境变量之后可在任意目录执行nginx
命令)
启动命令(默认使用
/usr/local/nginx/conf/nginx.conf
配置文件):
/usr/loacl/nginx/sbin/nginx
指定配置文件启动:
nginx -c /usr/local/nginx/conf/nginx.conf
测试当前Nginx配置文件是否正确:
nginx -t
测试指定的Nginx配置文件是否正确:
nginx -t -c /usr/local/nginx/conf/nginx.conf
修改配置后重新加载生效:
nginx -s reload
当新的配置文件测试通过后,通过nginx -s reload
命令加载修改后的配置文件,命令下达后:
a. Nginx的master
进程检查配置文件的正确性,若是错误则返回错误信息,Nginx继续采用原配置文件进行工作(因为worker
进程未受到影响);
b. Nginx启动新的worker
进程,采用新的配置文件;
c. Nginx将新的请求分配新的worker
进程;
d. Nginx等待以前的worker
进程的全部请求响应完毕,关闭相关worker
进程;
e. 重复上面过程,直到全部旧的worker
进程都被关闭掉。
重新加载日志文件:
nginx -s reopen
开启日志后(例如access.log
),日志文件中存放着所有的访问记录,时间长了文件会越积越大。必要时需要做日志切割(由于Linux系统文件句柄的特点,当文件被打开的情况下使用mv
移动文件,原来操作这个文件的进程还是有该文件的inode信息,会继续读写原来的文件,因此在不关闭进程的情况下简单的mv
是无法切割文件的)
Nginx文件切割过程如下:
a. mv
当前日志文件到其他目录,这个时候Nginx继续写原来的文件(写入到新位置文件中);
b. 使用nginx -s reopen
命令生成日志文件,这时Nginx会把新产生的日志信息写到新生成的日志文件中。
这样就完成了日志的切割工作,同时切割过程中没有日志的丢失。
快速停止Nginx:
nginx -s stop
优雅的停止Nginx:
nginx -s quit
下一篇,我们深入探索Nginx配置文件,完成:1、反向代理;2、热备;3、负载均衡(轮询、权重、IP_HASH)4、缓存;5、静态资源访问等的配置。