一.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/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_user [request" '
'body_bytes_sent "http_user_agent" "remote_addr # 记录客户端IP地址
time_local # 记录通用的本地时间
request # 记录请求的方法以及请求的http协议
body_bytes_sent # 发送给客户端的资源字节数,不包括响应头的大小
msec # 日志写入时间。单位为秒,精度是毫秒。
http_user_agent # 记录客户端浏览器相关信息
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没装上。。。。 一次性安装太多的东西没装上????
- 使用官方仓库安装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
配置Nginx进程运行用户
[root@nginx ~]# groupadd -g666 www
[root@nginx ~]# useradd -u666 -g666 www
[root@nginx ~]# sed -i '/^user/c user www;' /etc/nginx/nginx.conf启动Nginx,并将Nginx加入开机自启
[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx使用第三方扩展源安装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
配置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启动php-fpm,并将其加入开机自启
[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm安装Mariadb数据库
[root@nginx ~]# yum install mariadb-server mariadb -y启动Mariadb数据库, 并加入开机自动
[root@nginx ~]# systemctl start mariadb
[root@nginx ~]# systemctl enable mariadb给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
username = "root"
conn = mysqtl_connect(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高可用