Nginx基本概念

暂时没有写完,还有与nginx相关的 url重写 gzip压缩  expires缓存 反向代理 负载均衡 连接memcached 大访问量处理 以及 集群等知识点正在学习中。


Nginx web服务器
engine X 高性能的http和反向代理服务器,也是一种IMAP/POP3/SMTP 代理服务器 

安装 Nginx详细步骤
1.进入 cd usr/local/src 目录下 wget http://nginx.org/download/nginx-1.10.2.tar.gz 
2.解压 tar zxvf nginx-1.10.2.tar.gz
3.进入 cd nginx-1.10.2 文件夹,查看文件下有什么 ls  (应该有config文件)

4.三步骤
1.  ./configure --prefix=/usr/local/nginx
把nignx安装在/usr/local/nginx目录下
中间可能会提醒缺少什么库,缺少什么咱们再去找
比方说 yum install pcre  是安装正则表达式的库(nginx依赖pcre)
或者是安装头文件 yum install pcre-devel 不能只安装pcre
2. make && make install  进行安装
返回 cd /usr/local/ 下可以看到多了一个nginx文件夹

5.启动 (在nginx下 ./sbin/nginx) 
1.然后 cd nginx/ 下 看到4个主要目录 conf html logs sbin 
conf 配置文件目
html 放置网页文件
logs 日志文件目录
sbin 主要二进制程序
2.进入sbin目录
cd sbin/ 看到只有一个文件 inx 
3.启动 
返回上级目录 cd.. (就是 /usr/local/nginx 目录)
启动 ./sbin/nginx  启动成功的话应该什么也不显示
出现错误 still could not bind();意思是不能绑定80端口,因为80端口已经被占用了
查看 netstat -antp 谁使用了80端口 应该是apache,更多情况是操作系统自带了apache并且启动了
然后把占用80端口的软件或服务关闭 ,发现是 1794/httpd 占用了
杀掉进程 kill -9 1794
或者pkill -9 http 表示牵扯到http的全部关掉

2.nginx信号控制
启动:运行sbin目录下的二进制文件 nginx ====>  # /usr/local/nginx/sbin/nginx
关闭:kill 信号名 进程号id  ====>  kill -INT 6145  信号可能不一样的
ps aux|grep nginx 可以查看关于nginx当前运行的进程,看到有两个 一个master(用来管理子进程(4个或者8个)) 一个worker(用来响应网页)
信号名: TERM  或者 INT  快速关闭进程
QUIT  优雅关闭(等work工作完毕关闭) 
HUP   新进程读取新的配置文件,然后慢慢的关闭旧的进程 kill -HUP 'cat logs/nginx.pid'
USER1 重读日志也是日志切割(运维经常使用) kill -USER1 进程号
USER2 平滑的升级 和 WINCH 配合使用

如果不想老是查看进程号, 可以使用 'cat logs/nginx.pid' 
kill -HUP 'cat logs/nginx.pid'; ===>其实就是进程文件记录了进程号

重启 ./sbin/nginx -s reload 

3.虚拟主机的管理
全局区 
work_processes 1; 表示有一个工作的子进程。可以修改,但是太大了没用,因为会争夺CPU,一般设置CPU*核数 
Event 区
//一般是配饰nginx连接的特性
//比如1个work可以允许同时多少个连接
work_connections 1024; 一个子进程最大允许1024个连接

可以基于 1. 域名    localhost
2. IP   192.168.1.200
3. 端口    z.com:2022 
三种方法来配置虚拟主机

4.日志管理
在配置文件中 25行看到 
access_log logs/host.access.log main;
表示 这个server的访问日志文件是host.access.log 使用的格式是main 当然我们可以自定义其他格式 
main只是一种日志格式

可以从日志来查看网页IP的来源,可能是爬虫疯狂的爬取,也可能是竞争对手恶意攻击。导致服务器承受不了
所以可以分开存放日志,每天储存一份
使用 USR1信号控制 切割日志生成一份新的日志文件,然后在加一个定时条件,每天的凌晨进行备份

修改时间 date -s '2016-11-11 14:46:25'
储存时间 clock -w
修改格式 date -d yesterday +%Y%m%d

创建存放日志目录 mkdir /data 
创建 bash 脚本
vim runlog.sh
脚本内容
// echo `data -d yesterday +%Y%m%d`;
// echo $(data -d yesterday +%Y%m%d);
// #使用 反引号 或者 $() 都可以
LOGPATH=/usr/nginx/logs/z.com.access.log  原始的日志存放路径
BASEPATH=/data  之后日志储存的路径(logpath重命名之后存放的地方)

bak=$BASEPATH/$(date -d yesterday +%Y%m%d%).zcom.access.log  修改完之后的文件名字

mv $LOGPATH $bak 移动文件
touch $LOGPATH 创建一个新的$LOGPATH

kill -USR1 /usr/local/nginx/logs/nginx.pid 使用信号控制发送 USR1 信号

实现每分钟执行一次
crontab -e 
*/1**** sh/data/runlog/sh

5.location 语法
根据Uri进行不同的定位。在虚拟机的配置中,是必不可少的。location可以把网站的不同部分定位到不同的处理方式上。

nginx的配置文件在 conf目录下的nginx.conf 

6.rewrite重写
nginx多有的模块信息都在官方文档上 nginx.org/en/docs/

重写中用到的指令
if  (条件) {}  设定条件,再进行重写 
set #设置变量
return #返回状态码 
break #跳出rewrite
rewrite #重写

7.Nginx 和 php 整合
安装的php7.0  安装的目录是 /usr/local/fastphp/ 下面(自定义了一个目录)
php安装步骤和上面一样的
配置的时候 给php配置上这些扩展
./configure --prefix=/usr/local/fastphp  --with-mysqli=mysqlnd  --enable-mysqlnd  --with-gd  --enable-gd-native-ttf  --enable-gd-jis-conv  --enable-fpm

// ./configure -help|grep mysql  查看php和mysql之间的关系

开始解压 /usr/local/src/php7.....下面
安装到/usr/local/fastphp/ 下面

然后把开始目录下的 php.ini-development(开发者的php.ini复制到 2 目录下的lib中 命名php.ini)
cp /usr/local/src/php-7.0.13/php.ini-development ./lib/php.ini

继续
cp etc/php-fpm.conf.defaule etc/php-fpm.conf
//rm -rf  删除目录!!

你可能感兴趣的:(Nginx基本概念)