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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
17天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
1天前
|
Oracle Java 关系型数据库
Linux环境安装配置JDK11
Linux环境安装配置JDK11
18 0
|
1天前
|
Ubuntu Linux
Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)
请注意,以上步骤是在临时基础上进行配置的。如果要永久保存静态IP地址,通常还需要修改 `/etc/network/interfaces`文件,以便在系统重启后保持配置。同时,确保备份相关配置文件以防止出现问题。
13 1
|
3天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
35 1
|
3天前
|
运维 网络协议 Linux
Linux(28) Linux双网卡配置为连接到Linux主机的PC提供外网访问
Linux(28) Linux双网卡配置为连接到Linux主机的PC提供外网访问
31 1
|
4天前
|
Ubuntu 网络协议 Linux
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
28 0
|
4天前
|
Linux
Linux(9)Debain EC25 quectel-CM usbnet0开机自动联网配置
Linux(9)Debain EC25 quectel-CM usbnet0开机自动联网配置
15 0
|
7天前
|
Linux 网络安全 开发工具
【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
|
7天前
|
缓存 安全 Ubuntu
Linux配置代理上网
如何配置Linux代理
18 1
|
17天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
28 0