Nginx(一):安装
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, |
Quick |
|
QUIT |
Graceful 比如有一个Worker进程没有在工作,那么直接杀掉,如果有一个Worker进程正在处理请求,那么我 先不杀掉它,等它处理完了,就不要再接受请求了,我再把它杀掉,最后主进程也消亡了。) |
|
HUP |
Configuration a new configuration Gracefully shutdown the 改变配置文件,平滑的重读配置文件(apache改了配置文件,需要重启主进程,从这里我们可以看出 如果使用信号量HUP,Nginx并不需要重启主进程这一点是Nginx很大的优点。机制是会开启新的 Worker进程,去读取新的配置文件,然后再优雅的关闭旧的进程,最后旧进程慢慢的都没了,新进程 慢慢的就多了,而且新进程是读取的新的配置文件) |
|
USR1 |
Reopen 件名只是一个表象,当nginx在往一个日志文件中写东西的时候,如果我们想要nginx换一个文件写 ,不要在原来的文件中写了。有的人考虑到,我们给原来的日志文件换一个名字,mv access.log access.log.back,然后再创建一个touch 我们的文件名字换了,但是nginx写日志的位置仍然是那块磁盘位置(也就是说nginx是在向某一个 iNode写,但是nginx在读取配置文件的时候,虽然获取的是文件名,但是实际上提取的是文件名 所对应的inode,所以配置文件需要重读),即使我们删除这个文件也是不行的,因为那块inode不可 能被删,新文件的大小是不可能会变的) |
|
USR2 |
Upgrade |
|
WINCH |
Gracefully |
具体语法:
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(一):安装的更多相关文章
- Nginx服务安装配置
1.Nginx介绍 Nginx是一个高性能的HTTP和反向代理服务器,由俄罗斯人开发的,第一个版本发布于2004年10月4日.Nginx由于出色的性能,在世界范围内受到了越来越多人的关注,其特点是占有 ...
- Django Nginx+uwsgi 安装配置
使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttp ...
- mysql 自动备份和nginx自动安装脚本
一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...
- nginx的安装
1,,nginx的安装 为什么使用nginx我就不多说了,很优秀的,请再行google 在安装前,先安装pcre,安装zlib,安装openssl,以及一些其他包 yum install -y gcc ...
- nginx编译安装
Nginx编译安装 1.nginx官网:http://wiki.nginx.org/Install下载:http://nginx.org/en/download.html 2.编译安装# wget h ...
- nginx 的安装
一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl ...
- linux/centos下安装nginx(rpm安装和源码安装)详细步骤
Centos下安装nginx rpm包 ...
- nginx的安装与配置
1.nginx的安装与配置 编译安装nginx需要实现安装开发包组“Development tools”和“Server Platform Development”.“Desktop Platform ...
- nginx笔记----安装
nginx的安装 ./configure make && make install (一)准备条件: 1.GCC---gun编译器集合 Nginx是一个由C语言编写的程序,因此首先需要 ...
- Linux下Nginx的安装、升级及动态添加模块
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
随机推荐
- 如果奇迹有颜色,那么一定是暴力or模拟比较6
模拟就是一个思想,给你一个东西,没有很好的算法去解决,只需要计算机去暴力,优雅的暴力就可以叫算法了 主要还是考大家的代码能力,这次题目应该不需要任何前置技能. 1001 Time Limit(Comm ...
- 顺序表ans链性表
#include<stdio.h>#include<malloc.h>#include<string.h>typedef int ElemType;typedef ...
- bzoj 1572: [Usaco2009 Open]工作安排Job
Description Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单 ...
- P2258 子矩阵 (搜索,动态规划)
题目链接 Solution 搜索+DP. 刚好把搜索卡死的数据范围... 然后应该可以很容易想到枚举行的情况,然后分列去DP. 行的情况直接全排列即可,复杂度最高 \(O(C_{16}^{8})\). ...
- Java面试题之多线程同步和互斥有几种实现方法,都是什么?
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另外一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒. 线程互斥是指对于共享的进程系统资源,每个线程访问时的排他 ...
- 网络流24题-最长k可重线段集问题
最长k可重线段集问题 时空限制1000ms / 128MB 题目描述 给定平面 x−O−y 上 n 个开线段组成的集合 I,和一个正整数 k .试设计一个算法,从开线段集合 I 中选取出开线段集合 S ...
- mfc对话框嵌入Flash的交互(转)
原文转自 http://blog.csdn.net/yacper/article/details/5021081 研究Flash嵌入游戏中的可行性....... 渲染问题已解决 事件响应已解决 下面是 ...
- Opus 和 AAC 声音编码格式
Opus编码器 是一个有损声音编码的格式,由互联网工程任务组(IETF)近来开发,适用于网络上的实时声音传输,标准格式为RFC 6716.Opus 格式是一个开放格式,使用上没有任何专利或限制. Op ...
- 37深入理解C指针之---结构体与指针
一.结构体与指针 1.结构体的高级初始化.结构体的销毁.结构体池的应用 2.特征: 1).为了避免含有指针成员的结构体指针的初始化复杂操作,将所有初始化动作使用函数封装: 2).封装函数主要实现内存的 ...
- 20深入理解C指针之---程序的栈和堆
一.程序在内存中的存储分段: 程序段主要包括:code段.data段.内核段.堆段和栈段 1.code段: 1).存储程序汇编后程序指令 2).此段中的数据是只读的 3).不能用于存储变量,可以存储常 ...