LAMP平台——构建PHP运行环境

news2024/12/26 11:08:14

        在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和 MySQL的安装并没有严格的顺序;而PHP环境的安装一般放到最后,负责沟通Web服务器和数据库 系统以协同工作。

        PHP 即 Hypertext Preprocessor(超级文本预处理语言)的缩写,是一种服务器端的HTML嵌入式 脚本语言。PHP的语法混合了C、Java、Perl及部分自创的新语法,拥有更好的网页执行速度,更重 要的是PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持UNX、 Windows,Linux等多种操作系统。

         本节将介绍如何构建PHP运行环境,以实现LAMP协同架构。其前提条件是服务器中已经编译安装好 Apache HTTP Server 和MySQL.数据库。

安装PHP软件包

        PHP项目最初由Rasums Lerdorf在1994年创建,1995年发布第一个版本PHP 1.0.本小节将以 稳定版源码包php-5.5.38.tar.gz为例。该版本可以从PHP官方站点http://www.php.net下载。 下面介绍编译安装PHP相关软件包的基本过程。

        

1.准备工作

        为了避免发生程序冲突等现象,建议先将RPM方式安装的php及相关依赖包(如果已存在,卸载)。例如,根据实际安装情况可卸载php、php-cli、php-ldap.php-common.php-mysql等.另外,需要安装zlib-devel和libxml2-devel包。

[root@lgcllc ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps
错误:未安装软件包 php 
错误:未安装软件包 php-cli 
错误:未安装软件包 php-ldap 
错误:未安装软件包 php-common 
错误:未安装软件包 php-mysql 

[root@lgcllc ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@lgcllc ~]# rpm -ivh /mnt/Packages/zlib-devel-1.2.7-18.el7.x86_64.rpm 
[root@lgcllc ~]# rpm -ivh /mnt/Packages/xz-devel-5.2.2-1.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/libxml2-devel-2.9.1-6.el7_2.3.x86_64.rpm 

2.安装扩展工具库

        在实际企业应用中,一部分基于PHP开发的Web应用系统会需要额外的扩展工具,如数据加密 工具libmcrypt.mhash.mcrypt等(可以从站点http://sourceforge.net下载).安装PHP软件包之前, 应先安装好这些扩展工具程序。

源码的安装一般由这三个步骤:配置(configure) 编译(make) 安装(make install) 安装成功

(1)安装libmcrypt

[root@lgcllc ~]# rz -E           //将源码包libmcrypt-2.5.8.tar.gz拉进来
rz waiting to receive.  


[root@lgcllc ~]# tar zxf libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@lgcllc ~]# cd /usr/src/libmcrypt-2.5.8/
[root@lgcllc libmcrypt-2.5.8]# ./configure    
[root@lgcllc libmcrypt-2.5.8]# make && make install 
[root@lgcllc libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.* /usr/lib/

(2)安装mhash

[root@lgcllc ~]# rz -E    //将源码包mhash-0.9.9.9.tar.gz拉进来
rz waiting to receive.


[root@lgcllc ~]# tar zxf mhash-0.9.9.9.tar.gz -C /usr/src/
[root@lgcllc ~]# cd /usr/src/mhash-0.9.9.9/
[root@lgcllc mhash-0.9.9.9]# ./configure 
[root@lgcllc mhash-0.9.9.9]# make && make install
[root@lgcllc mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash* /usr/lib/

(3)安装mcrypt

root@lgcllc ~]# rz -E     //将源码包mcrypt-2.6.8.tar.gz拉进来
rz waiting to receive.


[root@lgcllc ~]# tar zxf mcrypt-2.6.8.tar.gz -C /usr/src/
[root@lgcllc ~]# cd /usr/src/mcrypt-2.6.8/
[root@lgcllc mcrypt-2.6.8]# ./configure
[root@lgcllc mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/lib   //解决configure配置报错
[root@lgcllc mcrypt-2.6.8]# ./configure
[root@lgcllc mcrypt-2.6.8]# make && make install

3.编译安装PHP

(1)解包

[root@lgcllc ~]# rz -E       //将源码包php-5.5.38.tar.gz拉进来
rz waiting to receive.


将下载获得的PHP源码包解压并释放到/usr/src目录下,切换到展开后的源码目录。
[root@lgcllc ~]# tar zxf php-5.5.38.tar.gz -C /usr/src/
[root@lgcllc ~]# cd /usr/src/php-5.5.38/

(2)配置

        在定制PHP的配置选项时,最关键的是要指定httpd、mysqld的安装路径,以便添加相关支持 设置,使LAMP各组件协同工作。除此之外,还可以指定安装路径,启用多字节支持、加密扩展支 持等。

[root@lgcllc php-5.5.38]# ./configure --prefix=/usr/local/php5 \
--with-mcrypt \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring

(3)编译及安装 

        编译的过程可能会需要较长时间,需耐心等待。

[root@lgcllc php-5.5.38]# make
[root@lgcllc php-5.5.38]# make install

设置LAMP组件环境

        设置LAMP组件环境,主要包括对PHP的配置文件php.ini.Apache的配置文件httpd.conf的调整。 前者用来确定PHP的运行参数,后者用来加载libphp5.so模块,以便支持PHP网页。

1.php.ini配置调整

(1)php.ini的建立及基本设置

        安装好PHP软件包以后,服务器并不会自动创建php.ini配置文件,但在源码目录下提供了两个 样例配置文件,分别对应于开发环境、生产环境。

        选择其中一个样例文件,并复制到 PHP的配置文件目录/usr/local/php5 下,并改名为php.ini。 在php.ini配置文件中,以分号开头的内容表示注释信息。

[root@lgcllc ~]# cp /usr/src/php-5.5.38/php.ini-development /usr/local/php5/php.ini
[root@lgcllc ~]# grep -v "^;" /usr/local/php5/php.ini | grep -v "^$"
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
。。。。。。

         通过修改php.ini文件中的配置内容,可以控制PHP网页的执行特性,如是否允许用户上传文件. 设置上传文件的大小限制、设置默认使用的字符集、加载额外的扩展模块等。如果没有特别要求. 可以直接沿用默认配置,不做任何修改。

[root@lgcllc ~]# vim /usr/local/php5/php.ini   //添加下列内容
[PHP]
default_charset = "utf-8"        //设置默认字符集为utf-8
file_uploads = On                //允许通过PHP网页上传文件
upload_max_filesize = 2M         //允许上传的文件大小限制
max_file_uploads = 20            //每个HTTP最多允许请求上传的文件数
post_max_size = 8M               //每次通过表单post提交的数据量限制
short_open_tag = On              //允许识别PHP短语法标记,即<?···?>
extension=php_mysqli.dll         //添加MySQL支持


。。。。。。

(2)添加ZendGuardLoader优化模块

        为了进一步提高PHP程序的执行效率,优化页面加载速度,可以为PHP添加Zend公司开发的 ZendGuardLoader 优化模块。若需要加密PHP 代码以限制未经授权的分发,还可以购买该公司的 ZendGuard 软件。

         ZendGuardLoader优化模块适用于PHP 5.3到PHP 5.6系列版本,该模块可以从Zend公司的官方 站点http://www.zend.com下载.若使用PHP 5.2系列版本.应改用较早的ZendOptimizer.为PHP 安装及添加 ZendGuardLoader 模块支持的过程如下所述。

        将下载的ZendGuardLoader包解压缩,并将源码目录下的模块文件复制到PHP程序的模块文件夹。

[root@lgcllc ~]# rz -E    //将源码包zend-loader-php5.5-linux-x86_64_update1.tar.gz拉进来
rz waiting to receive.


[root@lgcllc ~]# tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz -C /usr/src/
[root@lgcllc ~]# cd /usr/src/zend-loader-php5.5-linux-x86_64/
[root@lgcllc zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php

修改php.ini配置文件,添加加载及启用ZendGuardLoader.so模块的配置语句。

[root@lgcllc ~]# vim /usr/local/php5/php.ini   //再编辑下列两条进去
[PHP]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

2.httpd.conf配置调整

        要使httpd 服务器支持PHP页面解析功能,需通过LoadModule配置项加载PHP程序的模块文件, 并通过AddType配置项添加对“.php”类型网页文件的支持。除此之外.还应修改Directorylndex配 置行.添加 index.php 配置项,以识别常见的PHP首页文件。由于前面章节做虚拟Web站点,开启 了 Include conf/extra/httpd-vhosts.conf 配置项,所以这里需要将其注释掉。

[root@lgcllc ~]# vim /usr/local/httpd/conf/httpd.conf

首先这条默认是在的更改这条再加一条最后把这条注释掉 前面带'#'

重启服务以更新配置

[root@lgcllc ~]# /usr/local/httpd/bin/apachectl restart

        在上述配置内容中,LoadModule行应该会在安装PHP的过程中自动添加.其中的“php5_module" 表示模块名称:“modules/libphp5.so”表示模块文件位置。而AddType行需要手动添加,Directorylndex 行在原有基础上对其进行修改即可。

测试LAMP协同工作

        完成PHP相关软件的安装、调整配置以后,应对其进行必要的功能测试,以验证LAMP平台各 组件是否能够协同运作。在网站根目录下创建相应的PHP测试网页,然后通过浏览器进行访问.根 据显示结果即可判断LAMP平台是否构建成功。

        下面分别从PHP网页的解析、通过PHP页面访问MySQL数据库两个方面进行测试。 要想测试PHP环境是否能够正常工作,需要建立一个使用PHP语言编写的网页文件,并通过httpd 服务器发布,在浏览器中对其进行访问。由 用于测试时,只需要建立一个简短的PHP测试文件即可。

1.测试PHP网页能否正确显示

        编写一个“.php”格式的测试网页文件,使用PHP内建的“phpinfo()”函数显示服务器的PHP 环境信息,PHP代码应包括在“<?php…?>”标记之间。将测试网页文件放置到网站根目录下,如 /usr/local/httpd/htdocs/test1.php。

[root@lgcllc ~]# vim /usr/local/httpd/htdocs/test1.php   //编辑下列代码用于测试
<?php
phpinfo();
?>

        通过浏览器访问测试,如http://192.168.55.220/test1.php。若能够看到PHP程序的版本号、配置命令、运行变量等相关信息,如下图所示,则表示此Web服务器已经能够正常显示PHP网页;若还能看到Zend引擎相关信息,则表示ZendGuardLoader模块也已成功启用。

2.测试PHP网页能否访问MySQL数据库

        编写一个测试网页文件test2.php.添加简单的数据库操作命令,用于验证与MySQL服务器的连 接、查询等操作。其中,“mysqli_connect()"函数用于连接MySQL数据库,需要指定目标主机地址, 以及授权访问的用户名、密码。

[root@lgcllc ~]# vim /usr/local/httpd/htdocs/test2.php  //编辑下列代码用于测试
<?php
$link=mysqli_connect('localhost','root','123457');     //连接MySQL数据库 使用root的账号密码
if($link) echo "恭喜你,数据库连接成功啦!!!";           //连接成功时的反馈消息
mysqli_close($link);                                   //关闭数据库连接  
?>

    

         通过浏览器访问测试,如http://192.168.55.220/test2.php。若能看到成功;连接的提示信息,如下图所示,则表示能够通过PHP网页访问MySQL数据库.当使用了错误的用户名、密码,或者因“mysqli-connect()” 函数未运行而导致连接失败时,执行时将会报错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1314808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连续型随机变量的概率密度

如果对于随机变量的分布函数&#xff0c;存在非负可积函数&#xff0c;使得对于任意实数&#xff0c;有&#xff1a; 那么就称为连续型随机变量&#xff0c;称为的概率密度函数&#xff0c;简称密度函数。

Spring 6(一)【Spring 入门】

前言 好久没有写博客了&#xff0c;最近刚忙完考试&#xff0c;眼下又是英语四六级。Flink 按说应该是大数据学习的主线任务&#xff0c;但是长时间学一门技术还是心累的。正好之前对 Java 注解有了进一步的熟悉&#xff0c;一直想着熟悉巩固。所以&#xff0c;今天开始就来深入…

Chapter 7 - 3. Congestion Management in Ethernet Storage Networks以太网存储网络的拥塞管理

Pause Threshold for Long Distance Links长途链路的暂停阈值 This section uses the following basic concepts: 本节使用以下基本概念: Bit Time (BT): It is the time taken to transmit one bit. It is the reciprocal of the bit rate. For example, BT of a 10 GbE po…

微信小程序ios中非cover组件点击重复触发地图tap事件

现象&#xff1a; map中使用view组件的click事件会重复触发地图的tap组件&#xff0c;只在ios上出现 <map id"maps" style"width: 100vw;height: 100vh;" :latitude"latitude" :longitude"longitude":markers"markers"…

P with Spacy:自定义文本分类管道

一、说明 Spacy 是一个功能强大的 NLP 库&#xff0c;其中许多 NLP 任务&#xff08;如标记化、词干提取、词性标记和命名实体解析&#xff09;均通过预训练模型提供开箱即用的功能。所有这些任务都由管道对象以及逐步应用于给定文本的不同函数的内部抽象来包装。该管道可以通过…

STM32_HAL库—IWDG看门狗

一、CubeMX设置 1、晶振配置&#xff08;72M&#xff09; 2、数据配置 超时时间 Tout prv / LSI * rlv (s) 其中prv是预分频器寄存器的值&#xff0c;rlv是重装载寄存器的值&#xff0c;而LSI值默认是40kHz&#xff0c;如下所示。 3、代码实现 int main(){while(1){HAL_IW…

C++ 学习系列 -- 模板 template

一 C 模板介绍&#xff1f; C 为什么引入模板&#xff1f; 我的理解是&#xff1a; C 引入模板的概念&#xff0c;是为了复用重复的代码&#xff0c;当某些代码除了操作的数据类型不同以外&#xff0c;其他逻辑全都相同&#xff0c;此时就适合采用模板的方式。 定义模板类或者…

Linux的文件系统 内核结构

Linux的文件系统 Q1&#xff1a;什么是文件系统&#xff1f; A&#xff1a;在学术的角度下&#xff0c;文件系统指“操作系统用于明确存储设备组织文件的方法”&#xff0c;是“文件管理系统”的简称&#xff0c;本质也是代码&#xff0c;一段程序 Q2&#xff1a;文件系统&…

使用opencv的Canny算子实现图像边缘检测

1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题&#xff0c;也是经典的技术难题之一。如何快速、精确地提取图像边缘信息&#xff0c;一直是国内外的研究热点&#xff0c;同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…

代码随想录-刷题第二十八天

93. 复原 IP 地址 题目链接&#xff1a;93. 复原 IP 地址 思路&#xff1a;切割问题&#xff0c;原理上还是抽象成树形结构&#xff0c;然后使用回溯法。 131 题的要求是&#xff1a;让你把字符串 s 切分成若干个合法的回文串&#xff0c;返回所有的切分方法。 本题的要求是…

知识|基于混合模式的多余度飞控全数字仿真系统研究

*余度&#xff08;Redundancy&#xff09;&#xff1a;一种确保安全的设计手段&#xff0c;使得出现两个及以上故障时&#xff0c;才会引起既定不希望发生的工作状态。 飞行控制软件主要完成飞行传感器数据处理、飞行姿态控制和余度管理任务&#xff0c;对保证飞机安全性和可靠…

GroupMixFormer:基于Group-Mix注意力的视觉Transformer

文章目录 摘要1、简介2、相关工作2.1、视觉转换器2.2、全面的自注意力建模 3、组混合注意力和GroupMixFormer3.1. 动机&#xff1a;从个体到群体3.2. GMA: 混合组以获得更好的注意力3.3. 架构配置 4、实验4.1、实现细节4.2. 与最先进模型的比较4.3. 消融实验 5、结论 摘要 htt…

[论文笔记] chatgpt系列 SparseMOE—GPT4的MOE结构

SparseMOE: 稀疏激活的MOE Swtich MOE,所有token要在K个专家网络中,选择一个专家网络。 显存增加。 Experts Choice:路由MOE:​​​​​​​ 由专家选择token。这样不同的专家都选择到某个token,也可以不选择该token。 由于FFN层的时间复杂度和attention层不同,FFN层的时…

[Vulnhub靶机] DC-1

[Vulnhub靶机] DC-1靶机渗透思路及方法&#xff08;个人分享&#xff09; 靶机下载地址&#xff1a; https://download.vulnhub.com/dc/DC-1.zip 靶机地址&#xff1a;192.168.67.25 攻击机地址&#xff1a;192.168.67.3 一、信息收集 1.使用 arp-scan 命令扫描网段内存活的…

代码随想录刷题题Day14

刷题的第十四天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day14 任务 ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和 1 平衡二叉树 二叉树节点的深度&#xff1a;指从根节…

数据库系列之简要对比下GaussDB和OpenGauss数据库

GaussDB作为一款企业级的数据库产品&#xff0c;和开源数据库OpenGauss之间又是什么样的关系&#xff0c;刚开始接触的时候是一头雾水&#xff0c;因此本文简要对比下二者的区别&#xff0c;以加深了解。 1、GaussDB和OpenGauss数据库简要对比 GaussDB是华为基于PostgreSQL数据…

用Python快速从深层嵌套 JSON 中找到特定的 Value

有时候&#xff0c;我们拿到一个JSON数据的时候&#xff0c;会难以看出其逻辑层次结构。 这时候就需要我们进行代码解析了。 代码&#xff1a; import jsondef find_json_value(data_json, value, path""):if isinstance(data_json, dict):for k, v in data_json.…

学生用的台灯选什么比较好?热门考研护眼台灯推荐

是不是在台灯下用眼时间长了就觉得眼睛干涩难受&#xff0c;这说明是时候该换掉你的普通台灯换一盏护眼台灯了&#xff0c;用了才知道有多香。小台灯也有大学问&#xff0c;如果还不知道该怎么挑台灯的话也没关系&#xff0c;我已经总结了一份护眼台灯的科普和攻略&#xff0c;…

vmware安装Linux虚拟机设置固定IP地址

Linux虚拟机设置固定IP 近期工作需要&#xff0c;本地用VMware安装了三台Linux-centos虚拟机&#xff0c;来搭建rocketmq集群。但是IP地址每天关机重启之后就会比变化&#xff0c;很是恼火。找到了一个修改的教程&#xff0c;亲测有效&#xff01;&#xff01;&#xff01;&am…

MySQL数据存储、索引记录

行格式(每行记录) 行格式(每行记录)&#xff1a; 以记录为单位来向表中插入数据的&#xff0c;这些记录在磁盘上的存放方式也被称为 行格式 或者 记录格式。 InnoDB 存储引擎4种不同类型的 行格式 &#xff0c;分别是 Compact 、 Redundant 、Dynamic 和 Compressed 行格式。组…