常见动态资源服务模型
-
LAMP Linux Apache
Mariadb|Mysql|Mongdb Php|Perl|Python
-
LAMMP Linux Apache Mariadb|Mysql|Mongdb Memocache
Php|Perl|Python
-
LNMP Linux Nginx
Mariadb|Mysql|Mongodb Php|Perl|Python
-
LNMMP Linux Nginx Mariadb|Mysql|Mongodb Memocache
Php|Perl|Python
-
LAMT Linux Apache Mariadb|Mysql|Mongdb Tomcat
-
LNMT Linux Nginx Mariadb|Mysql|Mongdb Tomcat
httpd静态资源的响应模型
客户端通过http协议连接静态资源服务器


httpd动态态资源的响应模型
程序文件需要在虚拟机(PHP, Perl, Tomcat, Python)
中运行后响应。
如果虚拟中的程序运行过程中需要数据库时,就通过连接数据库的驱动
,驱动内提供的函数库
完成封装报文、解封装报文和与mysql服务器交互。
-
CGI 
-
静态资源: fork自身用子进程响应。
-
动态资源:CGI调用对应程序,fork自身,程序作为子进程运行
-
在同一个主机上通信IPC:
消息队列、共享内存、旗语、套接字
message queue, shared memor, semaphores, unix socket
-
缺陷: **httpd处理的请求过多**
-
FastCGI 
-
跨主机通信IPC:
套接字、远程过程调用
socket, rpc
-
动态网站特性
-
httpd与php结合的方式
-
CGI: 作为HTTPD子进程<与tomcat, perl, python整合>
-
Modules: php作为httpd的模块, httpd调用模块不用生成子进程
-
FastCGI: 独立的服务器
文件查询和数据库查询的区别
php解释器与mysql交互
php解释器中运行的php代码/程序,需要用到mariadb时,用驱动,连接mariadb
php
服务器端脚本编程语言,动态网站开发语言:php, asp, ruby, c, bash<解释器,提供程序功能>
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=CentOS 6
failovermethod=priority
baseurl=file:///media/cdrom
http://mirrors.aliyun.com/centos/6/os/i386/
gpgcheck=0
enabled=1
[EPEL]
name=Fedora EPEL
failovermethod=priority
baseurl=http://mirrors.aliyun.com/epel/6/i386/
http://mirrors.sohu.com/fedora-epel/6/i386/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6
enabled=1
-
安装
# yum -y install httpd php php-mysql mysql-server
-
配置
# rpm -ql php
/etc/httpd/conf.d/php.conf //提供httpd的配置文件
/usr/lib/httpd/modules/libphp5.so //提供给httpd的模块
PS:此模块仅能运行prefork模型, worker|event模型:libphp5-zts.so模块
# httpd -M
php5_module (shared) //模块已经被装载
-
启用httpd, mysql
# service httpd start
# service mysqld start
-
测试
-
php程序执行环境
# vim /var/www/html/index.php
<?php
phpinfo();
?>

-
测试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";
else
echo "Failure";
mysql_close();
?>

停止服务
# service mysqld stop

布署wordpress[个人博客站点]
-
获取wordpress wordpress中文站点
-
服务器环境要求
PHP 5.2.4或更新版本
MySQL 5.0或更新版本
Apache mod_rewrite模块(可选,用于支持“固定链接”和“站点网络”功能)
-
下载链接: wordpress-4.8.1-zh_CN.zip
-
展开并配置
# unzip wordpress-4.8.1-zh_CN.zip
# cp -a wordpress /var/www/html/
# cd /var/www/html/
# ln -sv wordpress wp //便于升级
# cd wp
# cp wp-config-sample.php wp-config.php
# vim wp-config.php
define('DB_NAME', 'wpdb');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'wppass');
-
mysql中添加用户
# mysql
mysql> GRANT ALL ON *.* TO 'wpuser'@'localhost' IDENTIFIED BY 'wppass';
mysql> GRANT ALL ON *.* TO 'wpuser'@'127.0.0.1' IDENTIFIED BY 'wppass';
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE wpdb;
mysql> \q
-
在Windows主机中,输入CentOS虚拟主机的IP测试
http://172.16.100.1/wp

布署phpMyadmin[mysql Web GUI]
-
获取phpMyadminphpMyadmin官网
-
旧版本与PHP 5.2和MySQL 5兼容。不支持PHP 5.5或更新版本。至2017年4月1日为止。
-
当前版本与PHP 5.5至7.1和MySQL 5.5及更高版本兼容。
-
下载链接: phpMyAdmin-4.7.4-all-languages.zip
-
下载链接: phpMyAdmin-4.0.10.20-all-languages.zip
-
获取版本
# rpm -q php
# rpm -q mysql
# rpm -q httpd
-
展开并配置
# unzip phpMyAdmin-4.0.10.20-all-languages.zip
# cp -a phpMyAdmin-4.0.10.20-all-languages.zip /var/www/html
# cd /var/www/html/
# ln -sv phpMyAdmin-4.0.10.20-all-languages pma
# cd pma
# cp config.sample.inc.php config.inc.php
# openssl rand -hex 16
e870cf5bb5e30295ca0389f77b469919
# vim config.inc.php
$cfg['blowfish_secret'] = ' e870cf5bb5e30295ca0389f77b469919'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
['AllowNoPassword'] = false; //拒绝空密码登陆
-
mysql中给root用户添加密码
# mysql
mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('magedu');
mysql> SET PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('magedu');
mysql> FLUSH PRIVILEGES;
mysql> \q
-
在Windows主机中,输入CentOS虚拟主机的IP测试
http://172.16.100.3/pma
-
安装php扩展: php-mbstring
# yum install php-mbstring //A module for PHP applications which need multi-byte string handling
[root@localhost pma]# rpm -ql php-mbstring
/etc/php.d/mbstring.ini
/usr/lib/php/modules/mbstring.so //提供了php的扩展模块或库
-
重载httpd,因为php是httpd的模块
# rpm -ql php
/etc/httpd/conf.d/php.conf
/usr/lib/httpd/modules/libphp5.so //php是httpd的模块
# service httpd reload
-
再次测试 

CentOS 7rpm安装LAMP
给php添加xcache模块,实现缓存加速
-
安装前测试
# ulimit -n 65535
# php -m
[Zend Modules]
[root@localhost pma]# ab -c 1000 -n 4000 172.16.100.3/pma
Server Software: Apache/2.2.15
Server Hostname: 172.16.100.3
Server Port: 80
Document Path: /pma
Document Length: 310 bytes
Concurrency Level: 1000 //并发数
Time taken for tests: 5.968 seconds
Complete requests: 4000 //请求数
Failed requests: 0
Write errors: 0
Non-2xx responses: 4003
Total transferred: 2137602 bytes
HTML transferred: 1240930 bytes
Requests per second: 670.23 [#/sec] (mean) //每秒请求数
Time per request: 1492.033 [ms] (mean) //每批请求所需要的时间
Time per request: 1.492 [ms] (mean, //每个请求所需要的时间
Transfer rate: 349.77 [Kbytes/sec] //3MiB带宽
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 338 613.4 157 3130 //客户端建立连接
Processing: 1 379 771.3 168 4759 //服务器处理请求
Waiting: 0 322 700.7 133 4505 //服务器响应
Total: 187 716 1088.9 329 5798 //一次完整的事务
-
安装xcache
# yum -y install php-xcache // Fast, stable PHP opcode cacher
查看安装所提供的模块:
# rpm -ql php-xcache
/etc/php.d/xcache.ini
/usr/lib/php/modules/xcache.so //为php提供的模块
-
重载httpd
# service httpd reload
# php -m
[Zend Modules]
XCache
XCache Cacher
XCache Coverager
XCache Optimizer
-
测试
-
预热
# ab -c 10 -n 100 www.mykernel.cn/pma
# ab -c 10 -n 100 www.mykernel.cn/pma
# ab -c 10 -n 100 www.mykernel.cn/pma
-
测试
[root@localhost pma]# ab -c 1000 -n 4000 172.16.100.3/pma
Server Software: Apache/2.2.15
Server Hostname: 172.16.100.3
Server Port: 80
Document Path: /pma
Document Length: 310 bytes
Concurrency Level: 1000
Time taken for tests: 6.510 seconds
Complete requests: 4000
Failed requests: 0
Write errors: 0
Non-2xx responses: 4006
Total transferred: 2139204 bytes
HTML transferred: 1241860 bytes
Requests per second: 614.46 [#/sec] (mean) //每秒请求
Time per request: 1627.457 [ms] (mean)
Time per request: 1.627 [ms] (mean, across all concurrent requests)
Transfer rate: 320.91 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 180 590.6 4 3014
Processing: 0 531 1086.5 101 6376
Waiting: 0 527 1086.1 97 6372
Total: 75 711 1431.8 106 6477
Percentage of the requests served within a certain time (ms)
50% 106
66% 114
75% 145
80% 542
90% 3210
95% 4408
98% 5325
99% 6081
100% 6477 (longest request)
...
有问题反馈
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
-
邮件:lccnx@foxmail.cn
-
QQ: 2192383945
感激

本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1969713,如需转载请自行联系原作者