Linux--LAMP 平台部署及应用

5.1 LAMP平台概述

      LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统,Apache 网站服务器、MySQL数据库服务器,PHP(或Perl、Python)网页编程语言

1.LAMP平台的构成组件

     在LAMP平台的四个构成组件中,每个组件都承担着一部分关键应用,经过十几年的发展,各 组件间的兼容性得到了不断的完善,协作能力和稳定性也不断增强,可以构建出非常优秀的Web应 用系统。各组件的主要作用如下。

     > Linux操作系统:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他 三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows,UNX等操作系统)。

     > Apache网站服务器:作为LAVP架构的前端,是一款功能强大,稳定性好的Web服务器程 序,该服务器直接面向用户提供网站访问,发送网页、图片等文件内容。

     > MySQL数据库服务器:作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息、客户资料、业务数据等都可以存 储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。

    > PHP/Perl/Python 网页编程语言:作为三种开发动态网页的编程语言,负责解释动态网页文 件,并提供Web应用程序的开发和运行环境,其中,PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发。

2. LAMP平台的应用优势

     构成LAMP平台的四个组件,每个组件都经历了数十年之久的企业应用的考验,各自都是同类 软件中的佼佼者,从而成为典型的“黄金搭档”。其主要优势体现在以下几个方面。

    > 成本低廉:构成组件都是开放源代码的软件,可以自由获得和免费使用,在技术上和许可 证方面没有太严格的限制,大大降低了企业的实施成本。

    > 可定制:拥有大量的额外组件和可扩展功能的模块,能够满足大部分企业应用的定制需求, 甚至可以自行开发,添加新的功能。

    > 易于开发:基于LAMP平台的动态网站中,页面代码简洁,与HTML.标记语言的结合度非常 好,即使是非专业的程序员也能够轻松读懂乃至修改网页代码。

    > 方便易用:PHP、Perl等属于解释性语言,开发的各种Web程序不需要编译,方便进行移植 使用。整套的网站项目程序,通常只要复制到网站目录中,就可以直接访问。

    > 安全和稳定:得益于开源的优势,大量的程序员在关注并持续改进LAMP 平台的各个组 件,发现的问题能够很快得到解决。LAMP架构已经历了数十年的长期验证,在安全性和 稳定性方面表现得非常优秀。

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

5.2.1 安装PHP软件包

1.准备工作

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

[root@node01 ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps

[root@node01 ~]# mount /dev/cdrom /mnt/  //挂载

[root@node01 ~]# rpm -ivh /mnt/Packages/zlib-devel-1.2.7-18.el7.x86_64.rpm

[root@node01 ~]# rpm -ivh /mnt/Packages/xz-devel-5.2.2-1.el7.x86_64.rpm

[root@node01 ~]# 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软件包之前, 应先安装好这些扩展工具程序。

去ftp下载 

[root@node01 ~]# mkdir php
[root@node01 ~]# cd php/
[root@node01 php]# ftp 172.16.37.13

ftp> get libmcrypt-2.5.8.tar.gz

ftp> get mhash-0.9.9.9.tar.gz

ftp> get mcrypt-2.6.8.tar.gz

ftp> get zend-loader-php5.5-linux-x86_64_update1.tar.gz

ftp> get php-5.5.38.tar.gz

ftp> get phpMyAdmin-4.7.2-all-languages.tar.gz

1)安装libmerypt

[root@node01 php]# tar zxf libmcrypt-2.5.8.tar.gz -C /usr/src/  //解压
[root@node01 php]# cd /usr/src/libmcrypt-2.5.8/
[root@node01 libmcrypt-2.5.8]# ./configure //配置

[root@node01 libmcrypt-2.5.8]# make //编译

[root@node01 libmcrypt-2.5.8]# make install //安装

[root@node01 libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.* /usr/lib

2)安装mhash

[root@node01 php]# tar zxf mhash-0.9.9.9.tar.gz -C /usr/src/
[root@node01 php]# cd /usr/src/mhash-0.9.9.9/
[root@node01 mhash-0.9.9.9]# ./configure

[root@node01 mhash-0.9.9.9]# make

[root@node01 mhash-0.9.9.9]# make install

[root@node01 mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash.* /usr/lib

3)安装morypt

[root@node01 php]# tar zxf mcrypt-2.6.8.tar.gz -C /usr/src/
[root@node01 php]# cd /usr/src/mcrypt-2.6.8/
[root@node01 mcrypt-2.6.8]# ./configure

[root@node01 mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/lib  //解决configure配置报错
[root@node01 mcrypt-2.6.8]# ./configure

[root@node01 mcrypt-2.6.8]# make

[root@node01 mcrypt-2.6.8]# make install

3.编译安装PHP

1)解包

将下载获得的PHP源码包解压并释放到/usr/src目录下,切换到展开后的源码目录。

[root@node01 php]# tar zxf php-5.5.38.tar.gz -C /usr/src/
[root@node01 php]# cd /usr/src/php-5.5.38/

2)配置

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

[root@node01 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

以下是配置结尾图

上述配置命令中,各选项的含义如下。

 --prefix:指定将PHP程序安装到哪个目录下,如/usr/local/php5。

--with-mcrypt:加载数据加密等扩展工具支持。

--with-apxs2:设置Apache HTTP Server提供的apxs模块支持程序的文件位置。

--with-mysql:设置MySOL数据库服务程序的安装位置。

--with-mysqli:添加 mysqli扩展支持。

--with-config-file-path:设置PHP的配置文件php.ini将要存放的位置。

--enable-mbstring:启用多字节字符串功能,以便支持中文等代码。

3)编译及安装

[root@node01 php-5.5.38]# make

[root@node01 php-5.5.38]# make install

5.2.2 设置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@node01 ~]# cp /usr/src/php-5.5.38/php.ini-development /usr/local/php5/php.ini
[root@node01 ~]# grep -v "^;" /usr/local/php5/php.ini | grep -v "^$"  //查看复制过来的内容

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

[root@node01 ~]# vim /usr/local/php5/php.inidefault_charset = "utf-8"
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
post_max_size = 8M
short_open_tag = On
extension=php_mysqli.dll

2)添加ZendGuardLoader优化模块

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

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

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

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

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

[root@node01 ~]# vim /usr/local/php5/php.inizend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

2. httpd.conf配置调整

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

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

 

[root@node01 ~]# /usr/local/httpd/bin/apachectl restart //重启服务

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

5.2.3测试LAMP协同工作

     

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

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

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

[root@node01 ~]# vim /usr/local/httpd/htdocs/test1.php输入以下内容<?php
phpinfo ();
?>

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

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

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

[root@node01 ~]# vim /usr/local/httpd/htdocs/test2.php<?php
$link=mysqli_connect('localhost','root','abc.123');
if($link) echo "恭喜你,数据库连接成功啦!!";
mysqli_close($link);
?>

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

5.3.1部署phpMyAdmin系统

       phpMyAdmin是一个使用PHP语言编写,用来管理MySQL数据库的Web 应用系统,通过该套件 提供的网页界面,即便是对SQL语句不太熟悉的人,也能够非常容易地对MySQL数据库进行管理和维护。  

     phpMyAdmin的源码包可以从其官方站点http://www.phpmyadmin,net 下载,下面以多国语言版源码包phplMyAdmin-4.7.2-all-languages.tar.gz为例,介绍phpMyAdmin 套件的部署过程。

1.解包并复制到网站目录

     对于大部分PHP应用系统,只需要解包后复制到网站目录下即可完成部署,之后再根据需要调 整配置,或者访问安装页面以完成进一步的安装。例如,若要将phpMyAdmin套件部署到网站根目录 下,以便通过站点http://192.168.184.101/phpMyAdmin进行访问,可以参考以下内容。

[root@node01 ~]# cd php/
[root@node01 php]# tar zxf phpMyAdmin-4.7.2-all-languages.tar.gz 
[root@node01 php]# mv phpMyAdmin-4.7.2-all-languages /usr/local/httpd/htdocs/phpMyAdmin

2.建立配置文件config.inc.php

     将phpMyAdmin套件复制到网站目录以后,还需要创建配置文件方可正常使用,默认提供的样例 配置文件为config.sample.inc.php,需参照该文件内容建立configi.inc.php配置文件。查找配置文件 中的blowfish_secret行,默认已经设置了一个短语密钥(此密钥用于网页cookie认证,不需要用户 记忆),可以根据需要自行修改。

[root@node01 php]# cd /usr/local/httpd/htdocs/phpMyAdmin/
[root@node01 phpMyAdmin]# cp config.sample.inc.php config.inc.php

3.访问 phpMyAdmin的Web管理界面

      在浏览器中访问http://192.168.184.101/phpMyAdmin,如果能够看到phpMyAdmin系统的登录 界面,如图中所示,则表示部署成功,使用MySQL数据库的用户(不能是密码为空的用户)登 录后,即可在授权范围内对数据库进行管理。

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

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

相关文章

【人工智能 | 知识表示】问题规约法 谓词/符号逻辑,良好的知识表示是解题的关键!(笔记总结系列)

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

c#可变参数(params)关键字

通过使用 params 关键字&#xff0c;可以指定采用可变数量参数的方法参数。 可以发送参数声明中指定类型的参数的逗号分隔列表&#xff0c;也可以发送指定类型的参数数组。您也可以不发送任何参数。如果未发送任何参数&#xff0c;则参数列表的长度为零。 方法声明中的 param…

早上好,我的leetcode(第一期)

写在前面&#xff1a;每天早上到实验室早上昏昏欲睡&#xff0c;那不如写一题吧~ 文章目录 371. 两整数之和面试题08.05.递归乘法29.两数相除50.Pow(x,n)面试题 16.07. 最大数值2119. 反转两次的数字69. x 的平方根70.爬楼梯1631.最小体力消耗路径 371. 两整数之和 两整数之和…

基于ssm轻型卡车零部件销售平台源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;轻型卡车零部件销售平台也不例外&#xff0c;但目前国内的市场仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&a…

Caused by: java.net.ConnectException: 拒绝连接: hadoop104/192.168.124.130:4142

项目场景&#xff1a;hadoop102接收消息&#xff0c;自定义拦截器&#xff0c;包含hello的发往hadoop103,不包含的发往hadoop104 报错原因&#xff1a; 原因1&#xff1a; 应该先开启接收方&#xff08;服务端&#xff09;&#xff0c;hadoop103,hadoop104,最后开启hadoop10…

QDialog子类的使用

背景&#xff1a; 我用Qt designer实现了如下效果&#xff1a; 但在实际使用的时候&#xff0c;发现OK和Cancel按钮点是点不动的。 解决方法&#xff1a; 需要手动添加相关信号槽函数&#xff1a; connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(accept()));connect…

yarn或者pnpm第一次执行的时候遇到报错yarn : 无法加载文件......因为在此系统上禁止运行脚本

报错&#xff1a; yarn : 无法加载文件 C:\Users\rina2\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/http://go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 解决方案&#xff1a…

AWS-CDN只能备用域名访问-使用Lambda@Edge(禁止分配的域名访问)

场景&#xff1a;cdn使用备用域名后&#xff0c;希望用户只能从备用域名访问&#xff0c;而不是自动分配的cdn域名&#xff0c;这也将是一个安全漏洞&#xff0c;被扫描到cdn域名访问刷流量等&#xff01; 【建议部署前查看】参考链接&#xff1a; 1.官方cdn返回示例 2.lambdae…

算法训练第三十九天|62. 不同路径、63. 不同路径 II

62. 不同路径&#xff1a; 题目链接 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有…

云服务配置docker镜像容器以及常用操作命令

首先通过ssh进入云服务器。如何ssh进入云服务器。 简单讲解一下docker中镜像和容器&#xff0c;打个比方&#xff0c;镜像相当于印钱的那个模板&#xff0c;容器相当于从模板上拓下来的钱&#xff0c;不同的模板可以印出不同的钱。但容器被修改后也可以变成新的镜像&#xff0…

Postman中参数填写方式

Postman中参数填写和请求方法有关&#xff0c;一般接口用例请求方法GET与POST常用&#xff0c;所以主要是这两种请求方法请求参数填写 一、GET请求方法参数填写 1、直接在URL中填写请求参数,如直接在URL中填写&#xff1a; http://www.example.com:8089/userapi?unamelisi&…

c++_01_名字空间_复合类型_缺省参数_哑元函数

0 前言 C和C一样&#xff0c;都属于编译型语言 C和C一样&#xff0c;都属于强类型语言 C对C完全兼容&#xff0c;并提供更多面向对象的特性&#xff1a;语言风格更加简洁&#xff0c;类型检查更加严格 1 名字空间 namespace WHY&#xff1f;划分更精细的逻辑单元(逻辑空间)&…

Faulhaber 2.5代运动控制系统 25mNm/13W

2.5代控制系统&#xff1b; PWM输出&#xff1b; 四象限控制带&#xff1b; RS232或CANopen通信接口&#xff1b; 2250_BX4_CxD 选件&#xff0c;电缆和连接信息&#xff1a; 适配部件&#xff1a;

谷歌的开源供应链安全

本内容是对Go项目负责人Russ Cox 在 ACM SCORED 活动上演讲内容[1]的摘录与整理。 SCORED 是Software Supply Chain Offensive Research and Ecosystem Defenses的简称, SCORED 23[2]于2023年11月30日在丹麦哥本哈根及远程参会形式举行。 摘要 &#x1f4a1; 谷歌在开源软件供应…

【面经】2024年软件测试面试题大全(持续更新)附答案

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

YOLOv8使用自定义改进后的模型同时《加载官方预训练权重》教程,附代码

YOLOv8自定义改进后的模型同时《加载官方预训练权重》教程,附代码 💡该教程为改进YOLOv8指南,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可💡更方便的统计更多实验数据,方便写作 YOLOv8自定义…

Spring boot basePackages 通配符* 找不到Bean

Spring boot basePackages 通配符* 找不到Bean 今天遇到了一个关于spring boot 组件ComponentScan 中basePackages 使用通配符* 找不到Bean的问题 目录结构中BussinessPerson与Dog类中都有标注有Component注解&#xff0c;结果扫描不到。 然后删除通配符&#xff0c;结果运行成…

C++相关闲碎记录(15)

1、string字符串 #include <iostream> #include <string> using namespace std;int main (int argc, char** argv) {const string delims(" \t,.;");string line;// for every line read successfullywhile (getline(cin,line)) {string::size_type beg…

ADUM1200ARZ数字隔离器:重新定义技术标准

ADUM1200ARZ数字隔离器成为技术进步领域的关键组件。其创新设计和多方面功能重新定义了数字隔离技术的格局&#xff0c;提供了满足不同工业需求的众多功能。让我们通过本文直观的了解ADUM1200ARZ的功能与技术标准。 窄体且符合ROHS&#xff1a;设定新基准 该数字隔离器采用窄体…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前端应用的蓝绿发布

目录 一、实验 1.蓝绿发布准备 2.Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前端应用的蓝绿发布 二、问题 1.手动构建Jenkins前端项目CI流水线报错 2.如何优化手动构建流水线选项参数 一、实验 1.蓝绿发布准备 &#xff08;1&#xff09;环境 表1 蓝绿发布…