LAMP介绍与配置

本文详细介绍了LAMP架构,包括其组成(Linux、Apache、MySQL、PHP),各自的功能和工作原理,以及如何编译安装LAMP环境,涉及Linux作为基础、Apache处理请求、MySQL存储数据、PHP处理业务逻辑。同时,涵盖了CGI和FastCGI的区别,以及如何配置Apache支持PHP。
摘要由CSDN通过智能技术生成

一.LAMP

1.1.LAMP架构的组成

CGI(通用网关接口)和FastCGI(快速公共网关接口)都是用于将Web服务器与后端应用程序(如PHP、Python等)进行交互的协议/接口。

特点    CGI    FastCGI
运行方式    每个请求启动新的进程    复用进程处理多个请求
性能    每个请求需要重新加载代码    多个请求共享同一份代码
资源消耗    每个请求都需要消耗大量资源    多个请求间资源共享
扩展性    难以扩展    更容易实现扩展性
缓存能力    依赖于服务器配置    有较好的缓存能力
安全性    比较低    更高
适用场景    适用于小型或低流量应用    适用于高流量或复杂应用

LAMP架构是一种用于构建动态Web应用程序的开源软件组合,它由四个关键组件组成,分别是Linux、Apache、MySQL(或MariaDB)、以及PHP(或Perl或Python)。这些组件的结合使得开发人员能够构建和部署强大的Web应用程序。以下是LAMP架构的组成部分:

1. **Linux**:
   Linux是一个开源的操作系统内核,它为整个LAMP架构提供了稳定的基础。开发人员可以选择不同的Linux发行版(如Ubuntu、CentOS、Debian等)作为操作系统基础。Linux提供了多用户、多任务和网络功能,使其成为Web应用程序的理想运行环境。

2. **Apache**:
   Apache HTTP Server,通常称为Apache,是一款广泛使用的开源Web服务器软件。它支持多种操作系统,包括Linux,具有高度的可配置性和可扩展性。Apache负责接收客户端的HTTP请求,将请求传递给适当的处理程序(如PHP解释器),并返回响应。

3. **MySQL(或MariaDB)**:
   MySQL是一款流行的开源关系型数据库管理系统(RDBMS),用于存储和管理Web应用程序的数据。近年来,由于Oracle收购了MySQL,许多社区和项目转向了MariaDB,这是一个基于MySQL代码分支的开源数据库。无论是MySQL还是MariaDB,它们都提供了高性能、可靠性和可扩展性的数据库服务。

4. **PHP(或Perl或Python)**:
   PHP是一种广泛用于Web开发的脚本语言,它嵌入在HTML中,用于处理动态内容生成、表单处理、数据库查询等任务。除了PHP,开发人员还可以使用Perl或Python等编程语言来构建Web应用程序的后端逻辑。

LAMP架构的这些组件协同工作,使开发人员能够构建具有丰富功能的Web应用程序。通过Linux操作系统提供的稳定环境,Apache服务器处理HTTP请求,MySQL数据库存储和管理数据,以及PHP等脚本语言用于创建动态内容,LAMP架构为开发者提供了一个强大和灵活的开发和部署平台。

LAMP 环境指的是在 Linux 操作系统中分别安装 Apache 网页服务器、MySQL 数据库服务器和 PHP 开发服务器,以及一些对应的扩展软件。

LAMP各组件的主要作用

Linux 提供了可靠的操作系统环境;

Apache负责处理客户端的请求;

MySQL负责存储和检索数据 ;

PHP 负责处理业务逻辑并生成网页内容。

LAMP 架构是一种常见的用于构建动态网站的技术栈

组成部分功能
Linux (操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序。
Apache (Web 服务器)接收和处理客户端请求,并将静态和动态内容发送给客户端。
MySQL (数据库):存储和检索应用程序的数据
PHP (编程语言)用于动态生成网页内容。

LAMP工作过程

1、当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端;

2、当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql去的数据然后进行运算,运算的结果转为静态资源由web服务器返回客户端。

apache主要实现如下功能:

    第一:处理http的请求、构建响应报文等自身服务;

    第二:配置让Apache支持PHP程序的响应(通过PHP模块或FPM);

    第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理。

mysql 主要实现如下功能:

    第一:提供PHP程序对数据的存储;

    第二:提供PHP程序对数据的读取(通常情况下从性能的角度考虑,尽量实现数据库的读写分离)。

php主要实现如下功能:

    第一:提供apache的访问接口,即CGI或Fast CGI(FPM);

    第二:提供PHP程序的解释器;

    第三:提供mysql数据库的连接函数的基本环境。

二.编译安装LAMP

需要准备的压缩安装包有apr依赖包、apr-util依赖包、httpd主包、mysql-boot包以及php所需的软件包。

以下列各软件包版本为例,实现编译安装LAMP:

    apr-1.6.2.tar.gz
    apr-util-1.6.0.tar.gz
    httpd-2.4.29.tar.bz2
    mysql-boost-5.7.20.tar.gz
    php-7.1.10.tar.bz2

(1)编译安装apache

systemctl disable --now firewalld #开机自动关闭防火墙

setenforce 0

yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre   #导入apache相关压缩安装包,然后安装编译环境 
 
gcc \                #c语言编译器
gcc-c++ \            #c编译器
make \               #源代码编译器
pcre\                #pcre函数库
pcre-devel \         #pcre接口开发包
expat-devel \        #用于支持网站解析HTML、XML文件
perl                 #perl 语言编译器

(2)解压软件包,并移动apr包与apr-util包到安装目录中,并切换到http解压出来的安装包中

tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2
 
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

(3)移动apr包 apr-util包到安装目录中,并切换到 httpd-2.4.29目录中

mv apr-1.6.2 httpd-2.4.29/srclib/apr

mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

cd httpd-2.4.29      #切换到http安装包中

ls
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi        #安装编译环境
 
./configure            #检测系统环境
--prefix=/usr/local/httpd        #指定httpd的安装目录
--enable-so                      #启用动态加载模块支持,使httpd具备进一步扩展功能的能力
--enable-rewrite              #启用网页地址的重写功能,用于网站优化、防盗链及目录迁移维护   
--enable-charset-lite      #启用字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi      #启用CGI(通用网关接口)脚本程序支持,便于网站外部扩展应用访问的能力
 
make  -j2 &&  make  isntall       #将源码转换成二进制给服务器,然后将器拷贝到当地目录中

(4)建立软连接容易补全

cp /test/httpd/bin/apachectl  /etc/init.d/httpd
#将文件拷入/etc/init.d/httpd

ln -s /test/httpd/conf/httpd.conf /etc/
#建立配置文件软连接放入etc目录下
 
ln -s /test/httpd/bin/* /usr/local/bin/
#将启动文件放入/usr/local/bin/目录下可以直接使用

(5)添加httpd系统服务

#新建.service文件
vim /usr/lib/systemd/system/httpd.service

[Unit]
Description=The Apache HTTP Server    
After=network.target

[Service]
Type=forking
PIDFile=/test/httpd/logs/httpd.pid
ExecStart=/test/httpd/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP ${MAINPID}

[Install]
WantedBy=multi-user.target

(6)启动httpd服务

systemctl daemon-reload
systemctl start httpd.service

systemctl status httpd.service

三.编译安装mysql

(1)配置环境,安装依赖包

yum install -y ncurses-devel autoconf cmake

useradd -s /sbin/nologin  mysql  #一定要新建用户

 
ncurses \              #字符终端下图形互动功能的动态库
ncurses-devel \        #ncurses开发包
bison \                #语法分析器
cmake                  #mysql需要用到的cmake编译安装包

(2)导入mysql软件包,解压软件包并切换到编译目录,并编译安装

tar xf mysql-boost-5.7.20.tar.gz    #解压mysql软件包
cd mysql-5.7.20/                           #切换到mysql软件包内
 
编译安装mysql
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \            #指定将 mysql 数据库程序安装到某目录下
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \     #指定套接字文件的存储路径,数据库连接的文件
-DSYSCONFDIR=/etc \        #指定初始化参数文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \    #指定pid存放目录
-DDEFAULT_CHARSET=utf8  \        #指定默认使用的字符集编码
-DDEFAULT_COLLATION=utf8_general_ci \    #指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \        #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \        #安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \        #安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \        #安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \    #数据安装路径
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
 
 
make  -j2 && make install

(3)数据库目录进行权限调整

chown -R mysql:mysql /usr/local/mysql/
#给数据库目录的属主权限改成mysql

(4)建立调整mysql配置文件,并修改配置文件的属主权限

vim /etc/my.cnf
 
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
 
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
 
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
 
 
修改属主权限
chown mysql:mysql /etc/my.cnf

(5)设置路径环境变量

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
#将mysql数据库目录加入到PATH环境中,使其可以tab补全
echo 'export PATH' >> /etc/profile
source /etc/profile
#刷新以下profile文件

(6)初始化数据库,并启动

#切换到/usr/local/mysql目录
cd /usr/local/mysql/
 
#初始化数据库
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
 
#将mysql启动程序mysqld.service文件拷贝到/usr/lib/systemd/system/目录下,方便使用systemd管理
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#启动数据库
systemctl start mysqld
#查看数据库状态
systemctl status mysqld

(7)设置mysql的账户和密码

mysqladmin -u root -p password "abc123"
#刚开始没密码是空的直接回车进入mysql,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

四.编译安装php

(1)安装php解析环境,并解压

#安装GD库和GD库关联程序,用来处理和生成图片


yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel


tar jxvf php-7.1.10.tar.bz2      #解压源代码包

(2)进入php软件包,进行编译安装

cd /opt    #进入到php安装包存放目录
tar jxvf php-7.1.10.tar.bz2        #解压
cd /opt/php-7.1.10/    #进入php安装包内
 
#开始编译安装三步骤
./configure \
--prefix=/usr/local/php7 \    #指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \    #指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \    #指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php7 \    #设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \    #添加 MySQL 扩展支持
--with-zlib \    #支持zlib功能,提供数据压缩
--with-curl \    #开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \    #激活gd 库的支持
--with-jpeg-dir \    #激活jpeg 的支持
--with-png-dir \    #激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \    #启用多字节字符串功能,以便支持中文等代码
--enable-xml \    #开启扩展性标记语言模块
--enable-session \    #会话
--enable-ftp \    #文本传输协议
--enable-pdo \    #函数库
--enable-tokenizer \    #令牌解释器
--enable-zip    #ZIP压缩格式
 
make  -j2 &&  make install   #编译及安装

(3)复制模版文件作为PHP 的主配置文件,并进行修改

cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini    
#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
 
#编辑修改配置文件
vim /usr/local/php7/php.ini
#1170行
mysqli.default_socket = /usr/local/mysql/mysql.sock
#修改时区
date.timezone = Asia/Shanghai
 
#优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php7/bin/* /usr/local/bin/

(4)修改httpd服务的配置文件,让apache支持php

#编辑httpd服务的配置文件
vim /etc/httpd.conf
#393行与394行插入
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php-source .phps
##这里的点前面空格一定要加,否则报错
 
#255行,修改受压文件名设置
DirectoryIndex index.html index.php
 
#156行,检查支持php7的模块是否存在,存在保存退出即可,不存在,将下面这句加上即可
LoadModule php7_module        modules/libphp7.so

(5)测试PHP 

#删除httpd服务的默认网页
rm -rf /usr/local/httpd/htdocs/index.html
 
#创建php的默认网页
vim /usr/local/httpd/htdocs/index.php
 
<?php
phpinfo();
?>
 
 
#重启httpd服务
systemctl restart httpd.service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值