day09

一.http协议

http:// www.qq.com :80 /news/index.html
协议 域名:端口 文件的具体路径
www.xuliangwei.com http://www.xuliangwei,com:80/
https://search.jd.com/Search?
keyword=ansible & enc=utf-8 &

http就是一个通讯协议,应用层协议(主要是客户端浏览器与服务端进行交换数据的一种基础。)

url地址,一个图片、或者一个页面。
将url地址组织在一起,形成一个页面。webpage

http协议版本
http0.9
http1.0 短连接 一次tcp连接,建立一次http请求与响应,然后断开tcp连接。
http1.1 长连接 一次tcp连接,可以建立多次http的请求与响应。
http2.0 一次tcp连接,可以同时发起多次http的请求与响应。
http3.0

http请求
GET 获取web服务器上的资源 (查看朋友圈)
POST 提交资源至web服务器 (发表朋友圈)

http协议是一个无状态的协议,页面与页面之间没有任何的关系

概述
Request URL: https://www.xuliangwei.com/ 请求的URL地址
Request Method: GET 请求的方法
Status Code: 200 状态码
Remote Address: 153.3.231.225:443 远程主机的IP地址+端口

http请求的header
:authority: www.xuliangwei.com #请求的主机
:method: GET #请求的方法
:path: / #请求的路径
:scheme: https
Accept: text/html, 请求类型
Accept-Encoding: gzip, deflate 压缩
Accept-Language: zh-CN,zh;q=0.9 编码格式
Connection: keep-alive 保持连接 长连接
Upgrade-Insecure-Requests: 1 在https的网站中存在http的资源
User-Agent: Chrome/65.0.3325.181 用户的终端设备
Cookie 接收到set-cookid存储至浏览器的cookie中,然后下次请求该网站会携带

http响应hader
Connection: keep-alive 长连接
Content-Encoding: gzip gzip压缩
Content-Type: text/html; charset=utf8,gbk 告诉客户端该页面是什么类型(是由服务器端的mime.types文件决定)
Date: Sun, 17 Mar 2019 02:36:27 GMT 时间 +8小时
Server: nginx 服务器使用的web软件
Transfer-Encoding: chunked
Vary: Accept-Encoding
Location 返回真实的URL地址
Set-Cookie 服务端返回的sessionID(当前域名)
ETag: W/"5b17ea49-1609" etag 控制缓存
Last-Modified: Wed, 06 Jun 2018 14:06:01 GMT 文件最后的修改时间

http响应状态码
1xx
200 成功请求到页面
301 永久跳转 将http跳转至https
302 临时跳转
304 Not Modified 缓存
403 Forbidden 服务器无法返回默认主页、权限不足
404 Not Found 用户请求的资源不存在
500 服务器内部错误,可能是程序代码错误,也可能是程序连接数据库错误
502 找不到后端资源(非常的多,出现频率极高)
503 服务器过载
504 后端资源超时


nginx

web服务产品
nginx
apache
iis 微软
tomcat 运行jsp
tengine 淘宝开发
openresty
lighttpd

1.安装Nginx软件所需依赖包
[root@web ~]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree

2.配置nginx官方 yum源
[root@web ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/releasever/basearch/
gpgcheck=0
enabled=1

3.安装Nginx服务,启动并加入开机自启
[root@web ~]# yum install nginx -y
[root@web ~]# systemctl enable nginx
[root@web ~]# systemctl start nginx

4.检查是否启动nginx
[root@web01 ~]# netstat -lntp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2346/nginx: master

http {
include /etc/nginx/mime.types; #处理文件的类型
default_type application/octet-stream; #如果mime.types里面没有该文件的类型,传输给浏览器,浏览器使用下载的方式

#日志的格式 
log_format  main  '$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  main;

#A网站
server {
    listen 80;
    server_name blog.oldboy.com;        http://     blog.oldboy.com  :80    /
    
    location / {
        root /code/blog;                    #网站的目录在哪个位置
        index index.html;               #默认返回什么文件给浏览器
    }
}

B网站
server {
    listen 80;
    server_name www.oldboy.com;     http://     www.oldboy.com  :80    /
    
    location / {
        root /code/www;                 #网站的目录在哪个位置
        index index.html;           #默认返回什么文件给浏览器
    }
}

include /etc/nginx/conf.d/*.conf;

}

http server location扩展了解项
http下允许有多个Server,一个Server下又允许有多个Location
http{} 标签主要用来解决用户的请求与响应。
server{} 标签主要用来响应具体的某一个网站。
location{} 标签主要用于匹配网站具体URL路径。

nginx网站配置
[root@web01 conf.d]# cat game.oldboy.com.conf
server {
listen 80;
server_name game.oldboy.com;

location / {
    root /code;
    index index.html;
}

}

2.创建目录
[root@web01 conf.d]# mkdir /code
[root@web01 conf.d]# cd /code
[root@web01 conf.d]# rz html5.zip
[root@web01 conf.d]# unzip html5.zip

3.检查Nginx语法
[root@web01 code]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4.重载nginx服务
[root@web01 code]# systemctl reload nginx #重载服务
[root@web01 code]# systemctl restart nginx #重启服务

5.域名解析(本地的,假域名解析)
windows
C:\Windows\System32\drivers\etc hosts文件
10.0.0.7 game.oldboy.com
Mac
/etc/hosts

C:\Users\Administrator>ping game.oldboy.com
来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64

http://game.oldboy.com / game/jg/index.html
/code/game/jg/index.html

虚拟主机:就是在一台服务器上面运行多个网站,网站之间互相不影响

Nginx配置虚拟主机有如下三种方式:

方式一、基于主机多IP方式
[root@web01 conf.d]# cat ip.conf
server {
listen 10.0.0.7:80;

location / {
    root /code/ipa;
    index index.html;
}

}

server {
listen 172.16.1.7:80;

location / {
    root /code/ipb;
    index index.html;
}

}

[root@web01 conf.d]# mkdir /code/{ipa,ipb} -p
[root@web01 conf.d]# echo "ipa_10" > /code/ipa/index.html
[root@web01 conf.d]# echo "ipb_172" > /code/ipb/index.html
[
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl reload nginx

访问测试

[root@web01 conf.d]# curl 10.0.0.7
ipa_10
[root@web01 conf.d]# curl 172.16.1.7
ipb_172

方式二、基于端口的配置方式
[root@web01 conf.d]# cat port.conf
server {
listen 81;

location / {
    root /code/81;
    index index.html;
}

}

server {
listen 82;

location / {
    root /code/82;
    index index.html;
}

}

[root@web01 conf.d]# mkdir /code/{81,82} -p
[root@web01 conf.d]# echo "port 81" > /code/81/index.html
[root@web01 conf.d]# echo "port 82" > /code/82/index.html
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl reload nginx

方式三、基于多个hosts名称方式(多域名方式) 生产最多的方式
1.配置nginx
[root@web01 conf.d]# cat server1.oldboy.com.conf
server {
listen 80;
server_name server1.oldboy.com;

location / {
    root /code/server1;
    index index.html test.html;
}

}

[root@web01 conf.d]# cat server2.oldboy.com.conf
server {
listen 80;
server_name server2.oldboy.com;

location / {
    root /code/server2;
    index index.html test.html;
}

}

2.准备站点目录
[root@web01 conf.d]# mkdir /code/server1
[root@web01 conf.d]# mkdir /code/server2
[root@web01 conf.d]# echo "server1" > /code/server1/index.html
[root@web01 conf.d]# echo "server2" > /code/server2/index.html

3.监测语法并且重载服务
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl reload nginx

4.配置解析

1.log_format定义日志格式语法

配置语法: 包括: error.log access.log

Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http
2.默认Nginx定义语法格式如下

log_format main 'remote_addr -remote_user [time_local] "request" '
'statusbody_bytes_sent "http_referer" ' '"http_user_agent" "http_x_forwarded_for"'; 3.Nginx日志格式允许包含的内置变量remote_addr # 记录客户端IP地址
remote_user # 记录客户端用户名time_local # 记录通用的本地时间
time_iso8601 # 记录ISO8601标准格式下的本地时间request # 记录请求的方法以及请求的http协议
status # 记录请求状态码(用于定位错误信息)body_bytes_sent # 发送给客户端的资源字节数,不包括响应头的大小
bytes_sent # 发送给客户端的总字节数msec # 日志写入时间。单位为秒,精度是毫秒。
http_referer # 记录从哪个页面链接访问过来的http_user_agent # 记录客户端浏览器相关信息
http_x_forwarded_for #记录客户端IP地址request_length # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time # 请求花费的时间,单位为秒,精度毫秒

注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址。

$remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,

增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。

http access_log 所有的网站日志都写到这里面(前提是server网站没有配置access_log)
server access_log 当前的网站以自己写的access_log为准
location 不建议,建议使用access_log off;

game.oldboy.com.log --》 mv game.oldboy.com.log game.oldboy.com.2019_03_18.log

1.日志怎么定义
2.日志在哪个区域使用 http server location 之间的优先级
3.日志切割

lnmp架构、博客、知乎、视频

(安装PHP环境:
1.安装php
yum -y install php

2.php各项服务安装:
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-mysql
)

出现的问题:php-mysql没装上。。。。 一次性安装太多的东西没装上????

  1. 使用官方仓库安装Nginx
    [root@nginx ~]# cat /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1

安装Nginx

[root@nginx ~]# yum install nginx -y

  1. 配置Nginx进程运行用户
    [root@nginx ~]# groupadd -g666 www
    [root@nginx ~]# useradd -u666 -g666 www
    [root@nginx ~]# sed -i '/^user/c user www;' /etc/nginx/nginx.conf

  2. 启动Nginx,并将Nginx加入开机自启
    [root@nginx ~]# systemctl start nginx
    [root@nginx ~]# systemctl enable nginx

  3. 使用第三方扩展源安装php7.1
    [root@nginx ~]# yum remove php-mysql-5.4 php php-fpm php-common -y
    上面不行就使用这个:yum install php-mysql-5.4 php php-fpm php-common -y

[root@nginx ~]# vim /etc/yum.repos.d/php.repo

[webtatic-php]
name = php Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0

[root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt
php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis
php71w-pecl-mongodb

  1. 配置php-fpm用户与Nginx的运行用户保持一致
    [root@nginx ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
    [root@nginx ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

  2. 启动php-fpm,并将其加入开机自启
    [root@nginx ~]# systemctl start php-fpm
    [root@nginx ~]# systemctl enable php-fpm

  3. 安装Mariadb数据库
    [root@nginx ~]# yum install mariadb-server mariadb -y

  4. 启动Mariadb数据库, 并加入开机自动
    [root@nginx ~]# systemctl start mariadb
    [root@nginx ~]# systemctl enable mariadb

  5. 给Mariadb配置登陆密码,并是新密码进行登录数据库
    [root@nginx ~]# mysqladmin password 'Bgx123.com'
    [root@nginx ~]# mysql -uroot -pBgx123.com


[root@web01 conf.d]# cat info.conf
server {
listen 80;
server_name info.oldboy.com;
access_log /var/log/nginx/info.log main;
root /code;

#通用匹配,所有请求都匹配,但是优先级比较的低
location / {
    index index.php;
}

#正则匹配方式,匹配以.php结尾的,优先级比/的要高
location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

}
2.php的函数,打印php相关的信息
[root@web01 conf.d]# cat /code/info.php
<?php
phpinfo();
?>

3.检查语法,重载服务
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl reload nginx

4.配置域名解析

5.打开浏览器访问
<?php
servername = "localhost";username = "root"
password = "Bgx123.com"; //创建连接conn = mysqtl_connect(servername,username,$password);

//检测连接
if(!$conn) {
    die("Connection failed".mysql_connect_error());
    
}
echo "php数据库连接正常";
?>

discuz 可以不玩

edusoho 视频站点(坑)
zblog 作业
phpmyadmin 作业
wecenter 作业
wordpress 博客系统
kodcloud

1.部署wordpress
[root@web01 /]# cat /etc/nginx/conf.d/blog.oldboy.com.conf
server {
listen 80;
server_name blog.oldboy.com;
root /code/wordpress;

location / {
    index index.php;
}

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

}

[root@web01 code]# systemctl reload nginx

2.创建站点目录,并且上传程序代码
[root@web01 /]# mkdir /code
[root@web01 /]# cd /code
[root@web01 code]# wget https://cn.wordpress.org/latest-zh_CN.zip
[root@web01 code]# chown -R www.www /code/wordpress
3.配置域名的解析

4.创建一个数据库
[root@web01 code]# mysql -uroot -pBgx123.com
MariaDB [(none)]> create database wordpress;

5.通过浏览器访问即可

----------上传主题时出现 413 Request Entity Too Large
client_max_body_size 2m; #添加该参数


部署可道云,私有网盘

[root@web01 ~]# cat /etc/nginx/conf.d/kod.oldboy.com.conf
server {
listen 80;
server_name kod.oldboy.com;
root /code/kod;
client_max_body_size 200m;

location / {
    index index.php;
}

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

}

[root@web01 ~]# mkdir /code/kod && cd /code/kod
[root@web01 kod]# wget http://static.kodcloud.com/update/download/kodexplorer4.39.zip
[root@web01 kod]# unzip kodexplorer4.39.zip
[root@web01 kod]# chown -R www.www ./
[root@web01 kod]# chmod -Rf 777 ./*


部署phpmyaadmin wecenter、 作业

http协议
URL地址组成部分
Http工作原理
Http协议版本
http1.0 1.1 2.0
Http请求方法
GET
POST
Http请求报文
Http响应报文
Http其他的报文
referer
User_Agent
cookid session

Nginx
安装方式
nginx目录结构
Nginx主配置文件都有什么内容
Nginx部署游戏页面、Nginx路径匹配规则
Nginx虚拟主机(IP、端口、域名)
Nginx日志、访问日志、格式定义、关闭日志记录、日志应用区域、日志切割

LNMP
LNMP组成
LNMP实现原理
LNMP安装、配置Nginx与PHP 配置PHP与MYSQL
LNMP部署wordpress、kod、........

拆分数据库和存储
如何扩展多台web节点
nginx代理与nginx负载均衡
nginxrewrite
nginxhttps
nginx高可用

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容