linux 6下编译安装配置LAMP平台

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或...

LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。本文主要描述LAMP的集中搭建架构以及编译安装LAMP环境,其中的P指PHP。

一、LAMP架构请求描述

client http(请求index.php或者index.html)
        --->apache(httpd web服务器响应,如果是静态文件,则直接响应,如果是动态请求则转向下一步) 
            --->php 接受请求(php解释器通过fastcgi响应,如果需要查询数据则转向一下) 
                        --->透过mysql客户端查询数据库(mysql驱动)  
                                     --->mysql服务器响应数据库查询(返回查询结果)

二、LAMP部署常用方案

LAMP根据业务访问量可以将其部署在一台机器上面,也可以分离部署到不通的机器,如下:
整合方案:LAMP
分离方案:
        LA + P + M
        LAP + M
        LA + M + P
        LAM + P

三、编译安装步骤及依赖性

由于php有相关依赖性因此建议:
    安装次序为httpd或mysql,再装php。

httpd把.php资源的请求“反向代理”至php服务器;httpd依赖于反向代理模块以及专用于fastcgi反向代理模块
httpd-2.2默认没有附带专用fastcgi反向代理模块,所以需要独立安装;
httpd-2.4已自带fastcgi反向模块,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充       
httpd-2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。 

四、编译安装过程

1、编译安装httpd

直接参考:Linux下编译安装Apache httpd 2.4

2、编译安装mysql

直接参考:Linux 下MySQL源码安装完整版

3、编译安装php

直接参考:Linux 6 下编译安装 PHP 5.6

五、配置注意项

1、LAMP全集成到单台服务器上的配置

# vim  /etc/httpd24/httpd.conf     ###注意此处,我这里是单独编译安装的httpd2.4版本,所以路径有所不同
        LoadModule proxy_module  modeles/mod_proxy.so
        LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

        ###在<IfModule mime_module>模块中添加
        AddType  application/x-httpd-php  .php   
        AddType  application/x-httpd-php-source  .phps

        ProxyRequests Off     ###关闭正向代理,开启下行的反向代理
        ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1

        DirectoryIndex  index.php  index.html

2、LAMP分离方式到不通的服务器的配置

Aapache 需要按照上面的方法装载模块以及添加类型
Aapache 在配置反向代理时,应指定PHP服务器的IP地址及相应端口号,前后端路径可以不一致,后端应指定绝对路径
    如前端为/var/www/html,后端为/website/www,则fcgi://127.0.0.1:9000/website/www/$1
        PHP进程服务的配置文件php-fpm.conf配置文件中应修改监听配置
        如假定PHP服务器的IP为192.168.1.253,此IP可接受外网请求
            httpd.conf    fcgi://192.168.1.253:9000
            php-fpm.conf    listen = 192.168.1.253:9000

六、apache与php连接模式

1、动态模块方式:
  prefork模式使用libphp5模块 
   worker和event模式则使用libphp5-zts模块

2、CGI方式:
CGI(Common Gateway Interface 简称通用网关接口)。
CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。
CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,
    CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。
其工作流程如下:
a、浏览器通过HTML表单或超链接请求指向一个CGI应用程序的URL。
b、服务器收发到请求。
c、服务器执行指定CGI应用程序(开启进程)
d、CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。
e、CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。
f、网络服务器把结果返回到浏览器中(销毁进程)

工作流图
这里写图片描述

3、FastCGI方式:
   FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。
       (这是CGI最为人诟病的fork-and-execute 模式)。
   它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

a、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
b、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
c、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。
    Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
e、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。
    当FastCGI子进程关闭连接时,请求便告处理完成。
   FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。
   在CGI模式中,php-cgi在此便退出了。

FastCGI工作流图
这里写图片描述

4、CGI与FastCGI两者差异主要在于:
        CGI在处理任何一个请求需要开启进程,销毁进程,开销较大
        FastCGI会在初始化的时候启动多个cgi进程,监听来自网络的请求;
        当处理完毕任务后则由FastCGI进程管理器回收管理,省去反复创建回收的开销。

七、验证

以下是一个分离架构的LAMP编译安装后的环境
1、Web服务器
# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   May 12 2016 10:27:23

# ifconfig|grep inet |head -1
        inet 192.168.1.244  netmask 255.255.255.0  broadcast 192.168.1.255

###配置
# grep -E "Proxy|php" /etc/httpd/conf/httpd.conf
    DirectoryIndex index.php index.html
    AddType  application/x-httpd-php  .php   
        AddType  application/x-httpd-php-source  .phps
ProxyRequests Off     
ProxyPassMatch ^/(.*\.php)$  fcgi://192.168.1.245:9000/usr/local/apache/htdocs/tmp/$1

2、MySQL服务器      
# cat /etc/redhat-release
CentOS release 6.7 (Final)

# mysql -V
mysql  Ver 14.14 Distrib 5.6.30, for Linux (x86_64) using  EditLine wrapper 

# ifconfig|grep inet |head -1
          inet addr:192.168.1.242  Bcast:192.168.1.255  Mask:255.255.255.0

3、PHP服务器
# more /etc/redhat-release    ### Author : Leshami
CentOS release 6.7 (Final)    ### Blog   : http://blog.csdn.net/leshami

# ./php -v
PHP 5.6.9 (cli) (built: Jul 17 2016 18:45:50) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

# ifconfig|grep inet |head -1
          inet addr:192.168.1.245  Bcast:192.168.1.255  Mask:255.255.255.0

# grep -vE ";|^#" /usr/local/php/etc/php-fpm.conf|grep listen
listen = 192.168.1.245:9000

### PHP服务器上的测试页面
# vim  /var/www/html/connmysql.php
<?php
    $conn = mysql_connect('192.168.1.242','root','***');
    if ($conn)
        echo "succ";
    else
        echo "failure";
    mysql_close();
?>

4、在DB服务器上验证测试页
# ifconfig|grep inet |head -1
          inet addr:192.168.1.242  Bcast:192.168.1.255  Mask:255.255.255.0

# curl http://192.168.1.244/connmysql.php
succ
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
243 7
|
3月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
3月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
103 9
|
3月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
284 2
|
3月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
3月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
111 5
|
4月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
133 2
|
4月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
145 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
关系型数据库 MySQL Linux
MySQL 数据库linux系统下修改配置文件设置mysql是否大小写敏感实例演示
MySQL 数据库linux系统下修改配置文件设置mysql是否大小写敏感实例演示
257 0
MySQL 数据库linux系统下修改配置文件设置mysql是否大小写敏感实例演示
|
9天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
50 23
Linux系统之whereis命令的基本使用