整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript学习笔记(二十三)-服务器PHP

HP

  • PHP 一门后端语言
  • 为什么要学习一个后端语言呢?
    • 目前市场上的需求,要求前端人员掌握一个后端语言
    • 方便和后端开发人员进行交互

基本组织架构

  • 在讲后端语言之前,我们简单的了解一下我们基本的组织架构
  • 我们是一个 前端开发工程师
  • 还有一个工作叫做 后端开发工程师
  • 我们一个网站的组织架构基本上由下面的步骤完成
    • 用户 => 前端 => 后端 => 数据库


  • 整个过程中
    • 用户向前端人员要一个网页
    • 前端人员准备一个网页给用户,但是网页中的数据是找后端人员要的
    • 后端人员接受到前端人员要数据以后,去数据库里面找到对应的数据,给到前端人员
    • 前端人员拿到数据以后渲染在页面上
    • 最后把这个页面给到用户看


  • 比如: 我们浏览一个新闻网站
    • 用户输入网址
    • 前端人员就要把对应的页面给到用户,在页面打开的过程中,向后端人员索要新闻信息
    • 后端人员接收到前端人员索要新闻信息以后,就去数据库中找到对应的新闻信息数据给前端人员
    • 前端人员接收到后端人员给的新闻信息以后,使用我们的办法吧新闻信息数据渲染在页面上
    • 页面就打开了,用户就可以看到一个新闻网站了


  • 比如: 用户登陆一个网站
    • 当用户书写完表单内容以后,点击提交按钮的时候
    • 前端人员拿到用户填写的内容,把数据整合好传送给后端人员
    • 后端人员接收到数据以后,去数据库中进行比对,看看有没有对应的数据
    • 然后告诉前端人员,你给我的用户名和密码是否正确
    • 前端吧信息反馈给客户看到
      • 如果正确就是跳转页面
      • 如果不正确提示用户名或者密码有问题

服务器的简单理解

  • 我们不可能把数据库丢在用户的电脑上
  • 一个是太大,一个是不安全
  • 所以我们要把数据库放在网络的另一端(远程)
  • 所以当前端人员向后端人员索要数据的时候需要网络
  • 我们也不可能把页面也放在用户的电脑上
  • 所以用户也是需要网络来向前端人员所有页面

服务器的认识

  • 我们现在的市场上有一些常见的服务器可以承载内容
  • 我们目前比较常用的就是 Apache 和 Tomcat
  • 我们今天要学习的就是 Apache 服务器
  • 是一个和 php 语言合作比较紧密的一个服务器

到底什么是服务器

  • 其实说白了,服务器就是一个电脑,当他跑起来一些程序的时候,就变成了一个服务器
  • 只不过会跑一些特殊的程序,需要一些特殊的环境
  • 换句话说,我们自己的电脑,跑一些特殊的程序的时候,也可以当作一个小型的服务器来用
    • 只不过计算能力/存储能力/转存能力没有专业的服务器电脑厉害而已

服务器是怎么访问的呢

  • 涉及到我们的 url 地址中的一些内容了
  • 比如我们的经常访问的 www.baidu.com
  • 这个里面就包含很多的内容,我们看到的这个只是一个省略后的内容
  • 是浏览器帮我们省略掉了一些内容
  • 全部的地址应该是 https://www.baidu.com:443
  • 发现多了两个东西 https:// 和 :443
  • 其实一个简单的 url 地址是由三部分组成的
    • 传输协议
    • 域名
    • 端口号

传输协议

  • 我们常见的传输协议是 http 和 https
  • 他们是限制用户和服务器之间交流传输数据的方式和规则
  • 也是我们前端和后端人员交互的规则
  • 规则
    • 建立连接通道
    • 相互通信
    • 关闭连接通道
  • 只不过 http 是一种常见协议,不是很安全
  • https 是一种加密传输协议

域名

  • 之前我们说过,服务器就是一个在 网络那一头 的一个电脑
  • 以前,没有域名的概念,大家都是使用 IP 地址来访问
  • 也就是 网络那一头 的那个电脑的 IP
  • 都是一堆数字,不方便记忆
  • 后来就有了一个 万维网,他把每一个 IP 地址配套了一个英文的名字
  • 方便用户记忆
  • 所以说,域名就代表着 网络那一头 那个电脑的 IP 地址
  • 其实也就是我们要访问哪一个服务器

端口号

  • 人家的服务器电脑也是有很多的文件夹的
  • 不同的文件夹里面存储着不同的内容
  • 可能有个 a 文件夹,里面存储的是首页
  • 可能有个 b 文件夹,里面存储的是一些数据
  • 所以说,你光找到服务器电脑还不行,还得找对文件夹才可以
  • 大家都把文件夹编上号存储了 0 ~ 255 一共 256 个
  • 每个文件夹里面还有对应的小文件夹 0 ~ 255 一个 256 个
  • 那么一共就有 256 * 256 个文件夹,也就是从 0 ~ 65535
  • 所以我们的端口号就有 65536 个,分别对应着 0 ~ 65535
  • 大家都把 80 端口号作为一个网站的默认端口号
  • http 协议默认是 80 端口号
  • https 协议默认是 443 端口号

百度

  • 到现在,我们在看百度的完整 url 地址
  • https://www.baidu.com:443
    • 以一种加密传输协议来通讯
    • 访问的是网络上 IP 的值为 119.75.217.109 的那个电脑
    • 访问的是第 443 号文件夹
  • 这个文件夹里面存储着一个百度的页面
  • 我们就能看到这个页面了

PHP 基础语法

  • 我们一定要知道,php 是另一个语言了,不再是我们的 html / javascript 了
  • 一个别的语言就有人家语言的规则

php文件

  • 我们在写 javascript 的时候,是一个 .js 文件
  • 我们在写 html 的时候,是一个 .html 文件
  • php 的代码写在一个 .php 后缀的文件中

php文件的书写

  • 所有的 php 代码都要写在一个 php 的范围内
  • 要求以 <?php 开头
  • 要求以 ?> 结尾
<?php
 # php 的代码写在这里
?>

简单了解 php 的语法

  • 每个语言都会有自己的语法
  • 接下来我们就简单了解一下 php 的语法规则
  • php 里面有一个必须要注意的点 每一个语句后面都要有 ;

定义变量

  • 在 php 中没有 var 关键字给我们定义变量
  • 直接使用 $ 来确定一个变量
<?php
 # 下面就是一个定义了一个变量,并且赋值为 100
 # 变量名就是 $num
 $num = 100;
 $boo = true;
 # 下面是一个字符串
 $str = "你好 php";
?>

条件语句

  • 在 php 中使用条件语句和 js 基本一致
<?php
  
$boo = true;

if ($boo) {
  echo '你好,欢迎观临!';
} else {
  echo '您还没有登陆';
}  
  
?>

循环语句

  • 在 php 中循环语句和 js 基本一致
<?php

$num = 5;
  
for ($i = 0; $i < $num; $i++) {
  echo 'hello php';
}
  
?>

字符串拼接

  • 在 php 中,字符串拼接不再是使用 + 进行拼接了,而是使用 . 进行拼接
$str = 'hello ';
$str2 = 'world';
$str3 = $str . $str2;
echo $str3;
# 得到的就是 hello world

数组

  • 在 php 中的数组和 js 中特别不一样

认WordPress页面不能实现伪静态链接,比如:https://www.themebest.com/about.html,手动在链接中添加“.html”,会自动转码为"-html",但万能的WordPress,你能想到的功能都会有相应的插件帮你实现。

既然用插件可以实现,直接将插件中的代码集成到主题中同样也可以,代码提取自.html on PAGES插件,将下面代码添加主题functions.php中即可。

// 页面链接添加html后缀
add_action('init', 'html_page_permalink', -1);
function html_page_permalink() {
 global $wp_rewrite;
 if ( !strpos($wp_rewrite->get_page_permastruct(), '.html')){
 $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
 }
}

添加后,需要到固定链接设置页面,重新保存一下固定链接设置,否则不会生效。此代码适合伪静态的固定链接形式使用,比如:

/%postname%.html

/%post_id%.html

另外,如果同时使用了“给WordPress分类目录和页面添加斜杠”一文中的代码,还需要将该文中的代码修改为:

// 添加斜杠
function nice_trailingslashit($string, $type_of_url) {
 if ( $type_of_url != 'single' && $type_of_url != 'page' )
 $string = trailingslashit($string);
 return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);

排除页面文件,否则页面链接.html后面也会自动加上斜杠。

者:小不点啊

来源:www.cnblogs.com/leeSmall/p/9356535.html

一、Nginx Rewrite 规则


1. Nginx rewrite规则


Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好,提高收录量及排名等。


语法:


rewrite <regex> <replacement> [flag]
关键字 || 正则 || 替代内容 || flag标记


Rewrite规则的flag标记主要有以下几种:


  • last :相当于Apache里的(L)标记,表示完成rewrite;
  • break:本条规则匹配完成后,终止匹配,不再匹配后面的规则
  • redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址
  • permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址


last和break用来实现URL重写,浏览器地址栏URL地址不变


2. Nginx rewrite例子


a) 例如用户访问www.dbspread.com,想直接跳转到网站下面的某个页面,www.dbspread.com/new.index.html如何来实现呢?我们可以使用Nginx Rewrite 来实现这个需求,具体如下:在server中加入如下语句即可:


效果图如下:

                rewrite     ^/$    http://www.dbspread.com/new.index.html  permanent;
对应如下语法:
                rewrite    <regex>    <replacement>                 [flag];
                关键字      正则        替代内容                    flag标记

正则表达式说明:

*代表前面0或更多个字符                +代表前面1或更多个字符
?代表前面0或1个字符                  ^代表字符串的开始位置
$代表字符串结束的位置                 。为通配符,代表任何字符

b)例如多个域名跳转到同一个域名,nginx rewrite规则写法如下:


格式:

rewrite <regex> <replacement> [flag];
关键字 || 正则 || 替代内容 || flag标记


说明:


  • rewrite为固定关键字,表示开始进行rewrite匹配规则、
  • regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址
  • replacement部分是http://www.dbspread.com/,是取自regex部分( )里的内容。匹配成功后跳转到的URL。
  • flag部分 permanent表示永久301重定向标记,即跳转到新的 http://www.dbspread.com/ 地址上



二、Nginx 防盗链


1. 什么是防盗链


比如http://www.dbspread.com/download/av123.rmvb 这个视频下载地址被其他网站引用,比如在www.test.com的index.html引用download/av123.rmvb就叫盗链,我们要禁止这种引用就叫做防盗链



2. 怎么实现防盗链


在nginx的nginx.conf的server里面配置如下代码


三、Nginx 动静分离

1. 动静分离是什么

Nginx动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

2. 动静分离原理图

3. Nginx动静分离应该注意的地方

1). WEB项目开发时要注意,将静态资源尽量放在一个static文件夹2). 将static静态资源文件夹放到Nginx可以取到的位置3). 页面要建立全局变量路径,方便修改路径4). 修改nginx.conf的location, 匹配静态资源请求

4. Nginx动静分离步骤

4.1 准备一个静态资源button.css

body {
    margin: 10px 20px;
    text-align: center;
    font-family: Arial, sans-serif;
    background-color: red;
}

4.2 在/var/local下新建一个static文件夹用来存放静态资源button.css

4.3 在tomcat-8080/webapps/ROOT下的index.html里面引入button.css


4.4 在nginx的nginx.conf中server节点新增静态资源分离的配置


对于Nginx基础配置,推荐之前的:后端实践:Nginx日志配置(超详细)

4.5 访问页面查看效果

四、Nginx+keepalived 实现高可用

1. keepalived是什么

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件

2. keepalived主要功能

管理LVS负载均衡软件实现LVS集群节点的健康检查作为系统网络服务的高可用性(failover)

3. keepalived故障转移

Keepalived高可用服务之间的故障切换转移,是通过 VRRP 来实现的。在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

说明:keepalived的主从切换和redis的主从切换是不一样的,keepalived的主节点挂了以后,从节点变为主节点,之前的主节点恢复以后继续做主节点。redis的主节点挂了以后,重新恢复以后变为从节点

4. keepalived高可用架构示意图

说明:

虚拟ip(VIP):192.168.152.200,对外提供服务的ip,也可称作浮动ip192.168.152.130:nginx + keepalived master 主192.168.152.129:nginx + keepalived backup 从192.168.152.129:tomcat-8080192.168.152.129:tomcat-8081

5. keepalived安装

环境准备:

centos6、jdk

虚拟ip(VIP):192.168.152.200,对外提供服务的ip,也可称作浮动ip
192.168.152.130:nginx + keepalived master 主
192.168.152.129:nginx + keepalived backup 从
192.168.152.129:tomcat-8080
192.168.152.129:tomcat-8081

nginx和tomcat的环境准备请查看我的前一篇关于nginx的文章

5.1 安装keepalived的步骤:

注:192.168.152.129(keepalived从节点) 与 192.168.152.130(keepalived主节点)先安装好nginx + keepalived

下载压缩包:

wget www.keepalived.org/software/keepalived-1.3.5.tar.gz

解压缩:

tar -zxvf keepalived-1.3.5.tar.gz

进入解压缩以后的文件目录:

cd keepalived-1.3.5

编译安装:./configure --prefix=/usr/local/keepalived系统提示警告 *** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.yum -y install libnl libnl-devel再次执行./configure --prefix=/usr/local/keepalived系统提示错误 configure: error: libnfnetlink headers missingyum install -y libnfnetlink-devel再次执行./configure --prefix=/usr/local/keepalived

make && make install

到此keepalived安装完成,但是接下来还有最关键的一步,如果这一步没有做后面启动keepalived的时候会报找不到配置文件的错误

Configuration file '/etc/keepalived/keepalived.conf' is not a regular non-executable file

安装完成后,进入安装目录的etc目录下,将keepalived相应的配置文件拷贝到系统相应的目录当中。keepalived启动时会从/etc/keepalived目录下查找keepalived.conf配置文件

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived

5.2 修改keepalived主节点192.168.152.130的/etc/keepalived/keepalived.conf配置文件


5.3 修改keepalived从节点192.168.152.129的/etc/keepalived/keepalived.conf配置文件

5.4 检查nginx是否启动的shell脚本


/usr/local/src/check_nginx_pid.sh

#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        
      /usr/local/nginx/sbin/nginx                #重启nginx
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived                    
      fi
fi


5.5 192.168.152.130(keepalived主节点)和 192.168.152.129(keepalived从节点)的nginx的配置文件nginx.conf

user root root; #使用什么用户启动NGINX 在运行时使用哪个用户哪个组
worker_processes 4; #启动进程数,一般是1或8个,根据你的电脑CPU数,一般8个
worker_cpu_affinity 00000001 00000010 00000100 00001000; #CPU逻辑数——把每个进程分别绑在CPU上面,为每个进程分配一个CPU
#pid /usr/local/nginx/logs/nginx.pid
worker_rlimit_nofile 102400; #一个进程打开的最大文件数目,与NGINX并发连接有关系

#工作模式及连接数上限
events
{
  use epoll; #多路复用IO 基于LINUX2.6以上内核,可以大大提高NGINX的性能 uname -a查看内核版本号
  worker_connections 102400; #单个worker process最大连接数,其中NGINX最大连接数=连接数*进程数,一般1GB内存的机器上可以打开的最大数大约是10万左右
  multi_accept on;   #尽可能多的接受请求,默认是关闭状态
}

#处理http请求的一个应用配置段
http
{
  #引用mime.types,这个类型定义了很多,当web服务器收到静态的资源文件请求时,依据请求文件的后缀名在服务器的MIME配置文件中找到对应的MIME #Type,根据MIMETYPE设置并response响应类型(Content-type)
  include       mime.types; 
  default_type  application/octet-stream; #定义的数据流,有的时候默认类型可以指定为text,这跟我们的网页发布还是资源下载是有关系的
  fastcgi_intercept_errors on; #表示接收fastcgi输出的http 1.0 response code
  charset utf-8;
  server_names_hash_bucket_size 128; #保存服务器名字的hash表
  #用来缓存请求头信息的,容量4K,如果header头信息请求超过了,nginx会直接返回400错误,先根据client_header_buffer_size配置的值分配一个buffer,如果##分配的buffer无法容纳request_line/request_header,那么就会##再次根据large_client_header_buffers配置的参数分配large_buffer,如果large_buffer还是无#法容纳,那么就会返回414(处理request_line)/400(处理request_header)错误。
  client_header_buffer_size 4k; 
  large_client_header_buffers 4 32k;
  client_max_body_size 300m; #允许客户端请求的最大单文件字节数 上传文件时根据需求设置这个参数
  #指定NGINX是否调用这个函数来输出文件,对于普通的文件我们必须设置为ON,如果NGINX专门做为一个下载端的话可以关掉,好处是降低磁盘与网络的IO处理数及#系统的UPTIME
  sendfile on; 
  #autoindex on;开启目录列表访问,适合下载服务器
  tcp_nopush on; #防止网络阻塞
  #非常重要,根据实际情况设置值,超时时间,客户端到服务端的连接持续有效时间,60秒内可避免重新建立连接,时间也不能设太长,太长的话,若请求数10000##,都占用连接会把服务托死
  keepalive_timeout 60;
  tcp_nodelay on; #提高数据的实时响应性
  client_body_buffer_size 512k; #缓冲区代理缓冲用户端请求的最大字节数(请求多)

  proxy_connect_timeout   5; #nginx跟后端服务器连接超时时间(代理连接超时)
  proxy_read_timeout      60; #连接成功后,后端服务器响应时间(代理接收超时)
  proxy_send_timeout      5; #后端服务器数据回传时间(代理发送超时)
  proxy_buffer_size       16k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
  proxy_buffers           4 64k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
  proxy_busy_buffers_size 128k; #高负荷下缓冲大小
  proxy_temp_file_write_size 128k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

  gzip on; #NGINX可以压缩静态资源,比如我的静态资源有10M,压缩后只有2M,那么浏览器下载的就少了
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.1;
  gzip_comp_level 2; #压缩级别大小,最小1,最大9.值越小,压缩后比例越小,CPU处理更快,为1时,原10M压缩完后8M,但设为9时,压缩完可能只有2M了。一般设置为2
  gzip_types       text/plain application/x-javascript text/css application/xml; #压缩类型:text,js css xml 都会被压缩
  gzip_vary on; #作用是在http响应中增加一行目的是改变反向代理服务器的缓存策略

#日志格式 
log_format  main '$remote_addr - $remote_user [$time_local] "$request" ' #ip 远程用户 当地时间  请求URL
                 '$status $body_bytes_sent "$http_referer" ' #状态  发送的大小  响应的头
         '"$http_user_agent" $request_time'; #客户端使用的浏览器  页面响应的时间

#动态转发         
upstream web1 {
    #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。配置了ip_hash就没有负载均衡的效果了,每次访问的都是同一个tomcat
    #ip_hash; 
    #转发的后端的tomcat服务器,weight表示转发的权重,越大转发的次数越多,机器性能不一样配置的weight值不一样     
     server   192.168.152.129:8080 weight=1 max_fails=2 fail_timeout=30s;
     server   192.168.152.129:8081 weight=1 max_fails=2 fail_timeout=30s;
}
upstream web2 {
     server   192.168.152.129:8090 weight=1 max_fails=2 fail_timeout=30s;
     server   192.168.152.129:8091 weight=1 max_fails=2 fail_timeout=30s;
}

server {
    listen       80; #监听80端口
    server_name  www.dbspread.com; #域名
    #rewrite规则
    index  index.jsp index.html index.htm;
    root   /usr/local/nginx/html; #定义服务器的默认网站根目录位置
    #重定向
    if ($host != 'www.dbspread.com' ){ 
            rewrite ^/(.*)$  http://www.dbspread.com/$1  permanent;
            }

    #防盗链
     location ~* \.(rmvb|jpg|png|swf|flv)$ { #rmvb|jpg|png|swf|flv表示对rmvb|jpg|png|swf|flv后缀的文件实行防盗链
                valid_referers none blocked  www.dbspread.com; #表示对www.dbspread.com此域名开通白名单,比如在www.test.com的index.html引用download/av123.rmvb,无效
                root   html/b;
                if ($invalid_referer) { #如果请求不是从www.dbspread.com白名单发出来的请求,直接重定向到403.html这个页面或者返回403 
                     #rewrite ^/ http://www.dbspread.com/403.html;
                     return 403;
                }
        }

    #监听完成以后通过斜杆(/)拦截请求转发到后端的tomcat服务器
    location / 
        {
            #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_set_header Host  $host; #获取客户端的主机名存到变量Host里面,从而让tomcat取到客户端机器的信息
            proxy_set_header X-Real-IP $remote_addr; #获取客户端的主机名存到变量X-Real-IP里面,从而让tomcat取到客户端机器的信息
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #rewrite     ^/$    http://www.dbspread.com/new.index.html  permanent;#用户访问www.dbspread.com,想直接跳转到网站下面的某个页面:www.dbspread.com/new.index.html
            proxy_pass http://web1; #跳转到对应的应用web1
        }

       # location ~ .*\.(php|jsp|cgi|shtml)?$ #动态分离 ~匹配 以.*结尾(以PHP JSP结尾走这段)
       #  {
       #     proxy_set_header Host  $host;
       #        proxy_set_header X-Real-IP $remote_addr;
       #        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       #        proxy_pass http://jvm_web2;
       # }

        #静态分离 ~匹配 以.*结尾(以html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css结尾走这段),当然不是越久越好,如果有10000个用户在线,都保存几个月,系统托跨
        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ 
        {
            root /var/local/static; #静态资源存放在nginx的安装机器上
            #proxy_pass http://www.static.com; #静态资源也可存放在远程服务器上
            expires    30d;
        }

        #日志级别有[debug|info|notice|warn|error|crit]  error_log 级别分为 debug, info, notice, warn, error, crit  默认为crit, 生产环境用error 
        #crit 记录的日志最少,而debug记录的日志最多
        access_log  /usr/local/logs/web2/access.log main;
        error_log   /usr/local/logs/web2/error.log  crit;

    }


}


到这一步环境准备已完成,相关的配置也修改完成,下面我们来查看效果


5.6 配置hosts域名映射


192.168.152.200  www.dbspread.com

注意:这里192.168.152.200 是keepalived里面virtual_ipaddress配置的虚拟ip

 virtual_ipaddress {
        192.168.152.200 # 定义虚拟ip(VIP),可多设,每行一个
    }


到这一步环境准备已完成,相关的配置也修改完成,下面我们来查看效果


5.7 分别启动192.168.152.129的两个tomcat


5.8 分别启动192.168.152.130(keepalived主节点)和

192.168.152.129(keepalived从节点)的keepalived的

启动命令:


/usr/local/keepalived/sbin/keepalived  

可以看到keepalived和nginx都启动了

在浏览器输入www.dpspread.com域名访问

5.9 下面我们停掉主节点192.168.152.130的keepalived和nginx

可以看到从节点变为主节点了

在浏览器输入地址www.dpspread.com访问,可以看到访问正常

5.10 下面我们重新启动主节点192.168.152.130

可以看到主节点重新启动以后变为主节点了

之前变为主节点的从节点又变回从节点了

到此keepalived+nginx的高可用完美完成