第2章 源码编译构建LAMP

news/2024/9/11 4:25:53/ 标签: php, mysql, http

LAMP

LAMP是一个常见的开发平台和运行环境,主要用于支持动态网站和Web应用程序的开发和部署。

  • L: Linux,指操作系统,通常是Linux操作系统。
  • A: Apache,指Web服务器软件,常用于托管网站。
  • M: MySQL,指关系型数据库管理系统,用于存储和管理数据。
  • P: PHP,指编程语言,用于开发动态网页内容。

Apache

起源

  • 源于A Patchy Server,著名的开源Web服务软件
  • 1995年时,发布Apache服务程序的1.0版本
  • 由Apache软件基金会(ASF)负责维护
  • 最新的名称为“Apache HTTP Server”

主要特点

  • 开放源代码、跨平台应用
  • 支持多种网页编程语言
  • 模块化设计、运行稳定、良好的安全性

软件版本

  • 1.X
    • 目前最高版本是1.3,运行稳定
    • 向下兼容性较好,但缺乏一些较新的功能
  • 2.X
    • 目前最高版本是2.4
    • 具有更多的功能特性
    • 与1.X相比,配置管理风格存在较大差异

编译安装httpd服务器

编译安装的优点

  • 具有较大的自由度,功能可定制
  • 可及时获得最新的软件版本
  • 普遍适用于大多数Linux版本,便于移植使用
  • 获取Apache服务器的源码包:http://httpd.apache.org/download.cgi
守护进程

通过systemd管理httpd,使其变成系统服务和守护进程

cd到服务目录,创建httpd的服务文件并添加内容

php">[root@localhost system]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service
# 添加内容
[Unit]
Description=miao shu
After=network.target[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID[Install]
WantedBy=multi-user.target

内容

说明

[Unit]

指定systemd单元的基本信息

Description=miao shu

描述了服务的简短说明或名称

After=network.target

在网络服务之后启动

[Service]

定义了服务的执行方式和相关设置

Type=forking

指定服务的启动类型为forking,即启动时会派生出一个子进程

PIDFile=/usr/local/httpd/logs/httpd.pid

指定PID文件的位置,用于记录主进程的PID。

ExecStart=/usr/local/bin/apachectl $OPTIONS

定义了服务启动时执行的命令,这里使用apachectl启动Apache,并传递了$OPTIONS,这个变量通常用来传递Apache HTTP服务器的启动参数,比如端口号、配置文件路径等。

ExecReload=/bin/kill -HUP $MAINPID

定义了重新加载配置时执行的命令,发送SIGHUP信号给主进程以实现配置重载。

-HUP 是一个信号名称,HUP是SIGHUP信号的缩写。用于通知进程重新加载配置文件或进行其他类型的重新初始化。使新的配置生效而无需停止服务。

$MAINPID 是一个环境变量,它是由systemd设置的,表示当前服务的主进程的PID(进程ID)。

[Install]

定义了如何安装这个单元

WantedBy=multi-user.target

指定服务应该在multi-user.target(即多用户模式;运行级别3)下启动,表示这个服务是系统的一部分,并在多用户环境中自动启动。


虚拟主机

单台主机运行多个站点的技术

类型

  1. 基于ip的虚拟主机(需要多个ip)
  2. 基于端口的虚拟主机(一个ip,绑定多个端口)
  3. 基于域名的虚拟主机(最常用)

MySQL

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。

基本特点

  1. 开源性:MySQL是开源的,用户可以免费使用和修改源代码,这为开发和部署提供了极大的灵活性和成本效益。
  2. 高性能:MySQL具有快速的查询速度和高效的数据处理能力,能够处理大规模的数据集和多用户环境。
  3. 可靠性:MySQL具有高可靠性和稳定性,能够保证数据的安全性和一致性。
  4. 扩展性:MySQL支持多个数据库实例和分布式数据库,可以轻松扩展以满足不断增长的数据存储需求。
  5. 安全性:MySQL提供了高级安全功能,包括访问控制、加密和身份验证等,以保护数据免受未授权访问。

主要功能

  1. 数据定义:通过DDL(数据定义语言)来创建、修改和删除数据库和数据表。
  2. 数据操纵:通过DML(数据操纵语言)来插入、更新和删除数据表中的数据。
  3. 数据查询:通过DQL(数据查询语言)来检索和查询数据表中的数据。
  4. 数据控制:通过DCL(数据控制语言)来管理数据库的安全性和权限。

PHP

PHP(Hypertext Preprocessor)是一种流行的开源服务器端脚本语言,特别适用于网页开发和动态网站的创建。它可以嵌入到HTML中,通常用于生成动态网页内容,或者处理表单数据等任务。

特点

  1. 开源免费:PHP是免费的,并且其源代码是开放的,这意味着任何人都可以查看、修改和分发它。
  2. 跨平台:PHP几乎支持所有主流的操作系统,包括Windows、Linux和Unix等。
  3. 易于学习:PHP的语法与C、C++和Java相似,使得有一定编程经验的开发者能够快速上手。
  4. 高效性:PHP是一种解释型语言,但经过优化后,它可以执行得非常快,特别是当它与适当的后端数据库(如MySQL)结合使用时。
  5. 面向对象:PHP支持面向对象编程(OOP),这使得代码更加模块化、易于维护和重用。
  6. 丰富的函数库:PHP拥有大量的内置函数和扩展库,用于处理各种任务,如字符串处理、文件操作、图像处理、数据库交互等。
  7. 与Web服务器紧密集成:PHP可以轻松地与Apache、Nginx等Web服务器集成,为Web应用程序提供强大的后端支持。

应用场景

  1. 动态网页开发:PHP能够生成动态内容,根据用户请求或数据库中的信息来更改网页的内容。
  2. Web应用程序开发:PHP广泛用于开发各种Web应用程序,如内容管理系统(CMS)、电子商务网站、论坛和博客平台等。
  3. 服务器端脚本:PHP脚本在服务器上执行,可以处理表单数据、管理会话、发送电子邮件等。
  4. 命令行工具:PHP还可以作为命令行工具来执行脚本,处理数据转换、批量操作等任务。

http://www.ppmy.cn/news/1474506.html

相关文章

python-26-零基础自学python-如何创建文件、读取数据、处理多个文件及程序异常处理等

学习内容:《python编程:从入门到实践》第二版第10章 知识点: 程序异常如何处理?try-except-else 多个文件处理 创建文件:在文件中储存数据 练习内容: 练习10-8:猫和狗 创建文件cats.txt和…

赠你一只金色的眼 - 富集分析和表达数据可视化

GOplot包介绍 GOplot包用于生物数据的可视化。更确切地说,该包将表达数据与功能分析的结果整合并进行可视化。但是要注意该包不能用于执行这些分析,只能把分析结果进行可视化。在所有科学领域,由于空间限制和结果所需的简洁性,切…

快速测试electron环境是否安装成功

快速测试electron环境是否安装成功 测试代码正确运行的效果运行错误的效果v22.4.1 版本无法使用v20.15.1版本无法使用v18.20.4 版本无法使用 终极解决办法 测试代码 1.npx create-electron-app my-electron-app 2.cd my-electron-app 3.npm start 正确运行的效果 环境没问题…

Vue从零到实战第一天

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

广度优先(BFS)

先看一道简单的题&#xff0c;迷宫问题&#xff1a; 洛谷P1746 离开中山路&#xff1a;P1746 离开中山路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include<cstring> #include<queue> #include <utility> #define N 1002 …

pandas+pywin32操作excel办公自动化

import pandas as pd import re import win32com.client as win32 from win32com.client import constants import os import os.path as osp #读取表格 pathos.getcwd() fposp.join(path,fuck_demo.xlsx) dfpd.read_excel(fp,header1,usecols[序号,光缆段落名&#xff08;A端…

2024年电子商务与大数据经济国际会议 (EBDE 2024)

2024年电子商务与大数据经济国际会议 (EBDE 2024) 2024 International Conference on E-commerce and Big Data Economy 【重要信息】 大会地点&#xff1a;厦门 大会官网&#xff1a;http://www.icebde.com 投稿邮箱&#xff1a;icebdesub-conf.com 【注意&#xff1a;稿将稿…

PyTorch 2-深度学习-模块

PyTorch 2-深度学习-模块 一: pytorch1> pytorch 介绍2> pytorch 作用3> pytorch 优点4> pytorch 流程二:pytorch 模块1> torch.Tensor 模块2> torch.nn模块3> torch.nn.function模块4> torch.random模块5> torch.onnx模块6> torch.sparse模块7…

原生android的内存性能提升方面的测试和优化方案大致设计

一 测试目标&#xff1a; 以满足用户设备的内存性能和不杀后台为目标。 1&#xff1a;满足用户设备的内存性能是指不出现因为内存原因导致的安卓设备死机&#xff0c;卡顿等问题。 2&#xff1a;满足不杀后台是指整个设备使用时&#xff0c;不出现后台app被杀。 通常是估算如果…

从科幻到现实,IOC如何驱动智慧城市“数字孪生”变革?

每天&#xff0c;世界各地的城市都面临着各种突发事件&#xff0c;这些事件要求跨部门和机构的实时通信及协作。遗憾的是&#xff0c;关键信息通常存储在多个分散的系统中&#xff0c;这阻碍了状况认知&#xff0c;并让各个部门难以协调其响应工作。如果没有单个集成的危机视图…

线程池操作数据库存在线程安全问题

目录 1、前言 2、问题 3、解决方法 3.1、方法一&#xff1a;数据库约束 3.2、方法二&#xff1a;使用锁进行线程的约束 4、总结 1、前言 当前需求为&#xff1a;处理数据&#xff0c;将数据存储到数据库中&#xff0c;在存储的过程中&#xff0c;会先查询该数据是否已经存…

FPGA(1)--什么是布局与布线

布局与布线是FPGA设计流程中非常关键的步骤&#xff0c;它们的目的是将经过综合的逻辑网表映射到FPGA芯片的物理资源上&#xff0c;并通过电气连接来实现设计的功能。具体来说&#xff0c;布局与布线包括以下工作&#xff1a; 布局&#xff08;Placement&#xff09;&#xff1…

9.Python学习:Socket

1.网络通信要素&#xff08;IP端口传输协议&#xff09; 2.Socket编程 2.1TCP、UDP协议了解 2.2 Socket流程 服务端有两个socket对象&#xff0c;客户端有一个 3.Socket实战 服务端代码&#xff1a; import socket #创建Socket对象 sksocket.socket() #绑定ip与端口号-使…

BUG解决:postman可以请求成功,但Python requests请求报403

目录 问题背景 问题定位 问题解决 问题背景 使用Python的requests库对接物联数据的接口之前一直正常运行&#xff0c;昨天突然请求不通了&#xff0c;通过进一步验证发现凡是使用代码调用接口就不通&#xff0c;而使用postman就能调通&#xff0c;请求参数啥的都没变。 接口…

day30--56. 合并区间+ 738.单调递增的数字

一、56. 合并区间 题目链接&#xff1a;https://leetcode.cn/problems/merge-intervals/ 文章讲解&#xff1a;https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1wx4y157nD 1.1 初见思路 …

防火墙第一次综合实验

DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问。 办公区设备10.8.2.1不允许访问DMZ区的FTP服务器和HTTP服务器&#xff0c;仅能ping通10.0.3.10 1.先建立拒绝BG到DMZ区的安全策略 2.建立BG到DMZ区的icmp允许 3…

AI推介-大语言模型LLMs之RAG(检索增强生成)论文速览(arXiv方向):2024.06.01-2024.06.20

文章目录&#xff5e; 1.StackRAG Agent: Improving Developer Answers with Retrieval-Augmented Generation2.FoRAG: Factuality-optimized Retrieval Augmented Generation for Web-enhanced Long-form Question Answering3.Model Internals-based Answer Attribution for T…

springboot仓库管理系统+lw+源码+讲解+调试

第3章 系统分析 在进行系统分析之前&#xff0c;需要从网络上或者是图书馆的开发类书籍中收集大量的资料&#xff0c;因为这个环节也是帮助即将开发的程序软件制定一套最优的方案&#xff0c;一旦确定了程序软件需要具备的功能&#xff0c;就意味着接下来的工作和任务都是围绕…

vue项目实现路由按需加载(路由懒加载)的三种方式

使用异步组件 在使用vue-router配置路由时&#xff0c;可以使用异步组件来实现路由的按需加载。异步组件会在路由被访问时才进行加载&#xff0c;从而实现按需加载的效果。需要注意的是&#xff0c;使用异步组件需要借助webpack的动态import语法来实现。例如&#xff1a; cons…

java 公共字段填充

公共字段填充 1、mybatis-plus2、mybatis 使用注解加aop2.1 自定义注解2.2 自定义切面类2.3 在mapper上添加上自定义的注解 1、mybatis-plus 通过在类上使用如下的注解 TableField(fill FieldFill.INSERT) 是 MyBatis-Plus 中的注解&#xff0c;用于自动填充字段的值。MyBat…