常见动态资源服务模型
LAMPLinux
Apache
Mariadb|Mysql|Mongdb Php|Perl|PythonLAMMPLinux Apache Mariadb|Mysql|Mongdb
Memocache
Php|Perl|PythonLNMPLinux
Nginx
Mariadb|Mysql|Mongodb Php|Perl|PythonLNMMPLinux Nginx Mariadb|Mysql|Mongodb
Memocache
Php|Perl|PythonLAMTLinux Apache Mariadb|Mysql|Mongdb
Tomcat
LNMTLinux Nginx Mariadb|Mysql|Mongdb
Tomcat
httpd静态资源的响应模型
客户端通过http协议连接静态资源服务器
650) this.width=650;" src="http://img.baidu.com/hi/jx2/j_0057.gif" ?/>650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/07/AC/wKiom1nNokrB6hD3AAAlYH96nTo339.png" ?/>
httpd动态态资源的响应模型
程序文件需要在虚拟机(PHP, Perl, Tomcat, Python)
中运行后响应。
如果虚拟中的程序运行过程中需要数据库时,就通过连接数据库的驱动
,驱动内提供的函数库
完成封装报文、解封装报文和与mysql服务器交互。
CGI650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/07/AD/wKiom1nNp96DpmCIAACOZQILeCY218.png" ?/>
静态资源: fork自身用子进程响应。
动态资源:CGI调用对应程序,fork自身,程序作为子进程运行
在同一个主机上通信IPC:
消息队列、共享内存、旗语、套接字messagequeue,sharedmemor,semaphores,unixsocket
缺陷:
**httpd处理的请求过多**
FastCGI650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/07/AD/wKiom1nNqmiRa_CkAACCLKAhgzE970.png" ?/>
跨主机通信IPC:
套接字、远程过程调用socket,rpc
动态网站特性
静态资源>动态资源(一个PV内1/10个为动态)
1/100个需要mysql的数据[在应用程序服务器中]
加强后端服务器的性能
httpd与php结合的方式
CGI: 作为HTTPD子进程<与tomcat, perl, python整合>
Modules: php作为httpd的模块, httpd调用模块不用生成子进程
FastCGI: 独立的服务器
文件查询和数据库查询的区别
操作文件时都需要将数据载入内存中
将文件中的所有数据块加载至内存进行查找
数据库管理系统:[可以将数据存储为较小的数据集],查询时只用装载较小的数据集
将部分字段抽取<复制>出来,做为一个较小的数据集,存储的位置有指向原位置的指针
将抽取出的字段按特定的逻辑,再抽取一份,做为一个小的数据集
查找到的key对应的指针会指向原位置所在的行[每行或多行为一个数据块]650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/07/AC/wKiom1nNn1KBYU41AAGUxafg5E8413.png" ?/>
php解释器与mysql交互
php解释器中运行的php代码/程序,需要用到mariadb时,用驱动,连接mariadb
php
服务器端脚本编程语言,动态网站开发语言:php, asp, ruby, c, bash<解释器,提供程序功能>
代码执行过程
扫描(词法分析) --> parsing(语义分析-->表达式) --> compilation(表达式-->opcode) --> exec(opcode-->机器指令)
php加速方式
请求相同的动态资源时,之前缓存在内存中的opcode相同代码可以重复利用
即使是prefork,进程间也可以共用opcode
注意:prefork每个进程独立的,进程有自己的内存空间,不能使用其他进程内资源
存储系统
文件系统: 文件 操作文件时,需要内核的系统调用
SQL数据库: mariadb, mysql, oracle, ms_sql 交互时,用驱动[函数库]连接
no_sql: redis, mongodb, hbase
new_sql: <存储,基于分布式模式,管理的存储的系统>
rpm提供LAMP组合布署开源程序
wordpress, phpMyadmin, discuss
CentOS 6rpm安装LAMP
配置yum源
#install-d/media/cdrom#mount-r/dev/cdrom/media/cdrom#mv-v/etc/yum.repos.d/CentOS-Base.repo{,.bak}#vim/etc/yum.repos.d/CentOS-Base.repo[C6CentOS]name=CentOS6failovermethod=prioritybaseurl=file:///media/cdromhttp://mirrors.aliyun.com/centos/6/os/i386/gpgcheck=0enabled=1[EPEL]name=FedoraEPELfailovermethod=prioritybaseurl=http://mirrors.aliyun.com/epel/6/i386/http://mirrors.sohu.com/fedora-epel/6/i386/gpgcheck=1gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6enabled=1
安装
#yum-yinstallhttpdphpphp-mysqlmysql-server
配置
#rpm-qlphp/etc/httpd/conf.d/php.conf//提供httpd的配置文件/usr/lib/httpd/modules/libphp5.so//提供给httpd的模块PS:此模块仅能运行prefork模型,worker|event模型:libphp5-zts.so模块#httpd-Mphp5_module(shared)//模块已经被装载
启用httpd, mysql
#servicehttpdstart#servicemysqldstart
测试httpd
#ss-tnl在Windows浏览器中键入IP地址测试http://
测试mysql
#ss-tnl#mysqlmysql>
测试
php程序执行环境
#vim/var/www/html/index.php<?phpphpinfo();?>
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/A6/61/wKioL1nNvamgV9IgAABFy80OUas217.png" ?/>
测试php程序通过
驱动连接mysql服务器
php-mysql驱动所提供的调用: mysql_connect, mysql_close php代码以‘;‘结尾
#vim/var/www/html/index.php<?php$link=mysql_connect(‘localhost‘,‘root‘,‘‘);if($link)echo"Success";elseecho"Failure";mysql_close();?>
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/07/B0/wKiom1nNvprxcKHyAAAKedrRZhs215.png" ?/>
停止服务#servicemysqldstop
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/07/B0/wKiom1nNvymyEXQkAAAJ-Bzd21M255.png" ?/>
布署wordpress[个人博客站点]
服务器环境要求
PHP5.2.4或更新版本
MySQL5.0或更新版本
Apachemod_rewrite模块(可选,用于支持“固定链接”和“站点网络”功能)
下载链接:wordpress-4.8.1-zh_CN.zip
获取wordpresswordpress中文站点
展开并配置
#unzipwordpress-4.8.1-zh_CN.zip#cp-awordpress/var/www/html/#cd/var/www/html/#ln-svwordpresswp//便于升级#cdwp#cpwp-config-sample.phpwp-config.php#vimwp-config.phpdefine(‘DB_NAME‘,‘wpdb‘);define(‘DB_USER‘,‘wpuser‘);define(‘DB_PASSWORD‘,‘wppass‘);
mysql中添加用户
#mysqlmysql>GRANTALLON*.*TO‘wpuser‘@‘localhost‘IDENTIFIEDBY‘wppass‘;mysql>GRANTALLON*.*TO‘wpuser‘@‘127.0.0.1‘IDENTIFIEDBY‘wppass‘;mysql>FLUSHPRIVILEGES;mysql>CREATEDATABASEwpdb;mysql>\q
在Windows主机中,输入CentOS虚拟主机的IP测试
http://172.16.100.1/wp650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/07/B1/wKiom1nN0TDBFydrAABm0RuwIkY656.png" ?/>650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/A6/63/wKioL1nN0O_TeMbfAAEqy6Gr1G0694.png" ?/>
布署phpMyadmin[mysql Web GUI]
安装php扩展: php-mbstring
#yuminstallphp-mbstring//AmoduleforPHPapplicationswhichneedmulti-bytestringhandling
[root@localhostpma]#rpm-qlphp-mbstring/etc/php.d/mbstring.ini/usr/lib/php/modules/mbstring.so//提供了php的扩展模块或库
重载httpd,因为php是httpd的模块
#rpm-qlphp/etc/httpd/conf.d/php.conf/usr/lib/httpd/modules/libphp5.so//php是httpd的模块#servicehttpdreload
再次测试650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/07/B2/wKiom1nN2B-i1Fc_AACJ_y9FrDI206.png" ?/>650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/A6/63/wKioL1nN197TovwVAAEPeMlUzSk527.png" ?/>
下载链接:phpMyAdmin-4.7.4-all-languages.zip
当前版本与PHP 5.5至7.1和MySQL 5.5及更高版本兼容。
下载链接:phpMyAdmin-4.0.10.20-all-languages.zip
旧版本与PHP 5.2和MySQL 5兼容。不支持PHP 5.5或更新版本。至2017年4月1日为止。
获取版本
#rpm-qphp#rpm-qmysql#rpm-qhttpd
获取phpMyadminphpMyadmin官网
展开并配置
#unzipphpMyAdmin-4.0.10.20-all-languages.zip#cp-aphpMyAdmin-4.0.10.20-all-languages.zip/var/www/html#cd/var/www/html/#ln-svphpMyAdmin-4.0.10.20-all-languagespma#cdpma#cpconfig.sample.inc.phpconfig.inc.php#opensslrand-hex16e870cf5bb5e30295ca0389f77b469919#vimconfig.inc.php$cfg[‘blowfish_secret‘]=‘e870cf5bb5e30295ca0389f77b469919‘;/*YOUMUSTFILLINTHISFORCOOKIEAUTH!*/[‘AllowNoPassword‘]=false;//拒绝空密码登陆
mysql中给root用户添加密码
#mysqlmysql>SETPASSWORDFOR‘root‘@‘localhost‘=PASSWORD(‘magedu‘);mysql>SETPASSWORDFOR‘root‘@‘127.0.0.1‘=PASSWORD(‘magedu‘);mysql>FLUSHPRIVILEGES;mysql>\q
在Windows主机中,输入CentOS虚拟主机的IP测试
http://172.16.100.3/pma650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/A6/63/wKioL1nN03CTH3BcAAAhvdC4T98416.png" ?/>
CentOS 7rpm安装LAMP
安装
#yum-yinstallhttpdphpphp-mysqlmariadb-server
启动
#systemctlstarthttpd.service#systemctlstartmariadb.service
给php添加xcache模块,实现缓存加速
安装前测试
#ulimit-n65535#php-m[ZendModules]
[root@localhostpma]#ab-c1000-n4000172.16.100.3/pmaServerSoftware:Apache/2.2.15ServerHostname:172.16.100.3ServerPort:80DocumentPath:/pmaDocumentLength:310bytesConcurrencyLevel:1000//并发数Timetakenfortests:5.968secondsCompleterequests:4000//请求数Failedrequests:0Writeerrors:0Non-2xxresponses:4003Totaltransferred:2137602bytesHTMLtransferred:1240930bytesRequestspersecond:670.23[#/sec](mean)//每秒请求数Timeperrequest:1492.033[ms](mean)//每批请求所需要的时间Timeperrequest:1.492[ms](mean,//每个请求所需要的时间Transferrate:349.77[Kbytes/sec]//3MiB带宽ConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:0338613.41573130//客户端建立连接Processing:1379771.31684759//服务器处理请求Waiting:0322700.71334505//服务器响应Total:1877161088.93295798//一次完整的事务
安装xcache
#yum-yinstallphp-xcache//Fast,stablePHPopcodecacher查看安装所提供的模块:#rpm-qlphp-xcache/etc/php.d/xcache.ini/usr/lib/php/modules/xcache.so//为php提供的模块
重载httpd
#servicehttpdreload#php-m[ZendModules]XCacheXCacheCacherXCacheCoveragerXCacheOptimizer
测试
预热
知识推荐
- jQuery: Callbacks
- 转载:Ajax基础详解&&http填坑2
- 静态网页开发技术第二篇
- 实现FTP的文件上传与下载
- QT和JS的互相调用例子
- 使用 jquery 替换 网页某部分的图片内容
- Metasploit学习笔记
- WebService介绍
- js正则表达
- jsp声明
- ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(三)
- 了解JS模块规范:AMD,CMD,CommonJS
- Elasticsearch-PHP 快速开始
- 5 -- Hibernate的基本用法 --6 深入Hibernate映射
- 处理GitHub上的不允许100MB大文件上传
- ArcGisJS的layers-add-result事件总结
- 安装两个XAMPP或者更新XAMPP时, PHP版本还是旧版本的问题
- webpack entry和output配置属性