暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CentOS Nginx安装和部署简单站点

爱婷如命一生一世 2017-10-24
359

上回已经把Nginx安装前的一些先决条件准备完毕今天开始分享的Nginx的安装部署的知识点:

切换到Nginx的存储路径中去,上回已经将该文件上传到系统之中去了。

[root@Centos-6 ~]# cd /home/fengxin/



安装Nginx


①解压Nginx软件

[root@Centos-6 fengxin]# tar xf nginx-1.6.2.tar.gz 

并且切换到Nginx目录之中去: cd nginx-1.6.2

②创建一个指定用户:

[root@Centos-6 nginx-1.6.2]# useradd nginx -s/sbin/nologin -M

这里为什么要创建一个用户呢?在linux中文件和进程都是需要用户来支持的

这里我建立一个用户为Nginx并且不建立家目录:

③编译安装Nginx:三部曲

我可以通过 来了解Nginx的编译的一些参数:

[root@Centos-6 nginx-1.6.2]# ./configure --help

Nginx编译安装时核心的一些功能都会默认的安装进去,不需要人为的去指定某些功能。

编译参数如下:

./configure \

--user=nginx \

--group=nginx \

--prefix=/application/nginx1.6.2  \        指定的安装,此路径可不存在,应该是自                                                             动生成的。

--with-http_stub_status_module \        状态模块。

--with-http_ssl_module                        open-ssl模块。



看编译是否安装成功一个是看在输出过程中是否有报错的提示,二一个就是

[root@Centos-6 nginx-1.6.2]# echo $?

0

只要是返回0就是正常!


这里安装是没有任何问题的,就可以用:

[root@Centos-6 nginx-1.6.2]# make 

检查make是否正常。


最后三部曲的make install:

[root@Centos-6 nginx-1.6.2]# make install

同样严谨的进行一步步检查是否成功:


④退到上级目录,去版本号制作一个软连接:

[root@Centos-6 nginx-1.6.2]# cd ../

[root@Centos-6 fengxin]# ln -s /application/nginx1.6.2/ /application/nginx

并且查看软链后的结果:

[root@Centos-6 fengxin]# ll /application/nginx/


到此为止Nginx安装就完毕了,是不是比Apache安装要简单一些!




启动Nginx

启动前和Apache一样都是需要进行检查语法的:

[root@Centos-6 fengxin]# /application/nginx/sbin/nginx -t


确保语法正确后,正式启动Nginx:

[root@Centos-6 fengxin]# /application/nginx/sbin/nginx

启动的时候并不像Apache那样后面接一个启动start的命令参数。


查看服务端口是否正常开启:

[root@Centos-6 fengxin]# netstat -lntup|grep nginx


也可以通过端口反向查询Nginx服务:

[root@Centos-6 fengxin]# lsof -i :80


客户端验证Nginx是否部署成功


在客户端上的浏览器上输入相应的服务器IP地址:





如果在客户端上没有显示成功的话,排故的思想如下:一个运维高手的重心往往都是在排故方面的侧重点高于部署方面!

①在系统本地:[root@Centos-6 fengxin]# curl 192.168.8.189

证明本地系统的web服务是正常的。


②查看selinux的状态是否开启:如果是enabled就是证明该防卫服务开启。

关闭selinux的技术文档链接:

https://jingyan.baidu.com/article/6d704a131ba67828da51ca73.html

[root@Centos-6 fengxin]# /usr/sbin/sestatus -v

经查看该服务是开启的,所以我要将此服务关闭

永久关闭:

[root@Centos-6 ~]# vi /etc/sysconfig/selinux 


最后查看该服务状态为关闭状态:

[root@Centos-6 ~]# /usr/sbin/sestatus -v


当然,除了selinux之外,我们还需要关闭linux系统本身的防火墙:

[root@Centos-6 ~]# /etc/init.d/iptables stop

③ping通服务器IP地址后,还需要对该IP的服务端口进行查看,看看客户端浏览器到web服务是否正常!

如果服务正常的话,该端口会提示如下信息:


④最后依靠日志来分析故障的源点:

[root@Centos-6 ~]# cat /application/nginx/logs/error.log


这里面的错误就很明确的提示了我的192.168.8.176这个客户端的请求失败了,可能原因就是防火墙给隔离了。







Nginx部署站点



切到nginx的目录下面,观察他下面的一些配置文件

[root@Centos-6 ~]# cd /application/nginx/

和Apache一样的是,Nginx的主配置文件在conf下面:

但是Nginx没有extra这个文件。extra     指的是额外的apache配置文件目录(由于主配置文件多而长,所以这里产生了一个从配置文件。是被包含的关系),这个目录里的文件我们会经常访问修改

那么Nginx的默认站点目录是什么呢?

它的参数是root  站点是html

[root@Centos-6 conf]# grep html nginx.conf


①进入到默认站点目录之中:

[root@Centos-6 /]# cd /application/nginx/html/

编辑html下的index的目录文件下:

[root@Centos-6 html]# vim index.html 


在这里,我们可以修改它的首页文件达到我想要的结果:

例如,我在这里部分修改文字:


②在客户端浏览器上刷新IP地址后,显示结果如下:你要是点击baidu.com就直接跳转到百度页面了。






Nginx的主配置文件_Nginx.conf的参数


Nginx的配置文件是一个纯文本文件,它位于Nginx安装目录的conf目录下,整个配置文件是以块的形式组织的,每一个块一般以一个‘{}’大括号来表示,其中块可以分为几个层次,整个配置文件中的Main指令位于最高层,在Main层下面可以有Events、HTTP等层级,而在HTTP层中又包含有Server层(server block,server block又可分为location层,并且一个server block 中可以包含多个location block.)


观察下Nginx的主配置源文件:

[root@Centos-6 nginx]# pwd

/application/nginx

[root@Centos-6 nginx]# cd conf/

[root@Centos-6 conf]# vim nginx.conf

在配置文件中,我们可以看到events http location server的模块,并且以{}来表示。Nginx的配置文件中的组织形式无非就是{}里面包含大括号......


这样的配置文件看起来很庞大,我需要用过滤的命令将注释、空格,空行的内容过滤掉并以行号显示:(着需要基础的知识命令)

-n代表显示行号。

[root@Centos-6 conf]# egrep -vn "#|^$" nginx.conf


也可以用cat -n 显示正序排列的行号输出:

[root@Centos-6 conf]# egrep -v "#|^$" nginx.conf|cat -n

这样看起来是不是会很舒服呢?


现在分享一下Nginx的主配置文件的一些参数:

[root@Centos-6 conf]# vi nginx.conf

Nginx的配置文件都是需要用;来结尾的!



Nginx配置文件参数

#user  nobody;  Nginx的默认用户,我部署Nginx的时候已经改为Nginx的用户了;回想一下Apache的默认用户deamon.

worker_processes  1;    这里就是制定有几个worker模式的进程数;这里的进程数建议和服务器配置的CPU核数相当。Nginx的默认进程_worker进程。Nginx的程序的进程模式是一个主进程多个子进程。

我用过滤命令能查看到系统中的Nginx的进程:

[root@Centos-6 conf]# ps -ef|grep nginx|grep -v grep

因此,Nginx主配置文件中的worker_processes  1;   就是控制这些进程的数量,进程多的时候效率就高!请求大的时候,worker进程也就要多一些,作用在于服务这些大量的请求!

错误日志的级别:

#error_log  logs/error.log;    级别为error

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;   Nginx的进程号。

events {

    worker_connections  1024;

}   可以理解为worker的连接数。(Nginx连接请求的最大数量。)


HTTP访问日志的格式:


http {

    include       mime.types;

    default_type  application/octet-stream;


    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';


  #access_log  logs/access.log  main;  访问日志要不要记录。





在实际的企业生产中,Nginx配置文件中修改的最多的参数如下:

 server {

           listen       80;    监听的端口号

 server_name  localhost;      域名

          location / {    根据前面的前面的结果执行后面的内容,URL跳转的意思。

              root   html;

              index  index.html index.htm;

              }

              error_page   500 502 503 504  /50x.html;当网站出现500-504错误时,会给用户一个错误页面的提示而不是错误日志数值,这样页面的用户体验效果会很友好。

              location = /50x.html {   

                 root   html;

           }

          }

     }


这就是涉及到Nginx的虚拟主机,我前文总结过Nginx的一个虚拟主机是由一个server标签构成的。




可以了解下fastcgi.conf文件的内容:

[root@Centos-6 conf]# cat fastcgi.conf

配合动态的时候需要获取一些地址字符串等,通常情况下是不会去修改的。

后续的动态优化会对此文件进行分享。




配置Nginx虚拟主机


基于域名创建Nginx的虚拟主机

①创建域名分别是:

www.fengxin.cn

vip.fengxin.cn

oa.fengxin.cn

②创建虚拟主机站点目录:

[root@Centos-6 html]# pwd

/application/nginx/html

[root@Centos-6 html]# mkdir www

[root@Centos-6 html]# mkdir vip

[root@Centos-6 html]# mkdir oa

然后做一个语句for循环:(如果不会写循环语句,就用echo一个个的向文件中写入特定的语句)

[root@Centos-6 conf]# for n in www vip oa;do echo "$n.fengxin.cn" >../html/$n/index.html;done   

最后还可以看下写正确没:

[root@Centos-6 conf]# for n in www vip oa;do cat ../html/$n/index.html;done 

③创建虚拟主机配置文件

为了将#号 空格 去掉,更方便更清晰操作此配置文件,我做如下操作:

注意的是不能直接定向回去,否则会有问题。

[root@Centos-6 conf]# egrep -v "#|^$" nginx.conf >n.log

[root@Centos-6 conf]# cp n.log nginx.conf

cp:是否覆盖"nginx.conf"? y

[root@Centos-6 conf]# 

这样看起来是不是更清晰一些!

具体修改的虚拟主机配置文件如下:重点修改的是server模块,注意这里面的{}标签一定是有层次架构的,多一个少一个在语法检查上都是通过不了的。



④检查语法:

结果输出中一定出现红框的提示。

⑤平滑重启Nginx服务:

注意的是同一个IP下,一个端口只能有一个服务在跑,如果你还运行着apache服务的话,那么可能会报错的!

[root@Centos-6 /]# /application/nginx/sbin/nginx -s reload

⑥因为是基于域名,又要在本地进行测试,所以要修改本地的hosts的文件。

如果你是win10的客户端的话,就需要注意:Win10系统默认是没有权限去编辑保存系统里的文件,这也是权限不够才导致修改编辑hosts后无法保存的原因,解决的办法就是把自己的帐户权限给提高就行了。(实际生产中不轻易去改,否则安全软件给你报错提示的。)

参考解决方案:

http://jingyan.baidu.com/article/624e7459b194f134e8ba5a8e.html


文章转载自爱婷如命一生一世,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论