linux篇之Nginx web服务器简单部署
<h2><span style="background-color: rgba(153, 204, 0, 1)">一、安装部署nginx</span></h2><h3><span style="background-color: rgba(255, 255, 255, 1)"><span style="color: rgba(255, 102, 0, 1)">1. 部署前先对nginx介绍下别嫌BB:</span></span></h3>
<p>如果你听说或使用过Apache软件,那么很快就会熟悉Nginx软件,与Apache软件类似,<br> Nginx(“engine x”)是一个开源的,支持高性能、高并发的WWW服务器和代理服务软件。<br> 它是由俄罗斯人lgor Sysoev开发的,最初被应用在俄罗斯的大型网站www.rambler.ru上。<br> 后来作者将源代码以类BSD许可证的形式开源出来供全球使用。<br> Nginx可以运行在UNIX、Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中</p>
<p><strong><span style="color: rgba(255, 102, 0, 1)">特征介绍:</span></strong> </p>
<p><strong>· 支持高并发:能支持几万并发连接(特别是静态小文件业务环境)</strong><br><strong>· 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB(WO CAO NB!!)</strong><br><strong>· 支持异步网络I/O事件模型epoll(Linux 2.6+) apache(select)</strong></p>
<p><span style="color: rgba(255, 102, 0, 1)"><strong>功能介绍:</strong></span></p>
<p><strong>1)作为Web服务软件(处理用户访问静态请求)</strong><br><strong> 2)反向代理或负载均衡服务</strong><br><strong> 3)前端业务数据缓存服务</strong></p>
<p><span style="color: rgba(255, 102, 0, 1)"><strong>nginx软件模型特点说明:</strong></span></p>
<p>apache与nginx软件对比说明???<br> apache使用select模型<br> nginx使用epoll模型</p>
<p> 举例说明:宿舍管理员</p>
<p> select模型版管理员 会一个一个房间查询人员<br> epoll模型版管理员 会进行检索后,直接找到需要找的人<br> 举例说明:幼儿园阿姨<br> select模型版阿姨 会一个一个小朋友进行询问,确认哪个小朋友需要上厕所<br> epoll模型版阿姨 会告知想上厕所小朋友自觉站到响应位置</p>
<p> </p>
<h3><span style="color: rgba(255, 153, 0, 1)">2.这里采用源码编译安装的方式安装</span></h3>
<p><strong>一个最lowB版的shell安装脚本</strong></p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">#!/bin/bash
. /etc/init.d/functions
tool_path=/server/tools
download_address=http://nginx.org/download/nginx-1.16.0.tar.gz
[ ! -d ${tool_path} ] && mkdir -p $tool_path
useradd www -s /sbin/nologin/ -M
yum install -y pcre-devel openssl-devel
if [ $? -eq 0 ];
then
action "yum install success" /bin/true
else
action "yum install failure" /bin/false
exit 1
fi
cd $tool_path
wget $download_address
if [ $? -eq 0 ];
then
action "download success" /bin/true
else
action "download failure" /bin/false
exit 1
fi
tar -xf nginx-1.16.0.tar.gz
if [ $? -eq 0 ];
then
action "tar success" /bin/true
else
action "tar failure" /bin/false
exit 1
fi
cd nginx-1.16.0
./configure --prefix=/application/nginx-1.16.0/ --user=www --group=www --with-http_ssl_module --with-http_stub_status_module
if [ $? -eq 0 ];
then
action "configure success" /bin/true
else
action "configure failure" /bin/false
exit 1
fi
make && make install
if [ $? -eq 0 ];
then
action "makeinstall success" /bin/true
else
action "makeinstall failure" /bin/false
exit 1
fi
ls -s /application/nginx-1.16.0/ /application/nginx
ln -s /application/nginx-1.16.0/ /usr/bin/nginx
#启动Nginx服务
/usr/bin/nginx
ps -ef|grep nginx
</pre>
</div>
<h3><span style="color: rgba(255, 153, 0, 1)">2. 编写nginx配置文件</span></h3>
<p> </p>
<p><strong> 三个语法格式说明:</strong><br><strong> ①. 大括号要成对出现</strong><br><strong> ②. 每一行指令后面要用分号结尾</strong><br><strong> ③. 每一个指令要放置在指定的区块中</strong></p>
<p><span style="color: rgba(255, 102, 0, 1)"><strong>01:简化配置文件(注释很多我们先简化下)</strong></span></p>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<pre>cd /application/nginx/conf/<br>grep -Ev <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#|^$</span><span style="color: rgba(128, 0, 0, 1)">"</span> nginx.conf.default >nginx.conf #简化nginx.conf</pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<p><strong><span style="color: rgba(255, 153, 0, 1)">02. 实现编写一个网站页面(测试下)</span></strong></p>
<p> </p>
<div class="cnblogs_code">
<pre>vim /application/nginx/conf/<span style="color: rgba(0, 0, 0, 1)">nginx.conf
worker_processes</span>1<span style="color: rgba(0, 0, 0, 1)">;
events {
worker_connections</span>1024<span style="color: rgba(0, 0, 0, 1)">;
}
http {
include mime.types;
default_typeapplication</span>/octet-<span style="color: rgba(0, 0, 0, 1)">stream;
sendfile on;
keepalive_timeout</span>65<span style="color: rgba(0, 0, 0, 1)">;
server {
listen </span>80<span style="color: rgba(0, 0, 0, 1)">;
server_namewww.etiantian.org;
location </span>/<span style="color: rgba(0, 0, 0, 1)"> {
root html</span>/<span style="color: rgba(0, 0, 0, 1)">www; #站点根目录
indexindex.html index.htm;
}
}
}</span></pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><strong><span style="color: rgba(255, 153, 0, 1)">03. 如果要实现多个页面编写==多个虚拟主机,可以编写多个server模块</span></strong></p>
<p><strong><span style="color: rgba(255, 153, 0, 1)"> 然后创建站点目录:</span></strong></p>
<p><strong><span style="color: rgba(255, 153, 0, 1)"> 例如:mkdir -p /application/nginx/html/{www,bbs,blog}</span></strong></p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">server {
listen </span>80<span style="color: rgba(0, 0, 0, 1)">;
server_namewww.etiantian.org;
location </span>/<span style="color: rgba(0, 0, 0, 1)"> {
root html</span>/<span style="color: rgba(0, 0, 0, 1)">www;
indexindex.html index.htm;
}
}
server {
listen </span>80<span style="color: rgba(0, 0, 0, 1)">;
server_namebbs.etiantian.org;
location </span>/<span style="color: rgba(0, 0, 0, 1)"> {
root html</span>/<span style="color: rgba(0, 0, 0, 1)">bbs;
indexindex.html index.htm;
}
}
server {
listen </span>80<span style="color: rgba(0, 0, 0, 1)">;
server_nameblog.etiantian.org;
location </span>/<span style="color: rgba(0, 0, 0, 1)"> {
root html</span>/<span style="color: rgba(0, 0, 0, 1)">blog;
indexindex.html index.htm;
}
}</span></pre>
</div>
<p><strong><span style="color: rgba(255, 153, 0, 1)">为了便于管理,每个站点的server模块可以分别编写在成子配置文件中,只需要在nginx.conf中 include进来就行了.................</span></strong></p>
<p> </p>
<p><span style="color: rgba(255, 153, 0, 1)"><img src="https://img2018.cnblogs.com/blog/1355433/201907/1355433-20190704142120983-1124208241.png" alt=""></span></p>
<p> </p>
<h3><span style="color: rgba(255, 102, 0, 1)">04. 创建站点目录下首页文件:</span></h3>
<p> 例如:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">for</span> name <span style="color: rgba(0, 0, 255, 1)">in</span> www bbs blog;do echo <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">10.0.0.7 $name.etiantian.org</span><span style="color: rgba(128, 0, 0, 1)">"</span> >/application/nginx/html/$name/<span style="color: rgba(0, 0, 0, 1)">index.html;done
</span><span style="color: rgba(0, 0, 255, 1)">for</span> name <span style="color: rgba(0, 0, 255, 1)">in</span> www bbs blog;do cat /application/nginx/html/$name/<span style="color: rgba(0, 0, 0, 1)">index.html;done
</span>10.0.0.7<span style="color: rgba(0, 0, 0, 1)"> www.etiantian.org
</span>10.0.0.7<span style="color: rgba(0, 0, 0, 1)"> bbs.etiantian.org
</span>10.0.0.7 blog.etiantian.org</pre>
</div>
<p> </p>
<p> </p>
<h3><span style="color: rgba(255, 102, 0, 1)">05. 测试访问</span></h3>
<p><strong>浏览器访问测试:</strong><br><strong> 注意:需要编写windows主机hosts文件,进行解析</strong><br><strong> 命令行访问测试:</strong><br><strong> 利用curl命令在linux系统中访问测试</strong><br><strong> 注意:需要编写linux主机hosts文件,进行解析</strong></p>
<p><img src="https://img2018.cnblogs.com/blog/1355433/201907/1355433-20190704142651699-1035924240.png" alt="" width="539" height="120"></p>
<p><span style="color: rgba(255, 102, 0, 1)"><strong>这样就部署成功啦!!!</strong></span></p>
<p> </p>
<h2><span style="color: rgba(0, 0, 0, 1); background-color: rgba(51, 102, 255, 1)">二. nginx日志信息</span></h2>
<h3><span style="color: rgba(255, 102, 0, 1)"> 1. 错误日志</span></h3>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> Syntax: error_log file ;
Default:
error_log logs</span>/<span style="color: rgba(0, 0, 0, 1)">error.log error;
Context: main, http, mail, stream, server, location
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">error_loglogs/error.log;</span>
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">error_loglogs/error.lognotice;</span>
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">error_loglogs/error.loginfo;</span>
<span style="color: rgba(0, 0, 0, 1)">
vim nginx.conf
error_log</span>/tmp/error.log error;</pre>
</div>
<p> </p>
<p> 例如:</p>
<p> <img src="https://img2018.cnblogs.com/blog/1355433/201907/1355433-20190704143408211-1774852279.png" alt=""></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>补充说明:</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> ===========================================================================================</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> 错误日志的,默认情况下不指定也没有关系,因为nginx很少有错误日志记录的。</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> 但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题。</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> error_log 级别分为 debug, info, notice, warn, error, crit默认为crit </strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> 该级别在日志名后边定义格式如下:</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> error_log/your/path/error.log crit;</strong></span><br> <br><span style="color: rgba(255, 0, 0, 1)"><strong> crit 记录的日志最少,而debug记录的日志最多。</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> 如果nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> 那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> ===========================================================================================</strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"> </span></p>
<h3><span style="color: rgba(255, 102, 0, 1)">2. 访问日志(重点关注)</span></h3>
<p> </p>
<div class="cnblogs_code">
<pre> log_formatmain<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$remote_addr - $remote_user [$time_local] "$request" </span><span style="color: rgba(128, 0, 0, 1)">'</span> ---<span style="color: rgba(0, 0, 0, 1)">
定义日志信息要记录的内容格式
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$status $body_bytes_sent "$http_referer" </span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">"$http_user_agent" "$http_x_forwarded_for"</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
access_loglogs</span>/access.logmain; ---<span style="color: rgba(0, 0, 0, 1)"> 调用定义格式信息,生成访问日
志
$remote_addr </span>10.0.0.1 ---<span style="color: rgba(0, 0, 0, 1)"> 访问客户端的源地址信息
$remote_user </span>- ---<span style="color: rgba(0, 0, 0, 1)"> 访问客户端认证用户信息 ???
[$time_local] </span>---<span style="color: rgba(0, 0, 0, 1)"> 显示访问时间
$request GET </span>/ HTTP/1.1 ---<span style="color: rgba(0, 0, 0, 1)"> 请求行信息
$status </span>304 ---<span style="color: rgba(0, 0, 0, 1)"> 状态码信息(304状态码利用缓存显示页面信息)
$body_bytes_sent </span>---<span style="color: rgba(0, 0, 0, 1)"> 服务端响应客户端的数据大小信息
$http_referer </span>---<span style="color: rgba(0, 0, 0, 1)"> 记录链接到网站的域名信息???
$http_user_agent </span>---<span style="color: rgba(0, 0, 0, 1)"> 用户访问网站客户端软件标识信息
用户利用客户端浏览器测试访问时,win10默认浏览器会有
异常问
$http_x_forwarded_for </span>---<span style="color: rgba(0, 0, 0, 1)"> ???反向代理
官方链接:http:</span>//nginx.org/en/docs/http/ngx_http_log_module.html<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">access_log</span></pre>
</div>
<p> </p>
<p> </p>
<h3><span style="color: rgba(255, 102, 0, 1)">3. 对日志我们要进行切割,防止一个日志文件过大</span></h3>
<p> 我们利用shell脚本就可简单实现</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"></span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> vim cut_log.sh</span>
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/bin/bash</span><span style="color: rgba(0, 0, 0, 1)">
data_info</span>=$(date +%F-%H:%<span style="color: rgba(0, 0, 0, 1)">M)
mv </span>/application/nginx/logs/<span style="color: rgba(0, 0, 0, 1)">www_access.log </span>/application/nginx/logs/<span style="color: rgba(0, 0, 0, 1)">access.log.$data_info
</span>/application/nginx/sbin/nginx -<span style="color: rgba(0, 0, 0, 1)">s reload
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> cut nginx log cron</span>
* */6 * * * /bin/sh /server/scripts/cut_log.sh &>/dev/null <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">自定义定时触发</span></pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/xh-0205/p/11132357.html
頁:
[1]