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

    LAMP基本架构以及在单台主机上实现wordpress基于LAMP的安装javascript

-----------------------------------------------------------------------------------------------------------------------------------------------
php

1、Lamp架构css

一、LAMPhtml

    L: linuxjava

    A: apache (httpd)python

    M: mysql, mariadbmysql

    M:memcachedlinux

    P: php, perl, pythonweb

二、WEB资源类型:sql

静态资源:原始形式与响应内容一致,在客户端浏览器执行

动态资源:原始形式一般为程序文件,须要在服务器端执行以后,将执行结果返回给客户端

三、web相关语言

客户端技术:html,javascript,css,jpg

服务器端技术:php,jsp,python,asp

2、CGI

一、CGI:Common Gateway Interface,公共网关接口,可让一个客户端,从网页浏览器经过http服务器向执行在网络服务器上的程序传输数据,它描述了客户端和服务器程序之间传输的一种标准,好比说经过浏览器注册某网站用户,该操做经过CGI接口链接到该网站的数据库而且新增了一条用户记录

二、请求流程:

Client --(httpd) --> httpd--(cgi) --> application server (program file) --(mysql) --> mysql

三、php: 脚本编程语言、嵌入到html中的嵌入式web程序语言

基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)

3、工做原理

image.png

4、php配置

php:脚本语言解释器

一、配置文件:/etc/php.ini, /etc/php.d/*.ini

二、配置文件在php解释器启动时被读取

三、对配置文件的修改生效方法

Modules:重启httpd服务

FastCGI:重启php-fpm服务

四、/etc/php.ini,php主配置文件格式:

[foo]:Section Header

directive = value

注释符:较新的版本中,已经彻底使用;进行注释

#:纯粹的注释信息

;:用于注释可启用的directive

五、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();?>

5、php的加速器

一、php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也能够将opcode缓存于php的共享内存中,从而可让同一段代码的后续重复执行时跳过编译阶段以提升性能。这些加速器并不是真正提升了opcode的运行速度,而仅是经过分析opcode后并将它们从新排列以达到快速执行的目的

二、常见的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文件的执行加速。

6、LAMP

一、LAMP

(1)httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行

(2)php:运行php程序

(3)MariaDB:数据管理系统

二、http与php结合的方式

php没有独立的进程,它只是附加在httpd上的一个独立模块

CGI

FastCGI

modules (将php编译成为httpd的模块,默认方式)

MPM:

prefork: libphp5.so

event, worker: libphp5-zts.so

三、部署环境

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:默认不支持

四、用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();

}

?>

image.png

测试结果成功

image.png

7、常见LAMP应用

一、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

三、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'

image.png

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

进行修改

image.png

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

image.png

按刚建立的填写

image.png

开始安装

image.png

继续填写

image.png

完成后登录

image.png

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

image.png

8、php-fpm模式

一、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

注释符:# 纯粹的注释信息

; 用于注释可启动的指令

说明:在较新的版本中,已经彻底使用”;”进行注释

二、php.ini核心配置的详细说明:http://php.net/manual/zh/ini.core.php

三、Php.ini配置选项列表:http://php.net/manual/zh/ini.list.php

四、fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf

五、链接池:

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

六、确保运行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

DirectoryIndex index.php

<VirtualHost*:80>

ServerName www.b.net

DocumentRoot /apps/vhosts/b.net

ProxyRequests Off

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>

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

image.png

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,最大保留空闲进程

pm.max_requests= 500

php_value[session.save_handler] = files

php_value[session.save_path] = /var/lib/php/session,设置session存放位置

八、启动PHP-FPM:systemctl start php-fpm

九、安装httpd包:yum install httpd

十、查看Httpdmod_fcgi模块是否加载

httpd-M | grep fcgi

proxy_fcgi_module(shared)

十一、添加FCGI的配置文件

DirectoryIndex index.php

ProxyRequests off //是否开启正向代理

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 //开启FCGI反向代理,//前面的/相对于后面的/var/www/html而言,后面的$1是指前面的/(.*\.php)

十二、重启Httpd:systemctl start httpd

相关文章
相关标签/搜索