LNMP动静分离&&memcache缓存服务器

博文大纲:
一、MemCache简介

  • 1、协议
  • 2、事件处理
  • 3、存储方式
  • 4、通信分布式
  • 5、memcached的应用场景
  • 6、memcached应用中的工作流程
  • 7、memcached的一致性Hash算法
    二、部署LNMP动静分离&&memcache缓存服务器
  • 1、环境准备
  • 2、部署Nginx服务器
  • 3、部署PHP服务器
  • 4、部署MySQL数据库
  • 5、部署Memcached服务器
  • 6、部署memcache客户端
  • 7、使用 memcache 实现 session 共享
  • 8、测试memcached缓存数据库

一、MemCache简介

MemCache 是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe 是一个存储键值对的 HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的 key-value 存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache 设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的 API 使得 MemCache用于 Java、C/C++/C#、Perl、Python、PHP、Ruby 等大部分流行的程序语言。
另外,说一下为什么会有 Memcache 和 memcached 两种名称?其实 Memcache 是这个项目的名称(也时它客户端的名称),而 memcached 是它服务器端的主程序文件名。

memcached是一个键/值系统,系统相对于MySQL简单很多,虽然MySQL也有缓存,但是数据库的SQL解析会耗费性能,查询慢于memcached,另外MySQL的缓存设计得更加复杂,因为要考虑事务,日志,存储引擎等模块,它的性能也没有memcached好。

memcached只做一件事情,简单高效,在cache上比MySQL强,这应该容易理解。

memcached作为高速运行的分布式缓存服务器,具有以下的特点:

  • 协议简单;
  • 基于libevent的事件处理;
  • 内置内存存储方式;
  • memcached不互相通信的分布式。

1、协议

memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。
因此,通过telnet也能在memcached上保存数据、取得数据。

2、事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。

3、存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

4、通信分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。

5、memcached的应用场景

1)数据库的前端缓存应用:让它来分担数据的并发压力,当数据更新时,可以使程序通知缓存进行更新
2)session会话共享的共享存储

6、memcached应用中的工作流程

它是一种内存缓存,可通过API的方式读取内存中缓存的这些数据,当用户需要读取数据时,会首先访问memcached缓存,如果缓存中有数据就直接返回给前端的应用程序,如果没有,再转发给后台端的服务器,这时服务器除了返回数据给用户,就会将数据更新给memcached缓存。

如果实际生产环境中,缓存服务器需要重启(或者断电),那么缓存中的数据将会丢失,那么这时替换的服务器并发压力会扩大,可能会导致引入的服务器也跟着停机,无法提供服务,那么这时我们的处理流程是这样的:
首先从负载均衡中将WEB应用停掉- - - >让负载均衡不再转发数据给WEB - - >接着启动缓存服务器- - - - > 通过程序把数据库的内容初始化到缓存服务器中- - - - >然后将网页应用启用- - - - >重启数据库服务器

7、memcached的一致性Hash算法

一致性 Hash 算法通过一个叫做一致性 Hash 环的数据结构实现 Key 到缓存服务器的 Hash 映射。简单地说,一致性哈希将整个哈希值空间组织成一个虚拟的圆环(这个环被称为一致性Hash 环),如假设某空间哈希函数 H 的值空间是 0~2^ 32 -1(即哈希值是一个 32 位无符号整型),整个哈希空间如下:

LNMP动静分离&&memcache缓存服务器

下一步将各个服务器使用 H 进行一个哈希计算,具体可以使用服务器的 IP 地址或者主机名作为关键字,这样每台机器能确定其在上面的哈希环上的位置了,并且是按照顺时针排列,这里我们假设三台节点 memcache经计算后位置如下:

LNMP动静分离&&memcache缓存服务器

接下来使用相同算法计算出数据的哈希值 h,并由此确定数据在此哈希环上的位置。假如我们有数据 A、B、C、D、4 个对象,经过哈希计算后位置如下:

LNMP动静分离&&memcache缓存服务器

根据一致性哈希算法,数据 A 就被绑定到了 server01 上,D 被绑定到了 server02 上,B、C在 server03 上,是按照顺时针找最近服务节点方法。

这样得到的哈希环调度方法,有很高的容错性和可扩展性:
假设 server03 宕机:

LNMP动静分离&&memcache缓存服务器

可以看到此时 C、B 会受到影响,将 B、C 节点被重定位到 Server01。一般的,在一致性哈希算法中,如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器(即顺着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。
考虑另外一种情况,如果我们在系统中增加一台服务器 Memcached Server 04:

LNMP动静分离&&memcache缓存服务器


此时 A、D、C 不受影响,只有 B 需要重定位到新的 Server04。一般的,在一致性哈希算法中,如果增加一台服务器,则受影响的数据仅仅是新服务器到其环空间中前一台服务器(即顺着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。

综上所述,一致性哈希算法对于节点的增减都只需重定位环空间中的一小部分数据,具有较好的容错性和可扩展性。
一致性哈希的缺点:在服务节点太少时,容易因为节点分部不均匀而造成数据倾斜问题。我们可以采用增加虚拟节点的方式解决。
更重要的是,集群中缓存服务器节点越多,增加/减少节点带来的影响越小,很好理解。换句话说,随着集群规模的增大,继续命中原有缓存数据的概率会越来越大,虽然仍然有小部分数据缓存在服务器中不能被读到,但是这个比例足够小,即使访问数据库,也不会对数据库造成致命的负载压力。

二、部署LNMP动静分离&&memcache缓存服务器

1、环境准备

LNMP动静分离&&memcache缓存服务器

下载我提供的源码包,并将对应的源码包上传至各个服务器。

2、部署Nginx服务器

[root@nginx ~]# yum -y erase httpd     #卸载自带的httpd服务
[root@nginx ~]# yum -y install openssl-devel pcre-devel    #安装所需依赖
[root@nginx ~]# cd /usr/src
[root@nginx src]# rz           #上传Nginx源码包
[root@nginx src]# tar zxf nginx-1.14.0.tar.gz
[root@nginx src]# cd nginx-1.14.0/
[root@nginx nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --user=www --group=www && make && make install
#进行编译安装
[root@nginx nginx-1.14.0]# useradd -M -s /sbin/nologin www   #创建运行用户
[root@nginx nginx-1.14.0]# ln -sf /usr/local/nginx/sbin/nginx /usr/local/sbin/    #对命令做软链接
[root@nginx nginx-1.14.0]# nginx     #启动Nginx服务
[root@nginx nginx-1.14.0]# netstat -anput | grep 80     #确定80端口在监听
#以下是配置nginx与PHP服务器关联
[root@nginx nginx-1.14.0]# cd /usr/local/nginx/conf/
[root@nginx conf]# vim nginx.conf   #编辑主配置文件
#在server{  }字段中添加以下内容
        location ~ \.php$ {            root           /var/www/html;      #指定PHP服务器的网页存放路径   
            fastcgi_pass   192.168.20.3:9000;    #指定PHP服务器监听端口
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
#更改完成后,保存退出即可
[root@nginx conf]# nginx -s reload      #重启使更改生效

3、部署PHP服务器

[root@php ~]# rz    #上传源码包libmcrypt及php-5.6.27
[root@php ~]# tar zxf libmcrypt-2.5.7.tar.gz -C /usr/src    #解包
[root@php ~]# tar zxf php-5.6.27.tar.gz -C /usr/src    #解包
[root@php ~]# yum -y install libxml2-devel openssl-devel bzip2-devel    #安装依赖
[root@php ~]# cd /usr/src/libmcrypt-2.5.7       #切换至解压后的路径
[root@php libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
#编辑安装
[root@php libmcrypt-2.5.7]# cd ../php-5.6.27/       #进入PHP源码包解压后的路径
[root@php php-5.6.27]# ./configure  --prefix=/usr/local/php5.6  --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr  --enable-xml  --with-mhash  --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc  --with-config-file-scan-dir=/etc/php.d  --with-bz2 --enable-maintainer-zts && make && make install
#编译安装PHP
#接下来为调整PHP的配置文件及控制服务的启停
[root@php php-5.6.27]# cp php.ini-production /etc/php.ini    #复制源码中中提供的PHP配置文件
[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm   #复制其服务控制脚本文件
[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm    #赋予执行权限
[root@php php-5.6.27]# chkconfig --add php-fpm    #添加为系统服务,以便支持systemctl管理
[root@php php-5.6.27]# chkconfig php-fpm on   #开启
[root@php php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
#复制php-fpm提供的默认配置文件并编辑它
[root@php php-5.6.27]# vim /usr/local/php5.6/etc/php-fpm.conf     #修改一下,进行优化
listen = 192.168.20.3:9000    #监听地址是本机的IP9000端口
pm.max_children = 50         #最大启动的进程数
pm.start_servers = 5          #初始启动进程数
pm.min_spare_servers = 5     #最小空闲进程
pm.max_spare_servers = 35     #最大空闲进程
#修改完成后,保存退出即可
[root@php php-5.6.27]# systemctl start php-fpm    #启动PHP服务
[root@php php-5.6.27]# netstat -anput | grep php-fpm     #确认其9000端口已启动
[root@php ~]# mkdir -p /var/www/html        #创建其网页存放目录,须和nginx服务器的网页存放路径一样
[root@php php-5.6.27]# vim /var/www/html/index.php     #编写PHP测试页面
<?php
phpinfo();
?>
[root@php php-5.6.27]# vim /var/www/html/index1.php     #连接数据库的测试脚本

<?php
$link=mysqli_connect('192.168.20.5','ljz','pwd@123');
if($link) echo "恭喜你,数据库连接成功!!!"; else echo "connect shibai";
mysqli_close($link);
?>

至此,即可访问Nginx服务器的80端口来查看php服务器上定义的两个网页文件(在访问连接数据库的脚本文件时,需要先部署数据库,并创建用来连接的用户):

访问index.php,看到以下页面说明php运行正常:

LNMP动静分离&&memcache缓存服务器

访问index1.php,看到以下页面,说明LNMP之间的协调工作没有问题(我在访问下面的地址前,已经部署了MySQL数据库,并且创建了相应的用户):

LNMP动静分离&&memcache缓存服务器

4、部署MySQL数据库

我这里部署一个简易的MySQL数据库,提供测试功能即可。

[root@mysql ~]# rz
#上传我提供的mysql.sh脚本文件及mysql-5.7.22-linux.....源码包
[root@mysql ~]# sh mysql.sh              #执行mysql.sh脚本,执行后,需要等待较长时间
Starting MySQL... SUCCESS!    #当出现此提示信息时,则表示MySQL部署成功
mysql: [Warning] Using a password on the command line interface can be insecure.
#安装MySQL成功后,默认的数据库root密码为123
[root@mysql ~]# mysql -uroot -p123    #登录MySQL数据库
mysql> create database bbs;
mysql> grant all on bbs.* to ljz@"192.168.20.%" identified by 'pwwd@123';

5、部署Memcached服务器

[root@mamcache ~]# cd /usr/src       #切换至指定目录
[root@mamcache src]# rz             #上传所需源码包
[root@mamcache src]# ls       #就是上传以下的后面两个源码包
debug  kernels  libevent-2.0.22-stable.tar.gz  memcached-1.4.33.tar.gz
[root@mamcache src]# tar zxf libevent-2.0.22-stable.tar.gz       #解包
[root@mamcache src]# tar zxf memcached-1.4.33.tar.gz       #解包
[root@mamcache src]# cd libevent-2.0.22-stable/     #切换至解压后的目录
[root@mamcache libevent-2.0.22-stable]# ./configure && make && make install     #编译安装
[root@mamcache libevent-2.0.22-stable]# cd ../memcached-1.4.33/    #切换至memcached目录
[root@mamcache memcached-1.4.33]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local && make && make install
#编译安装
[root@mamcache ~]# ls /usr/local/memcached/bin/memcached          #确认该命令已安装
/usr/local/memcached/bin/memcached
[root@mamcache ~]# ln -sf /usr/local/memcached/bin/memcached /usr/local/bin/    #对命令做软链接
[root@memcache memcached-1.4.33]# memcached -d -m 1024 -l 192.168.20.4 -p 11211 -u root -c 10240 -P /usr/local/memcached/memcached.pid
#启动memcached服务,上述启动参数说明如下:
# -d 选项是启动一个守护进程。
# -m 分配给 Memcache 使用的内存数量,单位是 MB,默认 64MB。
# -l 监听的 IP 地址。(默认:INADDR_ANY,所有地址)
# -p 设置 Memcache 的 TCP 监听的端口,最好是 1024 以上的端口。
# -u 运行 Memcache 的用户,如果当前为 root 的话,需要使用此参数指定用户。
# -c 选项是最大运行的并发连接数,默认是 1024。
# -P 设置保存 Memcache 的 pid 文件路径。
# -M 内存耗尽时返回错误,而不是删除项
# -f 块大小增长因子,默认是 1.25
# -n 最小分配空间,key+value+flags 默认是 48
# -h 显示帮助
[root@mamcache ~]# netstat -anput | grep 11211         #确定TCP及udp端口在监听

6、部署memcache客户端(返回到PHP服务器进行配置)

[root@php ~]# cd /usr/src
[root@php src]# rz   #上传memcache-3.0.8.tgz源码包
[root@php src]# tar zxf memcache-3.0.8.tgz     #解包
[root@php src]# cd memcache-3.0.8/     #进入解压后的目录
[root@php memcache-3.0.8]# /usr/local/php5.6/bin/phpize    #生成该命令,以便生成configure文件
#若在执行上述命令时报错,则需要执行“yun -y install autoconf "安装提示的autoconf包。
[root@php memcache-3.0.8]#  ./configure --enable-memcache --with-php-config=/usr/local/php5.6/bin/php-config && make && make install
#上述命令执行后,会显示memcache.so存放的路径
[root@php memcache-3.0.8]# vim /etc/php.ini   #编辑主配置文件
#在配置文件末尾添加上述内容,以便指定memcache.so文件的存放路径
extension = /usr/local/php5.6/lib/php/extensions/no-debug-zts-20131226/memcache.so
[root@php memcache-3.0.8]# systemctl restart php-fpm   #重启php服务,使更改生效
[root@php memcache-3.0.8]# cd /var/www/html/
[root@php html]# vim test3.php       #编写测试文件

<?php
$memcache = new Memcache;
$memcache->connect('192.168.20.4', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>";
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 600) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>";
$get_result = $memcache->get('key');
echo "Data from the cache:<br/>";
var_dump($get_result);
?>
#编辑完成后,保存退出即可,此测试脚本是显示memcached的版本
#并且向里面插入了一个缓存时间为600秒的键值对“test=123”,其ID为“key”

客户端访问编辑的test3.php文件,会看到以下内容:

LNMP动静分离&&memcache缓存服务器

在memcached服务器上安装Telnet命令,并登陆缓存库,查看是否可以得到其键值对(以下操作在memcached服务器上进行操作):

[root@memcache ~]# yum -y install telnet           #安装Telnet命令
[root@memcache ~]# telnet 192.168.20.4 11211    #登陆到memcached的11211端口
get key         #查询ID为“key”的键值对,可以看到我们测试脚本写入的“test=123”
VALUE key 1 66
O:8:"stdClass":2:{s:8:"str_attr";s:4:"test";s:8:"int_attr";i:123;}
END
#在进行上面的get验证时,需要将test3.php文件中插入的键值对的保存时间值改大一些
#或者重新访问一下,以免缓存失效,查询不到

至此,LNMP动静分离&&memcache缓存服务器已经基本部署完成,接下来,配置PHP与memcached服务器沟通保存session会话

7、使用 memcache 实现 session 共享(在PHP服务器进行以下操作)

接下来实现PHP与memcached服务器沟通保存session会话。

[root@php ~]# vim /etc/php.ini      #在配置文件末尾添加下面内容
ession.save_handler = memcache
session.save_path = "tcp://192.168.20.4:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
#注上面写入的内容解释如下:
# session.save_handler:设置 session 的储存方式为 memcache 。
#默认以文件方式存取 session数据。
#session.save_path: 设置 session 储存的位置
#使用多个 memcached server 时用逗号”,”隔开,
#可以带额外的参数”persistent”、”weight”、”timeout”、”retry_interval”等等,
#类似这样的:"tcp://host:port?persistent=1&weight=2,tcp://host2:port2"。
[root@php html]# systemctl restart php-fpm     #重启使更改生效
[root@php html]# vim /var/www/html/test2.php    #编写测试文件
<?php
session_start();
if (!isset($_SESSION['session_time']))
{
$_SESSION['session_time'] = time();
}
echo "session_time:".$_SESSION['session_time']."<br />";
echo "now_time:".time()."<br />";
echo "session_id:".session_id()."<br />";
?>
#编写完成后,保存退出即可

客户端访问编写的test2.php测试文件,如下:

LNMP动静分离&&memcache缓存服务器

同样,使用Telnet命令在memcached服务器上进行查询其session_id的值,如下:

[root@memcache ~]# telnet 192.168.20.4 11211     #登录缓存监听的端口
get naapo2eet2d9s4to4mt7hchnr1            #执行get命令
VALUE naapo2eet2d9s4to4mt7hchnr1 0 26
session_time|i:1572450021;
#可以看到,查询到的session_time和我们网页访问到的值是一样的,说明其被缓存了

8、测试memcached缓存数据库

在MySQL数据库上创建用于测试的表(所有操作都在MySQL数据库上)如下:

mysql> create database testdb1;    #创建一个库
mysql> use testdb1;    #切换至创建的库中
mysql> create table test1(id int not null auto_increment,name varchar(20) default null,primary key (id)) engine=innodb auto_increment=1 default charset=utf8;
#创建表,共两列,分别是ID号和姓名
mysql> insert into test1(name) values ('tom1'),('tom2'),('tom3'),('tom4'),('tom5');
#向表中插入测试数据
mysql> select * from test1;   #确定插入的数据
+----+------+
| id | name |
+----+------+
|  1 | tom1 |
|  2 | tom2 |
|  3 | tom3 |
|  4 | tom4 |
|  5 | tom5 |
+----+------+
5 rows in set (0.00 sec)
mysql> desc test1;         #可以执行此语句查看test1的表结构
mysql> grant select on testdb1.* to user@'%' identified by 'pwd@123';
#对test1表创建一个只读的数据库用户,用于接下来的测试

接下来就是测试的工作了,这里有个 php 脚本,用于测试memcache 是否缓存数据成功

在PHP服务器上编写以下测试文件:

客户端访问用于测试的脚本文件,第一次访问的页面如下:

LNMP动静分离&&memcache缓存服务器

客户端刷新后,会看到以下页面:

LNMP动静分离&&memcache缓存服务器

在查询到的缓存过期前,可以在memcache上通过get 获取到对应的缓存数据,如下(在memcache服务器上进行操作):

[root@memcache ~]# telnet 192.168.20.4 11211     #登录缓存监听的端口
get d8c961e9895ba4b463841924dbcefc2b       #执行get命令
VALUE d8c961e9895ba4b463841924dbcefc2b 0 251
a:5:{i:0;a:2:{s:2:"id";s:1:"1";s:4:"name";s:4:"tom1";}i:1;a:2:{s:2:"id";s:1:"2";s:4:"name";s:4:"tom2";}i:2;a:2:{s:2:"id";s:1:"3";s:4:"name";s:4:"tom3";}i:3;a:2:{s:2:"id";s:1:"4";s:4:"name";s:4:"tom4";}i:4;a:2:{s:2:"id";s:1:"5";s:4:"name";s:4:"tom5";}}

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14154700/2446652

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


本篇内容介绍了“LNMP服务器环境配置实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
本篇内容主要讲解“OneinStack如何一键安装LNMP”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“OneinStack如何...
小编给大家分享一下如何解决LNMP安装composer install时出现Warning: putenv()问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅...
1.源码安装mysql鉴于前边的文章已经详细说过mysql的源码安装可以点击基于LAMP的Discuz论坛的实现(源码安装)自行查看这里为了节省时间用一个shell脚本进行mysql的源码安装用到的mysql依然是5.6.46没有源码包的同学可以点击【mysql-5.6.46.tar.gz提取码:nli5】进行下载
Linux是非常热门的技术,也是当下非常受欢迎的操作系统,具有独特的优势所在,广受大家的喜欢和追捧,今天为大家分享一下几款常用的Linux系统面板,希望对你有所帮助。1、宝塔面板:是一款使用方便、功能强大而且终身免费的服务器管理软件,支持Linux以及Windows系统,一键配置LAMP/LNMP
██【電:131.乀.1418.乀.6667】【薇q:9788.乀.9181】██柬埔寨东方明珠开户目录LAMP1.安装Mariadb2.安装PHP3.测试php和apache的协同4.修改MariaDB数据库配置5.测试数据库连接LNMP(未完待续)LAMP1.安装Mariadb在RaspberryPi中,MySQL无法安装,会自动建议安装Maria
关闭防火墙安装依赖包上传源码包解压源码包,安装nginx启动nginx安装mysql和PHP相关服务修改nginx配置文件,nginx和PHP进行整合重新加载nginx服务启动php-fpm书写PHP测试页测试网页 
一.lnmp的搭建1.准备一台纯净版的虚拟机2.下载Lnmp一键安装包命令:wget http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz【安装完整版的-推荐1.5版本】也可以本地下载好,通过rz上传:http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz3.开始安装命令:cdlnmp1.5-full 
1.LNMP理论fastcgi的主要优点:把动态语言和http服务器分离开来,使nginx可以处理静态请求和向后转发动态请求,而php/php-fpm服务器转移解析PHP动态请求使用fastcgi的原因:Nginx不支持对外部动态程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
keepalived高可用keepalived注意:任何软件都可以使用keepalived来做高可用keepalived如何实现高可用VRRP:虚拟路由冗余协议比如公司的网络是通过网关进行上网的,那么如果该路由器故障了,网关无法转发报文了,此时所有人都无法上网了,怎么办?通常做法是给路由器增加一台备节点,但是问
通过阿里云的服务器搭建lnmp架构以及部署wordpress个人博客,连接上域名所遇到的问题及解决办法注释:操作系统centos7.9第一步:购买阿里云ecs服务器,选择系统及其他硬件,下面是我自己购买的配置,可以参考(注意操作系统我购买的时候选错了,后来换成了centos7.9)然后在阿里云“云服
文章目录1.首先了解编译安装和yum安装的区别。2.yum安装准备工作---切换阿里云yum源3.编译安装lnmp**很不建议使用编译安装,麻烦且容易报错。**4.yum安装lnmp**可以先执行一下yumupdate**5.lnmp一键安装[参考网站](https://lnmp.org/)**不喜欢这种方式,所以没测试
电影院系统解压登录mysql创建电影院系统使用的数据库授权账户skyuc访问数据库讲系统部署到www.benet.com网站根目录下mv/usr/src/SKYUC.v3.4.2.SOURCE/wwwroot/*/var/www/benetcom/设置网站根目录所有者和权限客户机测试论坛系统部署解压复制文件到网站根目
下载:​ https://www.php.net/downloads​ https://www.php.net/distributions/php-8.0.6.tar.gz编译安装php:①安装依赖:yum-yinstalllibxml2-develsqlite-develbzip2-devellibcurl-devellibpng-devellibjpeg-develfreetype-devellibicu-develoniguruma-devellibxs
树莓派LNMP关键词:raspberrywebphpdnsmysq1LNMP、LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写,分别指Linux、Nginx/Apache、MySQL和PHP。这里演示如何在树莓派上搭建LNMP环境并配置多个站点。主要内容:树莓派安装nginx树莓派安装ph
官网:http://kodcloud.com/1、准备MySQL数据库 [root@cent8_yzl_20~]#yuminstall-ymysql-server[root@cent8_yzl_20~]#systemctlenable--nowmysqld[root@cent8_yzl_20~]#mysqlmysql>createdatabasekodbox;mysql>createuserkodbox@'10.0.0.
环境应用IP操作系统nginx192.168.122.131centos8mysql192.168.122.132centos8php192.168.122.133centos8准备工作//关闭防火墙#systemctldisable--nowfirewalld#setenforce0#vim/etc/selinux/configSELINUX=disabled安装nginx//安装依
1.购买vps或者外国云主机2.搭建ss服务端3.客户端配置服务端信息,即可。不废话,开始教程:ss-panel-v3简介ss-panel是一套功能齐全的shadowsocks用户管理面板,它可以实现用户注册、用户管理、流量控制、签到、添加多节点、充值购买、邀请返利等诸多功能,是目前网络上使用最广泛的一
LNMP架构数据迁移至NFS第一步:先将原有目录中数据移出数据存储到本地什么位置,获取方法1.通过网站页面右键点击,获取资源地址信息2.find命令利用-mmin53.利用inotify服务监控目录数据变化[root@web01wp-content]#cd/applicationginx/html/blog/wp-content/uploads[root@we
一 点睛业务上线之前最关键的一项任务便是环境部署,往往一个业务涉及多种应用环境,比如Web、DB、PROXY、CACHE等,本示例通过env.roledefs定义不同主机角色,再使用“@roles('webservers')”修饰符绑定到对应的任务函数,实现不同角色主机的部署差异。二 代码#coding=utf-8#!/usr