nginx 的安装

下载地址: http://nginx.org/download/nginx-1.4.2.tar.gz

安装准备: nginx依赖于pcre库,要先安装pcre(正则的库)

yum install pcre

yum install pcre-devel

注意:1. 如果在./configure 提示某个库没有装,但是我们yum 之后提示该库已经装了,Nothing to do,此时我们在后面添加一个 -devel.

     2. ./configure: error: C compiler cc is not found如果出现这个错误,则 yum -y install gcc gcc-c++ autoconf automake make

安装:

cd /usr/local/src/

wget http://nginx.org/download/nginx-1.4.2.tar.gz

tar -zxvf nginx-1.4.2.tar.gz

cd nginx-1.4.2

./configure --prefix=/usr/local/nginx  (一致性哈希的东西没装)

make && make install

222222

nginx目录结构:

cd /usr/local/nginx, 看到如下4个目录

./

....conf 配置文件

... html 网页文件

...logs  日志文件

...sbin  主要二进制程序

启动:

33333

[root@localhost nginx]# ./sbin/nginx

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

....

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] still could not bind()

报错:不能绑定80端口,80端口已经被占用

(有时是自己装了apache,nginx等,还有更多情况是操作系统自带了apache并作为服务启动)

解决: 把占用80端口的软件或服务关闭即可.

444

-antp,加上p,我们可以看到80端口到底是哪个程序占用了,最后一列,httpd,明显是apache

5555

把进程杀杀死

pkill -9 http  该命令是干啥的
Nginx的信号控制

TERM,
INT

Quick
shutdown(紧急的杀掉,轻易不要这么用)

QUIT

Graceful
shutdown  优雅的关闭进程,即等请求结束后再关闭(在apache中也有这个概念,

比如有一个Worker进程没有在工作,那么直接杀掉,如果有一个Worker进程正在处理请求,那么我

先不杀掉它,等它处理完了,就不要再接受请求了,我再把它杀掉,最后主进程也消亡了。)

HUP

Configuration
reload ,Start the new worker processes with

a new configuration Gracefully shutdown the
old worker processes

改变配置文件,平滑的重读配置文件(apache改了配置文件,需要重启主进程,从这里我们可以看出

如果使用信号量HUP,Nginx并不需要重启主进程这一点是Nginx很大的优点。机制是会开启新的

Worker进程,去读取新的配置文件,然后再优雅的关闭旧的进程,最后旧进程慢慢的都没了,新进程

慢慢的就多了,而且新进程是读取的新的配置文件)

USR1

Reopen
the log files 重读日志,在日志按月/日分割时有用(在linux中,有inode的概念,文

件名只是一个表象,当nginx在往一个日志文件中写东西的时候,如果我们想要nginx换一个文件写

,不要在原来的文件中写了。有的人考虑到,我们给原来的日志文件换一个名字,mv access.log

access.log.back,然后再创建一个touch
access.log,就可以了,但是实际上是不行的,虽然

我们的文件名字换了,但是nginx写日志的位置仍然是那块磁盘位置(也就是说nginx是在向某一个

iNode写,但是nginx在读取配置文件的时候,虽然获取的是文件名,但是实际上提取的是文件名

所对应的inode,所以配置文件需要重读),即使我们删除这个文件也是不行的,因为那块inode不可

能被删,新文件的大小是不可能会变的)

USR2

Upgrade
Executable on the fly 平滑的升级

WINCH

Gracefully
shutdown the worker processes 优雅关闭旧的进程(配合USR2来进行升级)

具体语法:

Kill -信号选项 nginx的主进程号

Kill -HUP 4873

Kill -信号控制 `cat
/xxx/path/log/nginx.pid`

Kil; -USR1 `cat /xxx/path/log/nginx.pid`

66666

检测配置文件:一般在启动之前,执行一下这个命令,进行检测配置文件

99

Nginx配置段

// 全局区
worker_processes 1; // 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数

101010

Event {

// 一般是配置nginx连接的特性

// 如1个work能同时允许多少连接

worker_connections  1024; // 这是指 一个子进程最大允许连1024个连接

}

http {  //这是配置http服务器的主要段

Server1 { // 这是虚拟主机段

//监听某一个端口或域名,把它映射到某一个目录中去,本例中的nginx装在/var/local/nginx/

Location {  //定位,把特殊的路径或文件再次定位 ,如image目录单独处理

}             /// 如.php单独处理

}

Server2 {

}

….

}

例子1: 基于域名的虚拟主机

server {

listen 80;  #监听端口

server_name a.com; #监听域名(如果测试,需要修改host文件,博客中有相关内容)

location / {

//root可以写相对目录,相对的是nginx的根目录,也可以写绝对路径,而且绝对路径不限于在nginx目录下,下面的例子就是绝对路径,但是并不是在nginx的目录中

root /var/www/a.com;   #根目录定位

index index.html;

}

}

例子2: 基于端口的虚拟主机配置

server {

listen 8080;

//server_name z.com;(视频中sever_name用的是z.com)

server_name 192.168.1.204;

location / {

root /var/www/html8080;

index index.html;

}

}

例子3: 基于IP的虚拟主机配置

server {

listen 80;

server_name 192.168.1.204;

location / {

root html/ip;

index index.html;

}

}

日志管理

我们观察nginx的server段,可以看到如下类似信息

#access_log  logs/host.access.log  main;

这说明 该server, 它的访问日志的文件是  logs/host.access.log ,

使用的格式”main”格式.

除了main格式,你可以自定义其他格式.

main格式是什么?

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

#                  '$status $body_bytes_sent "$http_referer" '

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

main格式是我们定义好一种日志的格式,并起个名字,便于引用.

以上面的例子, main类型的日志,记录的 remote_addr.... http_x_forwarded_for等选项.

1: 日志格式 是指记录哪些选项

默认的日志格式: main

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

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

'"$http_user_agent":我们想要访问一个网页,浏览器代我们发送请求,所以浏览器被称为用户代理,该字段记录的就是,用户的浏览器是什么,机器的系统是什么。

http_x_forwarded_for:如果用户使用代理服务器来访问某一个网站,代理服务器有可能又通过代理服务器访问网站,那么每经过一个代理服务器,都会修改$http_x_forwarded_for,最终服务器会取最后一次的$http_x_forwarded_for。这样,我们就可能看到来自朝鲜的用户发表评论的现象了。如果web服务器选择使用$remote_addr来判断用户来自哪里,此时主动权在服务器端,我们可以通过remote_addr来判断访问者到底来自哪里。

蜘蛛协议非强制的,只能靠道德去制约

注意:如果我们的虚拟主机(server)没有配置日志,那么系统就会默认的使用main格式日志,并且访问日志会放在logs/access.log中,如果我们配置了访问日志,那当然就是使用我们配置的格式喽

如默认的main日志格式,记录这么几项

远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息

http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP

http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP

2: 声明一个独特的log_format并命名

如果这种日志格式我们觉得不好,我们也可以自己任意组合这几个变量,也可以删除几个,自己配一套日志格式

log_format  mylog '$remote_addr- "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

在下面的server/location,我们就可以引用 mylog

在server段中,这样来声明

Nginx允许针对不同的server做不同的Log ,(有的web服务器不支持,如lighttp)

access_log logs/access_8080.log mylog;

声明log   log位置          log格式;

实际应用: shell+定时任务+nginx信号管理,完成日志按日期存储

分析思路:

凌晨00:00:01,把昨天的日志重命名,放在相应的目录下

再USR1信息号控制nginx重新生成新的日志文件

具体脚本:

#!/bin/bash

base_path='/usr/local/nginx/logs'

log_path=$(date -d yesterday +"%Y%m")

day=$(date -d yesterday +"%d")

mkdir -p $base_path/$log_path

mv $base_path/access.log $base_path/$log_path/access_$day.log

#echo $base_path/$log_path/access_$day.log

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

linux如何更改系统时间

11

定时任务

Crontab 编辑定时任务

crontab –e

12

分 时 日 月 周 命令

01 00 * * * /xxx/path/b.sh  每天0时1分(建议在02-04点之间,系统负载小)

Nginx(一):安装的更多相关文章

  1. Nginx服务安装配置

    1.Nginx介绍 Nginx是一个高性能的HTTP和反向代理服务器,由俄罗斯人开发的,第一个版本发布于2004年10月4日.Nginx由于出色的性能,在世界范围内受到了越来越多人的关注,其特点是占有 ...

  2. Django Nginx+uwsgi 安装配置

    使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttp ...

  3. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  4. nginx的安装

    1,,nginx的安装 为什么使用nginx我就不多说了,很优秀的,请再行google 在安装前,先安装pcre,安装zlib,安装openssl,以及一些其他包 yum install -y gcc ...

  5. nginx编译安装

    Nginx编译安装 1.nginx官网:http://wiki.nginx.org/Install下载:http://nginx.org/en/download.html 2.编译安装# wget h ...

  6. nginx 的安装

    一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl ...

  7. linux/centos下安装nginx(rpm安装和源码安装)详细步骤

    Centos下安装nginx rpm包                                                                                 ...

  8. nginx的安装与配置

    1.nginx的安装与配置 编译安装nginx需要实现安装开发包组“Development tools”和“Server Platform Development”.“Desktop Platform ...

  9. nginx笔记----安装

    nginx的安装 ./configure make && make install (一)准备条件: 1.GCC---gun编译器集合 Nginx是一个由C语言编写的程序,因此首先需要 ...

  10. Linux下Nginx的安装、升级及动态添加模块

    系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...

随机推荐

  1. 面试中注意3个javascript的问题

    JavaScript 是所有现代浏览器的官方语言.因此,各种语言的开发者面试中都会遇到 JavaScript 问题. 本文不讲最新的 JavaScript 库,通用开发实践,或任何新的 ES6 函数. ...

  2. 使用 D8 分析 javascript 如何被 V8 引擎优化的

    在上一篇文章中我们讲了如何使用 GN 编译 V8 源码,文章最后编译完成的可执行文件并不是 V8,而是 D8.这篇我们讲一下如何使用 D8 调试 javascript 代码. 如果没有 d8,可以使用 ...

  3. [linux小技巧]批量移动文件

    for i in {1..23};do mv test$i/ ../;done

  4. iOS--------手势识别的详细使用:拖动、缩放、旋转、点击、手势依赖、自定义手势

    1.UIGestureRecognizer介绍 手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加了移动设备使用便捷性. iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了 ...

  5. POJ——3070Fibonacci(矩阵快速幂)

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12329   Accepted: 8748 Descri ...

  6. 洛谷P2664 树上游戏 【点分治 + 差分】

    题目 lrb有一棵树,树的每个节点有个颜色.给一个长度为n的颜色序列,定义s(i,j) 为i 到j 的颜色数量.以及 现在他想让你求出所有的sum[i] 输入格式 第一行为一个整数n,表示树节点的数量 ...

  7. (转)Java字符串整形(例:0001)

    原文地址:https://blog.csdn.net/xuexiiphone/article/details/51372692 caseID = preFix + String.format(&quo ...

  8. python time模块 sys模块 collections模块 random模块 os模块 序列化 datetime模块

    一 collections模块 collections模块在内置的数据类型,比如:int.str.list.dict等基础之上额外提供了几种数据类型. 参考博客 http://www.pythoner ...

  9. 通过例子学习 Keystone

    上一节介绍了 Keystone 的核心概念.本节我们通过“查询可用 image”这个实际操作让大家对这些概念建立更加感性的认识. User admin 要查看 Project 中的 image 第 1 ...

  10. 一次向linux开源社区提交补丁的经历

    背景 在开发过程中,偶然发现了spinand驱动的一个bug,满怀欣喜地往社区提补丁.这是怎么样的一个bug呢? static int spinand_mtd_read(struct mtd_info ...