天天看点

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

    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(二进制格式的字节码,重复运行,可省略编译环境)

三、工作原理

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

四、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基本概念以及在单台主机上实现wordpress基于LAMP的安装

测试结果成功

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

七、常见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'

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

(4)进入wordpress目录,cp wp-config-sample.php wp-config.php

进行修改

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

(5)打开http://server/wordpress进行页面安装

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

按刚创建的填写

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

开始安装

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

继续填写

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

完成后登陆

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

(6)注意wordpress目录权限setfacl -r -m u:apache:rwx wordpress

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

八、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 //仅允许哪些主机访问

LAMP基本概念以及在单台主机上实现wordpress基于LAMP的安装

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

继续阅读