lamp基本架构以及在单台主机上实现wordpress基于lamp的安装
-----------------------------------------------------------------------------------------------------------------------------------------------
一、lamp架构
1、lamp
l: linux
a: apache (httpd)
m: mysql, mariadb
m:memcached
p: php, perl, python
2、web资源类型:
静态资源:原始形式与响应内容一致,在客户端浏览器执行
动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
3、web相关语言
客户端技术:html,javascript,css,jpg
服务器端技术:php,jsp,python,asp
二、cgi
1、cgi:common gateway interface,公共网关接口,可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据,它描述了客户端和服务器程序之间传输的一种标准,比如说通过浏览器注册某网站用户,该操作通过cgi接口连接到该网站的数据库并且新增了一条用户记录
2、请求流程:
client --(httpd) --> httpd--(cgi) --> application server (program file) --(mysql) --> mysql
3、php: 脚本编程语言、嵌入到html中的嵌入式web程序语言
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
三、工作原理
四、php配置
php:脚本语言解释器
1、配置文件:/etc/php.ini, /etc/php.d/*.ini
2、配置文件在php解释器启动时被读取
3、对配置文件的修改生效方法
modules:重启httpd服务
fastcgi:重启php-fpm服务
4、/etc/php.ini,php主配置文件格式:
[foo]:section header
directive = value
注释符:较新的版本中,已经完全使用;进行注释
#:纯粹的注释信息
;:用于注释可启用的directive
5、php主配置文件说明项
max_execution_time= 30 最长执行时间30s,运行多久后还未结束认为超时,可适当调短
max_input_time = 60 上传多长时间算超时,用户多久不写东西算超时
memory_limit 128m 内存可使用多大,生产不够,根据实际情况可调大
display_errors off 调试使用,不要打开,否则可能暴露重要信息
display_startup_errors off 启动时是否显示错误提示,建议关闭
post_max_size 8m 用户上传时总共上传最大数据大小,生产可能临时要调大,比下面项要大
upload_max_filesize 2m 用户上传文件时单个文件上传数据大小,只是文件,生产可能要调大
max_file_uploads = 20 同时上传最多文件数
date.timezone = asia/shanghai 指定时区
short_open_tag = on 开启短标签,如<? phpinfo();?>
五、php的加速器
1、php的加速器:基于php的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的
2、常见的php加速器有:
(1)apc (alternative php cache),遵循php license的开源框架,php opcode缓存加速器,目前的版本不适用于php 5.4项目地址。
(2)eaccelerator,源于turckmmcache,早期的版本包含了一个php encoder和php loader,目前encoder已经不在支持。
(3)xcache快速而且稳定的php opcode缓存,经过严格测试且被大量用于生产环境,收录epel源,现常用此加速器
(4)zend optimizer和zend guard loader,zend optimizer并非一个opcode加速器,它是由zend technologies为php5.2及以前的版本提供的一个免费、闭源的php扩展,其能够运行由zend guard生成的加密的php代码或模糊代码。而zend guard loader则是专为php5.3提供的类似于zend optimizer功能的扩展。
(5)nuspherephpexpress,nusphere的一款开源php加速器,它支持装载通过nuspherephp encoder编码的php程序文件,并能够实现对常规php文件的执行加速。
六、lamp
(1)httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行
(2)php:运行php程序
(3)mariadb:数据管理系统
2、http与php结合的方式
php没有独立的进程,它只是附加在httpd上的一个独立模块
cgi
fastcgi
modules (将php编译成为httpd的模块,默认方式)
mpm:
prefork: libphp5.so
event, worker: libphp5-zts.so
3、部署环境
centos 7:
modules:httpd, php, php-mysql, mariadb-server
fastcgi:httpd, php-fpm, php-mysql, mariadb-server
centos 6:
modules:httpd, php, php-mysql, mysql-server
fastcgi:默认不支持
4、用pdo(php data object)扩展连接数据库
在httpd目录下,默认/var/www/html,建立*.php文件并复制以下内容,对数据库测试是否连通
<?php
try {
$user='root';
$pass='chenux';
$dbh= new pdo('mysql:host=192.168.239.70;dbname=mysql', $user, $pass);
foreach($dbh->query('select user,host from user') as $row) {
print_r($row);
}
$dbh= null;
} catch (pdoexception$e) {
print "error!: " . $e->getmessage() . "<br/>";
die();
?>
测试结果成功
七、常见lamp应用
1、phpmyadmin、wordpress、phpwind、crossday discuz! board、ecshop
2、phpmyadmin:www.phpmyadmin.net/downloads/
yum -y install httpdmariadb-server phpphp-mysql
systemctlstart httpd
systemctlstart mariadb
mysql_secure_installation
下载:https://www.phpmyadmin.net/downloads/
tar xvf phpmyadmin-4.0.10.20-all-languages.tar.xz cd /var/www/html
cd phpadmin/
cp config.sample.inc.phpconfig.inc.php
yum -y install php-mbstring
systemctl reload httpd
3、wordpress安装:
(1)cn.wordpress.org,下载wordpress-version-zh_cn.zip,
(2)unzip wordpress-version-zh_cn.zip 至网站目录下
(3)创建wordpress数据库,并创建wordpress使用的数据用户
mysql>create database wpdb;
mysql> grant all privileges on wpdb.* to wpuser@'%' identified by 'wppass'
(4)进入wordpress目录,cp wp-config-sample.php wp-config.php
进行修改
(5)打开http://server/wordpress进行页面安装
按刚创建的填写
开始安装
继续填写
完成后登陆
(6)注意wordpress目录权限setfacl -r -m u:apache:rwx wordpress
八、php-fpm模式
1、php配置
配置文件:/etc/php.ini,/etc/php.d/*.ini
module下,重启httpd服务
fastcgi模式下,重启php-fpm服务,配置文件/etc/php-fpm.conf,/etc/php-fpm.d/www.conf
配置文件格式
配置文件格式:[foo]:section header
directive=value
注释符:# 纯粹的注释信息
; 用于注释可启动的指令
说明:在较新的版本中,已经完全使用”;”进行注释
2、php.ini核心配置的详细说明:http://php.net/manual/zh/ini.core.php
3、php.ini配置选项列表:http://php.net/manual/zh/ini.list.php
4、fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
5、连接池:
pm = static|dynamic
static:固定数量的子进程;pm.max_children
dynamic:子进程数量以动态模式管理
pm.max_children
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
pm.max_requests= 500
6、确保运行php-fpm进程的用户对session目录有读写权限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session
访问httpd动态资源跳转到php-fpm服务
(1) 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件,内容类似
directoryindex index.php
proxyrequests off
proxypassmatch ^/(.*\.php)$ fcgi://phpipsever:9000/var/www/html/$1
注意:在httpd服务器上必须启用proxy_fcgi_module模块,充当php客户端
httpd–m |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
(2) 虚拟主机配置
vim /etc/httpd/conf.d/vhosts.conf
<virtualhost*:80>
servername www.b.net
documentroot /apps/vhosts/b.net
proxypassmatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
<directory "/apps/vhosts/b.net">
options none
allowoverride none
require all granted
</directory>
</virtualhost>
7、php-fpm常见配置,/etc/php-fpm.d/www.conf
daemonize= no //是否将程序运行在后台
listen = 127.0.0.1:9000 //fpm 监听地址
listen.backlog= -1 //等待队列的长度-1表示无限制listen.allowed_clients= 127.0.0.1 //仅允许哪些主机访问
pm = dynamic //pm是动态运行还是静态运行
//static 固定数量的子进程,pm.max_childen
//dynamic子进程数据以动态模式管理
pm.max_children = 500,最大进程数
pm.start_servers = 50,刚开始启动多少进程
pm.min_spare_servers = 50,最少保留空闲进程
pm.max_spare_servers = 100,最大保留空闲进程
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session,设置session存放位置
8、启动php-fpm:systemctl start php-fpm
9、安装httpd包:yum install httpd
10、查看httpdmod_fcgi模块是否加载
httpd-m | grep fcgi
proxy_fcgi_module(shared)
11、添加fcgi的配置文件
proxyrequests off //是否开启正向代理
proxypassmatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 //开启fcgi反向代理,//前面的/相对于后面的/var/www/html而言,后面的$1是指前面的/(.*\.php)
12、重启httpd:systemctl start httpd