LAMP--PHP应用(修改版1.0)

LAMP

L:Linux

A:apache(httpd)

M:MySQL,MariaDB

P:PHP,Python

Web的资源类型分为两种:

静态资源:原始形式和响应内容一样,在客户端浏览器执行,web服务器可以直接返回

动态资源:单纯的web服务器不能够处理,需要通过发送给其他的服务端执行相关程序文件,将结果返回给客户端

LAMP的工作原理如下:

Client通过http协议发请求访问动态页面 ---> Apache 收到请求后通过CGI协议将动态请求发送给能处理的应用程序 ---> PHP(或者其他应用程序)通过mysql自身的协议传送数据 ---> MySQL

CGI(Common Gateway Interface)通用网关接口:描述了客户端和服务器之间的传输标准

 

LAMP--PHP应用(修改版1.0)


PHP:脚本编程语言

官方网址:http://www.php.net/

运行方式有两种:

1.Modules:本质上是通过加载各类不同的模块扩展httpd服务功能(依附于于httpd在prefork工作模式下),安装php包

2.FastCGI:是根据php-fpm服务独立地提供服务

PHP的配置文件都分为 主:/etc/php.ini           从:/etc/php.d/*.ini(以".ini"结尾的文件)

其中一些较为常用的配置选项如下:

max_execution_time = 30                            最长执行时间30s

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编写的软件有PhpMyAdmin(网页方式管理数据库)、WordPress(博客平台)、Discuz(论坛)

PHP扩展连接MySQL时有三种连接方式:mysql、mysqli、pdo,由php-mysql提供;其中pdo除了MySQL外还可以连接其他种类数据库


PHP运行方式为Modules时

部署PhpMyAdmin、WordPress、Discuz,以及进行xcache加速访问实验

基于一台服务器实现,安装httpd、mariadb-server、php、php-mysql

1.部署PhpMyAdmin

下载对应程序包,解压缩至httpd的网页站点目录下,命名为pma文件夹

在解压后的文件夹中,执行如下命令:

    cp config.sample.inc.php config.inc.php (根据需要修改文件中对应内容)

另外安装一个扩展包php-mbstring,并且在在MySQL数据库中授权管理PhpMyAdmin的用户

启动所有相关服务、访问网页即可运行操作

2.部署WordPress

下载对应程序包,解压缩至httpd的站点目录下,命名为wordpress

在MySQL数据库中建立对应数据库和授权指定管理WordPress用户

在解压后的文件夹中,执行如下命令:

    cp wp-config-sample.php wp-config.php (根据此前设定的MySQL数据库相关信息修改文件中对应内容)

启动所有相关服务、访问网页即可运行操作

3.部署Discuz

下载对应程序包,需注意的解压后会有多个文件夹,将文件夹放入站点路径下

需要对upload文件夹进行权限设置,指定httpd服务用户apache可对其有写权限,设置如下:

    setfacl -R -m u:apache:rwx upload/ (安装结束后可设定只读)

在MySQL数据库中建立对应数据库和授权指定管理Discuz用户

启动所有相关服务、访问网页即可运行操作


简单的测试工具命令 ab ,可测试相关服务性能,来自httpd-tools程序包

ab -c“执行请求数量”-n“并发请求数”“应用程序的URL路径”


实验:编译安装php-xcache实现加速访问上述实验对应的部署应用

1.下载并解压缩对应程序包

2.安装编译工具包组development tools,并需要另外安装php-devel包

3.读取INSATLL文件,根据步骤进行编译安装

4.将编译安装后生成的模块modules/xcache.so拷贝致/usr/lib64/php/ modules/下

5.将编译安装后生成的文件xcache.ini拷贝至/etc/php.d/下(需要注意一下文件中的相关配置)

6.重新启动一下httpd服务即可运用


PHP运行方式为FastCGI时

独立php-fpm服务,端口号默认为9000

当php与httpd是一台主机上的两个独立的服务进程,httpd在接收到php文件转交给php服务时,需要在配置文件中设定相关转交信息如下:

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1

注意:当php与httpd是在两台服务器上,IP地址需要重新指定,并且httpd服务要将proxy_fcgi_module模块启用,从而充当php客户端

实验:部署PhpMyAdmin、WordPress、Discuz

基于一台服务器实现,安装httpd、mariadb-server、php-fpm、php-mysql

1.利用httpd的虚拟主机配置方式,分别建立对应的PhpMyAdmin、WordPress、Discuz的站点,格式举例如下:

DirectoryIndex index.php

<VirtualHost *:80>

ServerName www.discuz.com

DocumentRoot /app/discuz

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/discuz/$1

<Directory "/app/discuz/">

Require all granted

</Directory>

</VirtualHost>

除此之外需要对域名进行解析,可在/etc/hosts文件中设置,以及对设置的网站执行如下命令:

    setfacl -R -m u:apache:rwx 文件夹 (安装结束后可设定只读)

还有PhpMyAdmin、WordPress需要另外修改解压后的配置文件:

    cp config.sample.inc.php config.inc.php

    cp wp-config-sample.php wp-config.php

(根据需要修改文件中对应内容)

2.在MySQL数据库中建立对应数据库和授权指定管理用户

3.在php-fpm服务的配置文件/etc/php-fpm.d/www.conf中,根据环境需要设置不同的条件(当和Apache不在一台主机时需要修改)

4.启动所有相关服务即可实现