LAMP介绍与配置

一.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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Seaborn数据可视化(四)

目录 1.绘制箱线图 2.绘制小提琴图 3.绘制多面板图 4.绘制等高线图 5.绘制热力图 1.绘制箱线图 import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据&#xff08;例如&#xff0c;使用seaborn自带的数据集&#xff09; tips sns.load_dataset("t…

中国智慧燃气行业市场需求

文章来源&#xff1a;中研普华产业研究院 关键词&#xff1a;智慧燃气、智慧燃气场站、智慧燃气平台、设备设施数字化、数字孪生、工业互联网 智慧燃气&#xff0c;是以城市输气管网为基础&#xff0c;各终端用户协调发展&#xff0c;以信息通信平台为支撑&#xff0c;具有信…

C++信息学奥赛1177:奇数单增序列

#include<bits/stdc.h> using namespace std; int main(){int n;cin>>n; // 输入整数 n&#xff0c;表示数组的大小int arr[n]; // 创建大小为 n 的整型数组for(int i0;i<n;i) cin>>arr[i]; // 输入数组元素for(int i0;i<n;i){ // 对数组进行冒泡排序f…

在腾讯云服务器OpenCLoudOS系统中安装svn(有图详解)

1. 安装svn yum -y install subversion 安装成功&#xff1a; 2. 创建数据根目录及仓库 mkdir -p /usr/local/svn/svnrepository 创建test仓库&#xff1a; svnadmin create /usr/local/svn/test test仓库创建成功&#xff1a; 3. 修改配置test仓库 cd /usr/local/svn/te…

39.RESTful案例

RESTful案例 准备环境 Employee.java public class Employee {private Integer id;private String lastName;private String email;//1 male, 0 femaleprivate Integer gender; } //省略get、set和构造方法EmployeeDao.java package com.atguigu.SpringMVC.dao;import com.…

C++信息学奥赛1178:成绩排序

#include<bits/stdc.h> using namespace std; int main(){int n;cin>>n; // 输入整数 n&#xff0c;表示数组的大小int arr[n]; // 创建大小为 n 的整型数组 arrstring brr[n]; // 创建大小为 n 的字符串数组 brrfor(int i0;i<n;i) cin>>brr[i]>>ar…

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。

2 hadoop的目录

1. 目录结构&#xff1a; 其中比较的重要的路径有&#xff1a; hdfs,mapred,yarn &#xff08;1&#xff09;bin目录&#xff1a;存放对Hadoop相关服务&#xff08;hdfs&#xff0c;yarn&#xff0c;mapred&#xff09;进行操作的脚本 &#xff08;2&#xff09;etc目录&#x…

线上问诊:业务数据采集

系列文章目录 线上问诊&#xff1a;业务数据采集 线上问诊&#xff1a;数仓数据同步 文章目录 系列文章目录前言一、环境安装1.DataX 二、全量同步1.DataX配置文件生成2.启动hadoop测试一下。3.全量同步 三、增量同步1.配置Flume2.编写Flume拦截器3.通道测试4.修改Maxwell参数…

Pytorch学习:神经网络模块torch.nn.Module和torch.nn.Sequential

文章目录 1. torch.nn.Module1.1 add_module&#xff08;name&#xff0c;module&#xff09;1.2 apply(fn)1.3 cpu()1.4 cuda(deviceNone)1.5 train()1.6 eval()1.7 state_dict() 2. torch.nn.Sequential2.1 append 3. torch.nn.functional.conv2d 1. torch.nn.Module 官方文档…

环保数字化,让污染无处遁形

环保一直以来都是我国大力推崇的举措&#xff0c;“保护环境、人人有责”的标语深入人心&#xff0c;但是环保绝不是某一天某一年就能做好的事情&#xff0c;而在于一朝一夕坚持不懈&#xff0c;下文将针对环保的场景介绍一下数字孪生技术在环保领域的应用。 一、环保背景 新中…

几个nlp的小项目(文本分类)

几个nlp的小项目(文本分类) 导入加载数据类、评测类查看数据集精确展示数据测评方法设置参数tokenizer,token化的解释对数据集进行预处理加载预训练模型进行训练设置训练模型的参数一个根据任务名获取,测评方法的函数创建预训练模型开始训练本项目的工作完成了什么任务?导…

CNN 02(CNN原理)

一、卷积神经网络(CNN)原理 1.1 卷积神经网络的组成 定义 卷积神经网络由一个或多个卷积层、池化层以及全连接层等组成。与其他深度学习结构相比&#xff0c;卷积神经网络在图像等方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他浅层或深度神经…

景联文科技数据标注:人体关键点标注用途及各点的位置定义

人体关键点标注是一种计算机视觉任务&#xff0c;指通过人工的方式&#xff0c;在指定位置标注上关键点&#xff0c;例如人脸特征点、人体骨骼连接点等&#xff0c;常用来训练面部识别模型以及统计模型。这些关键点可以表示图像的各个方面&#xff0c;例如角、边或特定特征。在…

unity 之参数类型之引用类型

文章目录 引用类型引用类型与值类型的差异 引用类型 在Unity中&#xff0c;引用类型是指那些在内存中存储对象引用的数据类型。以下是在Unity中常见的引用类型的介绍&#xff1a; 节点&#xff08;GameObject&#xff09;&#xff1a; 在Unity中&#xff0c;游戏对象&#xff…

day28 异常

to{}catch{} try{}catch{}的流传输 try {fis new FileInputStream("file-APP\\fos.txt");fos new FileOutputStream("fos.txt");int a ;while ((a fis.read())! -1){fos.write(a);}System.out.println(a); } catch (IOException e) {e.printStackTrace()…

在编辑器中使用正则

正则是一种文本处理工具&#xff0c;常见的功能有文本验证、文本提取、文本替换、文本切割等。有一些地方说的正则匹配&#xff0c;其实是包括了校验和提取两个功能。 校验常用于验证整个文本的组成是不是符合规则&#xff0c;比如密码规则校验。提取则是从大段的文本中抽取出…

0基础学习VR全景平台篇 第92篇:智慧景区-智慧景区常见问题

Q&#xff1a;怎么编辑景区里面各个景点的介绍和推荐该景点A&#xff1a;在下方素材栏中该景点&#xff08;素材&#xff09;的右上角选择【编辑场景】里面就可以在场景介绍中编辑该场景的介绍并且在该选项中可以将此场景设置为推荐景点。 Q&#xff1a;景区项目可不可以离线浏…

数字孪生智慧工厂:电缆厂 3D 可视化管控系统

近年来&#xff0c;我国各类器材制造业已经开始向数字化生产转型&#xff0c;使得生产流程变得更加精准高效。通过应用智能设备、物联网和大数据分析等技术&#xff0c;企业可以更好地监控生产线上的运行和质量情况&#xff0c;及时发现和解决问题&#xff0c;从而提高生产效率…

【大虾送书第七期】深入浅出SSD:固态存储核心技术、原理与实战

目录 ✨写在前面 ✨内容简介 ✨作者简介 ✨名人推荐 ✨文末福利 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;免费送书活动专栏地址 写在前面 近年来国家大力支持半导体行业&#xff0c;鼓励自主创新&#xff0c;中国SSD技术和产业…