您的位置:首页 > 编程语言 > PHP开发

LAMP平台的构建之PHP

2018-01-15 19:59 260 查看
LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件能够提供动态web站点服务及其应用开发环境,包含linux操作系统,apache网站服务器,mysql数据库服务器,php(或perl,python)网页编程语言,lamp的优势包括成本低廉,可定制,易于开发,方便易用,安全和稳定。在linux系统中依次安装apache,MySQL,php,前几篇我们已经安装完了apache,MySQL,这次我们来安装PHP。
PHP“hypertext  perprocessor”(超文本预处理语言),是一种服务器端的HTML嵌入式脚本语言,是一种混合的新语言,拥有更好的网页执行速度,支持大多数数据库、操作系统

一、构建PHP环境
1.安装扩展数据库工具数据加密工具libmcrypt mcrypt mhash等



创建链接,方便使用







/usr/lib是系统库文件标准执行路径,库文件是编辑好的可供其他使用的一段代码
export 将一个变量变成全局变量



2.编译安装PHP





--prefix:指定将PHP安装到哪里
--with-mcrypt:加载数据加密等扩展工具支持
--with-apxs2:设置apache http server 提供的apxs模块支持程序的文件位置,整合 apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块
--with-mysql:设置MySQL数据库服务程序的安装位置
--with-config-file-path:设置PHP的配置文件php.ini将要存放的位置
--enable-mbstring:启用多字节字符串功能,以便支持中文等代码



3.设置lamp组件环境
调整主配置文件,php.ini



复制配置文件模版至安装目录下并重命名为php.ini(文件中以“;”开头的为注释行),选项如






.........等
通过修改其选项可以控制PHP网页的执行特性,如没有特殊要求,则无需修改
4.修改apache主配置文件
添加对.php类型网页文件的支持



在Directoryindex配置行中,添加index.php配置项,以识别常见的PHP首页文件



保存退出,重启httpd服务
二、测试lamp平台
1.测试服务器是否识别PHP网页
简单编写PHP网页测试文件



phpinfo()函数显示服务器的php环境信息



用客户机测试



能成功访问
2.测试MySQL是否能访问
安装phpmyadmin,管理MySQL数据库的web应用系统,可以很容易的管理数据库,可以在http://www.phpmyadmin.net下载
进行安装,复制套件文件夹至网页目录并重命名,用模版建立config.inc.php配置文件





三、优化php执行速度
如果php的页面加载速度慢,可以为php安装ZEND公司的ZendGuardLoader优化模块,可以进一步提高php程序的执行效率





编辑php.ini添加加载及启用ZendGuardLoader.so模块的配置语句



四、php与apache的连接

php如何与apache连接有三种方式:
1.cgi:通用网关接口,是一个协议或标准,规范apache向php传送的内容以及格式
2.模块:将php做为apache的一个模块,实现apache与php集成

3.fast-cgi/fpm:常驻内存

详细了解一下:
①CGI(common gateway interface)通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口,让Web服务器必要时启动额外的程序处理动态内容。CGI是一种协议,它定义了Webserver与CGI程序的通信方式。Webserver接受客户端的HTTP请求,然后建立进程执行CGI程序,客户端的请求被传递给CGI程序,CGI执行后结果再返回Webserver。 CGI的出现让WEB从静态变为为动态,随着Web的越来越普及,很多的网站的都需要有动态的页面,以便与浏览者互交。随着网络技术的发展,CGI方式的缺点也越来越突出。每次客户端请求都需要建立和销毁进程。因为HTTP要生成一个动态页面,系统就必须启动一个新的进程以运行CGI程序,不断地fork是一项很消耗时间和资源的工作。
②FastCGI:
众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中 并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等等。
FastCGI是一个常驻型的CGI,可以一直执行,只要激活后,不会每次都花时间去fork一次,而且还支持分布式运算(使得php程序解释执行可以单独交给php服务器),即可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
1、Web Server 启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module); 
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。 
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。 
4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 在正常的CGI模式中,php-cgi.exe在此便退出了。
③模块:
把php编译为apache的模块,就要考虑apache的MPM的工作模式。
首先我们要了解什么是MPM:
MPM:Multi Path Modules (多道处理模块)用于定义apache在响应多个用户请求时所工作的模型。有三种MPM模式:
prefork(一个请求一个进程响应)
worker(一个请求用一个线程响应,启动多个进程每个进程生成多个线程)
event(一个进程处理多个请求)
以模块安装的php没有独立的进程,是作为apache的模块和apache一起启动的。
以上三种MPM模式,worker模式会比prefork模式占据更少的内存,高并发下的表现更好。而且使用多进程和多线程混合模式,即使有一个线程挂了,也只影响和该线程同进程的其他线程,不会影响到其他的进程。但是如果有特别多的线程都使用keep-alive的长连接方式,则线程会一直被占据直到超时才释放,导致在高并发场景下无可用线程。而event模式使用了一个专门的线程来处理这些keep-alive类线程,较好的解决了这个问题。
三种模式的优缺点:
以CGI方式运行PHP,由于CGI是非常驻内存集,每次Webserver接受客户端的HTTP请求,然后建立进程执行CGI程序,客户端的请求被传递给CGI程序,CGI执行后结果再返回Webserver。 每次浏览页面都要重复上面的动作,会有非常大的消耗。
以mod_php模式运行PHP,意味着php是作为apache的一个模块来启动的,因此只有在apache启动的时候会加载扩展模块,在apache运行期间是不会再去读取和加载扩展模块的。显然使用mod_php的方式运行PHP效率比CGI方式更高。
而mod_php与fastcgi相比,俩者都有进程池的概念,但是,fastcgi将服务器端动、静态请求更好的分离。php进程出了问题不会将web服务器也down掉。

好的这一段,lamp平台的搭建完成了,下一篇我们了解一下shell语言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php lamp mysql llinux