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)通用网关接口:描述了客户端和服务器之间的传输标准
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.启动所有相关服务即可实现