文章目录
nginx四个发行版本呢简单介绍
常用版本分为四大阵营
- Nginx开源版
- http://nginx.org/
- Nginx plus 商业版
- https://www.nginx.com
- Openresty
- http://openresty.org
- Tengine
- http://tengine.taobao.org/
第一章 安装
上传安装包
将nginx的安装包放入/root目录下
解压tar.gz包
tar zxvf nginx-1.21.6.tar.gz
编译
cd nginx-1.21.6
ls
./configure
发现编译会报c编译器gcc没有发现
checking for OS
+ Linux 3.10.0-693.el7.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found
这时候需要安装c语言的编译器gcc
yum install -y gcc
继续编译
./configure --prefix=/usr/local/nginx //编译并将安装目录设置在/usr/local/nginx
会发现报错,需要安装perl库
yum install -y pcre pcre-devel
在进行编译
./configure --prefix=/usr/local/nginx //--prefix指定安装目录
发现又报错
需要安装zlib库
yum install -y zlib zlib-devel
再进行重新编译
./configure --prefix=/usr/local/nginx
发现编译成功了
安装
make
make install
看下nginx安装目录是否在我们设置的/usr/local目录下
发现是有的
启动
进入安装好的目录 /usr/local/nginx/sbin
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
在宿主机上打开浏览器访问虚拟机ip
http://虚拟机ip,发现无法访问此网站
是因为cenos7虚拟机的防火墙没有开放80端口
可以设置防火墙放开80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
也可以关闭防火墙
systemctl stop firewalld.service
如果是设置防火墙放开80端口,就需要重启防火墙,但如果是关闭防火墙,这步就不需要做了
firewall-cmd --reload
在访问虚拟机ip,会发现访问nginx成功了
关于防火墙
关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机启动
systemctl disable firewalld.service
放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
安装成系统服务
安装成系统服务
vi /usr/lib/systemd/system/nginx.service
服务脚本内容
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载系统服务
systemctl daemon-reload
启动服务
启动前需要看下nginx是否开启着,如果开启着需要关闭下nginx,可以使用ps -ef | grep nginx
查看下nginx的进程是否开启着
进行nginx关闭服务
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
systemctl start nginx.service
可以通过以下命令来查看nginx是或否启动着
systemctl status nginx.service
开机启动
systemctl enable nginx.service
测试nginx是否可以访问了
在浏览器中访问:虚拟机ip
目录结构
进入Nginx的主目录我们可以看到这些文件夹
其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件
client_body_temp fastcgi_temp proxy_temp scgi_temp uwsgi_temp
conf
用来存放配置文件相关
主要放着nginx的相关配置文件,nginx的主配置文件其实就一个,就是nginx.cof,这个nginx.conf文件里面会引用其他的配置文件,比如说mine.types
html
用来存放静态文件的默认目录 html、css等
默认情况下,存放我们的页面和静态资源
当在浏览器访问:http://192.168.133.110/访问站点时,他给我们显示出来的界面它是对应的是这html目录下的index.html文件。
在nginx里,index是默认页的默认配置,在访问该站点的时候,我没有具体指向访问哪个页面,如果当前html目录下,有个index.html文件,他就会加载这个默认的页面即index.html给我们展示出来,这是默认页。
看index.html文件代码,会发现跟访问http://192.168.133.110/展示出来的界面是一样的。
当然,默认页和默认页的目录是可以配置的
这个html目录下只能放一个站点,所以这个配置一般来说,都会改,会在后续的课程中讲到。
logs
用于记录日志
- access.log 用于记录访问日志,就是用户访问我们系统时,在nginx这里面,它会记录用户的访问时间,访问请求的具体文件以及有没有附加的参数等等都会把它记录下来在access.log。记录用户访问系统的时间,请求的地址的文件以及附加的参数等等,每个人访问的每一次都会记录在里面,可想而知,这个日志文件后续可能会比较大,现在是刚启动nginx,所以只有979bytes大小,虽然access.log比较大,但是不影响太多nginx性能。但一定要注意磁盘要控制好,不能让access.log无限的扩增,在配置文件里也会限制access.log的大小,当记录到一定大小后,就会往另外一个文件里去记录,当我们磁盘满了之后,可能会写不进来了,一旦写不进来,我们服务器可能会出现一些莫名其妙的问题
- error.log 就跟access.log不一样,它就比较小一些,就访问出错,当系统出现错误的时候,它会把用户请求的错误包括404记录到error.log里面
- nginx.pid文件主要是用来记录nginx主进程的id号,可以进行打开看下
通过ps命令我们可以看到当前nginx的进程id是994,如果我们想终止这个进程,可以使用kill命令 kill 994
sbin
就一个文件,就是nginx的主进程文件
修改默认页
对/usr/local/html目录下的index.html文件进行修改,即是修改默认页
基本运行原理
左边用户在访问我们系统的时候,nginx主目录下有个/sbin/nginx可执行文件,在这个可执行文件跑起来之后,它会发生以下几个动作,首先它会开启Master的主进程,注意,这是进程,这个主进程里边会把这个配置文件读取出来,然后把这个配置文件做一次校验,看下这个配置文件究竟有没有错误,没有错误的话,它会开启这个它的子进程,子进程开启之后,就真正运行在我们服务器当中多个进程当中其中之一,也就是它运行的时候,会分为两种进程,一个是这个主进程,一个是子进程,主进程叫Master,子进程叫Worker,我们刚刚通过ps命令也能看到,我们启动好的nginx,它不止是只有一个进程在的,通过图片看,这个nginx里面有个master还有个worker,master是主进程,主进程它是不处理业务,它去协调这些子进程worker进程。在启动nginx之后,主进程和子进程全部启动完成之后,接下来就会等待用户的请求接入进来,用户请求接入到我们系统当中,会由worker进程来响应并解析的。它流程是这样的,这个worker已经获取到这个配置文件(即/conf/nginx.conf),也就是说它知道用户请求我能不能完成,比如说用户请求的位置,它这个目录,或者说它这个文件,我能不能找的着,用户请求打过来,worker会接收并解析这个请求,解析请求会发现用户想要的是/index.html,worker子进程会读取配置文件(conf/nginx.conf)这配置文件里就写了主目录站点在哪里,或者说它有几个站点,当前我们只有一个站点