Nginx:综合架构网站服务 -- 1-- 安装及重要目录介绍
综合架构网站服务(Nignx)
命令总览:
python -V --查看Python安装版本,Linux中默认已安装
epoll --nginx实现网络通讯时使用的时异步网络IO模型: epoll模型
00. 内容说明:
- 常见的网站服务
- nginx网站服务特点
- nginx服务部署安装 yum
- nginx目录结构介绍 (站点目录)
- nginx配置文件默认参数说明
- nginx实现简单网站搭建 (html代码)
- nginx服务一些常见应用 (模块功能)
01. HTTP回顾:
1) 用户访问网站流程
2) HTTP协议的报文结构
- HTTP请求报文
- HTTP响应报文
3) 报文结构中重点内容
- 请求方法 get post
- 协议版本 1.0 1.1 2.0
- 状态码 200 301 302 404 403 500+
4) 网站资源信息
- URL URI
- 静态资源
- 动态资源 LNMP架构
- 伪静态
5) 网站评测指标
1. IP: 根据用户访问的源IP信息进行统计
如何统计,一个页面(www)一天访问网站最多的前10个地址 (awk 数组/sort uniq),access.log
访问用户源地址信息:
北京: 192.168.10.1 192.168.11.2
深圳: 192.169.11.1
上海: 192.170.12.1
北京: 192.168.11.2
2. PV: 根据用户页面访问量进行统计
统计用户访问哪个页面的次数比较多,取出前10名
北京: 192.168.10.1: 根据用户访问的cookie信息,统计访问的用户数量
3. 网站并发: 单位时间内同时处理的请求数 ab命令可以模拟压力测试
02. 常用的网站服务软件
Usage statistics of web servers:
https://w3techs.com/technologies/overview/web_server
处理静态资源的web服务:
apache软件: http://apache.org/ ,如httpd. yum install -y httpd
nginx软件: http://nginx.org
处理动态资源的web服务:
PHP: php.net 终端浏览器进行访问 渐渐没落了
Tomcat(java): 利用移动端查看网页 安卓-java
PYTHON: 开发难度比较低
03. nginx服务的软件特点:
Nginx--engine x
- 支持高并发,消耗内存资源少
- 具有多种功能
网站web服务功能 --- 能代替apache
网站负载均衡功能 --- 能代替LVS
网站缓存服务 --- 能代替Squid - 在多种系统平台都可以进行部署
- nginx实现网络通讯时使用的时异步网络IO模型: epoll模型(apache -- select模型)
-
epoll模型:
宿舍管理员: 找人,查看人员登记信息 ---不是线性的,效率更高
幼儿园阿姨: 小朋友上厕所, 都站在教室的某个位置 -
select模型:
宿舍管理员: 找人,一个一个屋子去问, --线性轮询
幼儿园阿姨: 小朋友上厕所, 一个一个小朋友去询问
apache select和nginx epoll 对比
04. nginx软件的安装部署过程:
两种安装方式:01.yum安装软件和02.编译安装软件
yum安装软件能解决依赖问题;编译安装需要提前安装依赖,但能制定安装
01. 编译安装软件
在web服务器上192.16.1.7,mkdir /server/tools -p
http://nginx.org/en/download.html 官网找到稳定版,右键复制链接地址
第一个步骤:
下载源码包:wget http://nginx.org/download/nginx-1.16.0.tar.gz
PS: 解决软件的依赖 openssl-devel pcre-devel devel表示依赖
mkdir /server/tools -p
cd /server/tools
wget http://nginx.org/download/nginx-1.16.0.tar.gz
yum install openssl openssl-devel pcre pcre-devel -y
第二个步骤:
解压下载好的软件, 并进入到软件目录中
tar xf nginx-1.16.0.tar.gz
cd nginx-1.16.0
第三个步骤:
编译安装三步曲
a 进行配置操作
./configure --help
./configure --prefix= --user=USER
--prefix=PATH 指定程序安装路径
--user=USER 设置一个虚拟用户管理worker进程(安全)
--group=GROUP 设置一个虚拟用户组管理worker进程(安全)
b 进行软件的编译过程:
make 编译(相当于翻译)
c 编译安装过程
make install
02. yum安装软件(本文使用)
a 使用官方yum源进行安装 安装的是最新版本 软件目录结构比较标准 (推荐) 7
b 使用非官方yum源进行安装 安装的不是最新版 目录结构会发生变化 41
yum官方源安装方法:
找到官网http://nginx.org/en/download.html
最后面有Linux packages for stable and mainline versions.进入RHEL/CentOS后有安装源信息
只要nginx-stable稳定版本,不要主线版本
第一个历程: 更新nginx官方yum源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
第二个历程: yum安装nginx软件
sudo yum install yum-utils
yum install -y nginx
第三个历程: 启动nginx服务,检查服务是否安装正确
systemctl start nginx
systemctl enable nginx
systemctl status nginx
测试访问nginx服务
打开浏览器,输入web的IP地址如10.0.0.7,
显示Welcome to nginx!successfully 相关界面
05. 查看软件的目录结构
logrotate.d --- 日志轮训目录
/etc/logrotate.d实现nginx日志文件定时切割处理
日志切割方法一: 利用脚本实现切割
#!/bin/bash
mv /var/log/nginx/access.log /var/log/nginx/access_$(date +%F).log
systemctl restart nginx
日志切割方法二: 利用专用文件切割程序--logrotate
vim /etc/logrotate.conf --- 文件内容说明
# rotate log files weekly
weekly --- 定义默认日志切割的周期
# keep 4 weeks worth of backlogs
rotate 4 --- 定义只保留几个切割后的文件
# create new (empty) log files after rotating old ones
create --- 创建出一个相同的源文件
# use date as a suffix of the rotated file
dateext --- 定义角标(扩展名称信息)
# uncomment this if you want your log files compressed
#compress --- 是否对切割后的文件进行压缩处理
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d --- 加载包含/etc/logrotate.d/目录中文件配置
# 上述均为全局设置,或默认设置
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp { --- 单独对某个文件进行切割配置
monthly --- 按月切割
create 0664 root utmp --- 切割后新创建的文件权限
minsize 1M --- 最小大小为1M,小于1M不进行切割
rotate 1 --- 保留日志个数为1个
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
06. nginx服务配置文件
/etc/nginx/nginx.conf -- 主配置文件
/etc/nginx/nginx.d/default -- 扩展配置文件(虚拟主机配置文件)
ps -ef|grep nginx -- 能看到两个Nginx进程,一个master,另一个worker默认由Nginx管理补充: nginx的进程
master process: 主进程 ---管理服务是否能够正常运行 boss
worker process: 工作进程 ---处理用户的访问请求 员工
nginx.conf --- 主配置文件
cd /etc/nginx/
cp nginx.conf{,.bak}
grep -v "^$" nginx.conf > nginx.conf
## 第一个部分: 配置文件主区域配置
user nginx; --- 定义worker进程管理的用户,可更改为www用户,重启后ps -ef|grep nginx
worker_processes 2; --- 定义有几个worker进程 最好是CPU核数 / 核数的2倍
error_log /var/log/nginx/error.log warn; --- 定义错误日志路径信息
pid /var/run/nginx.pid; --- 定义pid文件路径信息
## 第二个部分: 配置文件事件区域
events {
worker_connections 1024; --- 一个worker进程可以同时接收1024访问请求
}
## 第三个部分: 配置http区域
http {
include /etc/nginx/mime.types; --- 加载一个配置文件
default_type application/octet-stream; --- 指定默认识别文件类型
log_format oldboy '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
--- 定义日志的格式
access_log /var/log/nginx/access.log oldboy; --- 指定日志路径
sendfile on; ???
#tcp_nopush on; ???
keepalive_timeout 65; --- 超时时间
#gzip on;
include /etc/nginx/conf.d/*.conf; --- 加载一个配置文件
}
default.conf --- 扩展配置
/etc/nginx/conf.d/default.conf --- 扩展配置(虚拟主机配置文件),cd /etc/nginx/conf.d/
cd /etc/nginx/conf.d/
[root@web01 conf.d]# cp default.conf{,.bak}
[root@web01 conf.d]# grep -Ev "^$|^ #" default.conf.bak > default.conf
[root@web01 conf.d]# cat default.conf
# 相当于主配置文件的第四个部分: server区域信息(配置一个网站 www/bbs/blog -- 也称为一个虚拟主机)
server {
listen 8080; --- 指定监听的端口,默认80
server_name www.moox.com; --- 指定网站域名
location / {
root /usr/share/nginx/html; --- 定义站点目录的位置
index index.html index.htm; --- 定义首页文件
} --- 用户请求先在站点目录中找,没有时发送首页文件
error_page 500 502 503 504 /50x.html;--- 以下优雅显示页面信息
location = /50x.html {
root /usr/share/nginx/html;
}
}
测试default.conf:
# 1.修改监听端口:listen 8080;
systemctl reload nginx
netstat -lntup|grep nginx
# 浏览器清除缓存后打开10.0.0.7报错,使用10.0.0.7:8080正常打开(win10不要使用IE)
# 2.
站点目录和首页文件关系示意图:
客户请求时,首先查找站点目录中需要的文件如:
10.0.0.7:8080/usr/share/nginx/html/moox.html;
站点目录中不存在时,将首页文件index.html发给客户
07. 总结:
- 常用的网站web服务 (静态请求 动态请求)
- nginx服务的特点 相比较于apache
nginx实现网络通讯时使用的时异步网络IO模型: epoll模型 - nginx软件安装部署 yum官方源如何安装部署
- nginx程序重要目录结构
- /etc/nginx 配置文件
- /var/log/nginx 日志文件
- /usr/bin/nginx 命令文件
- /usr/share/nginx/html 站点目录
- nginx服务配置文件默认参数
扩展:
- 熟悉排序和去重命令,对文件中数值信息进行统计分析
统计用户访问哪个页面的次数比较多,取出前10名 - 如何对网站进行压力测试
作者:moox
出处:http://www.cnblogs.com/moox/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。