linux学习--week15--综合架构企业应用网站服务
-
综合架构知识概述说明
- 网站服务资源信息
- 网站服务度量方法
- 网站服务软件程序 nginx
- 网站服务软件介绍 nginx
- 网站服务软件部署
方法一: yum安装
方法二: 编译安装 - 网站服务配置参数
- 网站服务企业应用
-
综合架构课程回顾:
- 批量管理服务概念
- 批量管理主机清单
- 批量管理模块应用
- 批量管理剧本配置
- 多个剧本整合方法
--import_playbook
利用角色 - 用户访问网站原理
DNS解析过程
建立三次握手 1个连接
HTTP请求信息(请求行 请求头 空行 请求主体)
HTTP响应信息(起始行 响应头 空行 响应主体)
断开四次挥手 - HTTP协议报文结构
请求报文: 请求行(请求方法 请求内容 请求协议)
响应报文: 起始行(响应状态码)
-
网站服务资源信息
-
静态网站资源
- 每个页面都有一个固定的URL地址,且URL一般以.html、.htm、.shtml等常见形式为后缀
而且地址中不含有问号“?”或“&”等特殊符号。 - 网页内容一经发布到网站服务器上,无论是否有用户访问,每个网页的内容都是保存在网站服务器文件系统上的,
也就是说,静态网页是实实在在保存在服务器上的文件实体,每个网页都是一个独立的文件。 - 网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)。
- 因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,
当网站信息量很大时,完全依靠静态网页比较困难(缺点)。 - 网页的交互性较差,在程序的功能实现方面有较大的限制(缺点)。
- 网页程序在用户浏览器端解析,如IE浏览器,程序解析效率很高,
由于服务器端不进行解析,并且不需要读取数据库,因此服务器端可以接受更多的并发访问。
当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)。
待客户端拿到数据后,在浏览器端解析并展现出来(优点)。
- 每个页面都有一个固定的URL地址,且URL一般以.html、.htm、.shtml等常见形式为后缀
-
动态网站资源
- 网页扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi .php等。 ※
- 网页一般以数据库技术为基础,大大降低了网站维护的工作量。
- 采用动态网页技术的网站可以实现更多的功能
如用户注册、用户登录、在线调查、投票、用户管理、订单处理、发博文等。 - 动态网页并不是独立存在于服务器上的网页文件
当用户请求服务器上的动态程序时,服务器解析这些程序并可能通过读取数据库来返回一个完整的网页内容。 - 动态网页中的“?”在搜索引擎的收录方面存在一定的问题,搜索引擎一般不会从一个网站的数据库中访问全部网页,
或者出于技术等方面的考虑,搜索蜘蛛一般不会去抓取网址中“?”后面的内容,
因此在企业通过搜索引擎进行推广时,需要针对采用动态网页的网站做一定的技术处理(伪静态技术),
以便适应搜索引擎的抓取要求。
-
伪静态网站资源
- 伪静态资源实质还是动态资源
- 将地址信息转换为和静态资源一样 www.oldboy.com/11231&-?.aspx --> www.oldboy.com/1123.html
URL: 统一资源定位符 Uniform Resource Locator
URI: 统一资源标识符 Uniform Resource Identifierwww.baidu.com /oldboy.jpg/xxx/xxx
URL URI -
-
网站度量方式说明(运营部门)
IP: 记录访问网站用户源IP地址信息 电脑中私网IP --NAT-- 统计公网IP地址 参考
PV: 记录访问网站页面数量 参考
记录用户访问行为,增加用户粘性
UV: 记录一个独立访客数量
cookie: 会员卡01 会员卡02
session: 会员记录表
用户信息(主机IP地址 主机硬件信息) --> 网站(自动cookie) --> 保存在浏览器
--> 网站(自动session) -
网站服务介绍说明:
静态资源服务: nginx apache Tengine
动态资源服务: tomcat(java) php(php)
- 静态网站服务: nginx
主要处理静态网站业务, 处理大量小文件静态页面, 并发能力比较强, 占用资源少(几万并发 5M内存空间)
- nginx服务部署过程:
-
直接yum安装软件:
yum install -y nginx
特点: 老版本nginx软件程序/软件目录结构和新版本有区别
好处: 简单方便 -
官方yum源安装软件: *****
第一个历程: 更新yum源
vim /etc/yum.repo.d/nginx.repo
第二个历程: 安装软件
yum install -y nginx
特点: 最新稳定版nginx -
编译安装软件: (自定义安装/灵活安装)
第一个历程: 下载编译源码包
wget http://nginx.org/download/nginx-1.16.1.tar.gz第二个历程: 解决软件依赖关系
yum install -y openssl-devel pcre-devel
openssl-devel: 可以实现HTTPs访问网站
pcre-devel: 兼容perl语言正则表达式依赖包 location第三个历程: 编译安装软件
tar xf nginx-1.16.1.tar.gz
cd nginx-1.16.1编译安装三部曲:
a 进行编译配置过程:
./configure --prefix=软件安装目录--prefix=PATH set installation prefix
指定软件程序安装目录
--user=USER set non-privileged user for worker processes
设置普通用户管理worker进程
--group=GROUP set non-privileged group for worker processes
设置普通用户管理worker进程
--with-http_ssl_module enable ngx_http_ssl_module
开启HTTPS功能
--with-http_stub_status_module enable ngx_http_stub_status_module
开启nginx程序状态模块功能(监控)???b 编译过程: 翻译
makec 编译安装过程:
make install
-
-
nginx软件配置方法:
两个配置文件:
/etc/nginx/nginx.conf
user www; --- 指定worker进程管理用户
master process 主进程: 控制服务是否处于运行状态 老板
worker process 工作进程: 真正处理用户访问请求进程 员工worker_processes 4; --- 指定worker进程数量 限制 worker进程数量 <= 服务器总的核心数
error_log /var/log/nginx/error.log debug; --- 指定一个错误日志保存路径
pid /var/run/nginx.pid; --- 记录master进程号码文件
events {
worker_connections 1024; --- 每个worker进程可以处理连接数(并发)
nginx总的并发连接数量=worker process*worker_connections < 系统打开文件数量(65534)
}
http {
include /etc/nginx/mime.types; --- 包含指令可以调取其他配置文件信息
媒体资源类型文件, 定义哪些数据类型属于静态资源
default_type application/octet-stream; --- 默认加载媒体资源类型
默认识别文件为octet-stream
log_format main 'remote_user [request" '
'body_bytes_sent "http_user_agent" "remote_addr [$time_local]'
--- 定义日志文件格式信息
access_log /var/log/nginx/access.log main; --- 日志文件保存路径
keepalive_timeout 65; --- 会话超时时间(长链接)
include /etc/nginx/conf.d/www.conf;
}主机区域配置:
事件配置区域: 性能参数配置
HTTP区域配置: 用户访问网站
server区域配置: 指定不同网站配置信息 www bbs blog
location区域配置: 根据不同uri进行管理
/etc/nginx/conf.d/default.conf
[root@web01 nginx]# cat /etc/nginx/conf.d/default.conf
server {
listen 80; --- 设置网站服务监听地址或者监听端口信息
server_name localhost; --- 定义网站域名信息 www
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;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
-
搭建一个简单静态网站:
第一个历程: 配置主配置文件
vim /etc/nginx/nginx.conf
include /etc/nginx/conf.d/www.conf;第二个历程: 编写扩展配置文件
vim /etc/nginx/conf.d/www.conf
server {
listen 80;
server_name www.oldboy.com;
root /html/www;
index index.html index.htm;
}第三个历程: 上传网站代码
第四个历程: 访问网站进行测试
搭建多个静态网站页面: 多个虚拟主机配置
www.oldboy.com 页面
bbs.oldboy.com 页面
blog.oldboy.com 页面第一个历程: 创建和编写多个不同网站扩展配置文件
cd /etc/nginx/conf.d/
touch www.conf bbs.conf blog.conf
[root@web01 conf.d]# cat www.conf bbs.conf blog.conf
server {
listen 80;
server_name www.oldboy.com;
root /html/www;
index index.html index.htm;
}
server {
listen 80;
server_name bbs.oldboy.com;
root /html/bbs;
index index.html;
}
server {
listen 80;
server_name blog.oldboy.com;
root /html/blog;
index index.html index.htm;
}第二个历程: 在主配置文件中加载所有扩展文件
vim /etc/nginx/nginx.conf
include /etc/nginx/conf.d/www.conf;
include /etc/nginx/conf.d/bbs.conf;
include /etc/nginx/conf.d/blog.conf;
nginx -t
systemctl restart nginx第三个历程: 创建不同站点目录和站点目录中文件信息
mkdir /html/{www,bbs,blog} -p
for name in {www,bbs,blog};do echo name/index.html;done -
网站访问方式
-
基于域名进行访问
www.jd.com -
基于端口进行访问
修改配置文件监听信息
listen 8080;www.oldboy.com ---> bbs.oldboy.com
用户访问nginx服务原理过程:
客户端:
用户访问网站(域名信息) --> 将域名做解析 --> 10.0.0.7
访问10.0.0.7 --> 10.0.0.7 80
服务端:
接收请求数据包 --> 10.0.0.7 80
查看HTTP数据包中请求信息: hosts: www.oldboy.comwww.oldboy.com 8080
bbs.oldboy.com 80 请求hosts 选择端口第一个匹配网站作出响应
blog.oldboy.com 80
-
基于地址进行访问
listen 172.16.1.7:80;
-
-
实现将web服务充当FTP服务器使用
第一个历程: 编写配置文件
server {
listen 80;
server_name duizhang.oldboy.org;
root /html/duizhang;
autoindex no;
}第二个历程: 创建站点目录并上传对账数据信息
mkdir /html/duizhang -
实现网站访问控制功能
-
基于用户地址进行控制
server {
listen 80;
server_name duizhang.oldboy.org;
root /html/duizhang;
autoindex on;
charset utf-8;
location / {
allow 10.0.0.0/24;
deny all;
}
}location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
} -
基于用户认证进行控制
第一个历程: 编写配置文件
location / {
auth_basic "closed site"; --- 开启认证功能
auth_basic_user_file conf/htpasswd; --- 加载用户认证密码文件
}server {
listen 80;
server_name duizhang.oldboy.org;
root /html/duizhang;
autoindex on;
charset utf-8;
auth_basic "oldboy";
auth_basic_user_file /etc/nginx/password;
}第二个历程: 如何创建密文密码文件
yum install httpd-tools -y
创建密码文件:
htpasswd -bc /etc/nginx/password oldboy oldboy123
添加用户信息:
htpasswd -b /etc/nginx/password oldgirl oldboy123
删除用户信息
htpasswd -D /etc/nginx/password oldgirl
-
-
查看网站服务状态信息
第一个历程: 编写状态模块配置文件
server {
listen 80;
server_name state.oldboy.com;
stub_status;
}第二个历程: 进行测试访问
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0- Active connections: 总的在线连接用户数量
- server accepts: 服务运行以后, 总共建立连接数量(接受)
- handled: 服务运行以后, 总共建立连接数量(处理)
- request: 服务运行以后, 总共HTTP请求数量
- reading: 正在读取请求头数量
- writing: 正在回复响应头数量
- Waiting: 正在等待处理请求信息
异步响应队列机制
-
网站服务日志信息
error.log --- 记录nginx服务错误异常情况
error_log /var/log/nginx/error.log debug;
错误级别:
debug 调试级别 输出信息比较全
info 信息级别
notice 通知级别
warn 劝告级别 ***
error 错误级别 ***
crit 严重级别
alert 非常严重级别
emerg 灾难级别 输出信息比较少access.log --- 记录用户访问信息
log_format main 'remote_user [request" '
'body_bytes_sent "http_user_agent" "$http_x_forwarded_for"';remote_user : 记录验证用户身份信息
request : 表示请求行信息
body_bytes_sent : 网站数据传输消耗流量信息
http_user_agent : 记录访问者客户端信息access_log /var/log/nginx/access.log main;
日志文件需要定期做切割处理:
for num in {01..100000};do cat /etc/service >>/tmp/oldboy.log;done!/bin/bash
日志文件重命名操作
mv access.log acccess.log_$(date +%F)
重启nginx服务生成新access.log
systemctl restart nginx