暂时没有写完,还有与nginx相关的 url重写 gzip压缩 expires缓存 反向代理 负载均衡 连接memcached 大访问量处理 以及 集群等知识点正在学习中。
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 删除目录!!