第2章 源码编译构建LAMP

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的服务文件并添加内容

[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.mzph.cn/pingmian/45152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐一个比 Jenkins 使用更简单的项目构建和部署工具

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具,完全可以满足个人以及一些小企业的需求,分享一下。 项目介绍 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中,Jpom 可以解…

uniapp js 用dom创建form表单 并提交

// 创建一个新的form元素 var form window.document.createElement(form); // 设置form的method和action属性 form.method POST; form.action https://xxx; …

python--实验8 函数(2)

知识点 变量的作用域 定义:解释了局部变量和全局变量的概念。局部变量: 局部变量是在函数内部定义的变量。它们只在该函数内部可见,一旦函数执行完毕,这些变量就会被销毁。例子:在函数内部通过赋值创建的变量。全局…

macbook触控栏养宠物:Touchbar pet for Mac 免费下载

macbook pro自从出了touchbar后,看起来是十分的炫酷,但平时却很少有人使用,为了让touchbar充分利用起来,Touch bar pet就横空出世了,可爱的画风,简单的玩法,让你可以在touchbar上也可以养一只自…

网络安全就业方向(非常详细)零基础入门到精通,收藏这一篇就够了

这里我整合并且整理成了一份【282G】的网络安全/红客技术从零基础入门到进阶资料包,需要的小伙伴文末免费领取哦,无偿分享!!! 对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以…

2.5 计算机网络

声明:文章参考的《系统架构设计师教程(第二版)》,如有侵权,本人将立即修改和删除。 利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,并依靠网络软件以及通信协议实现…

p15 p16 c语言实现三子棋

具体的实现代码 game.c #include "game.h"void InitBoard(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i < row; i) {for (j 0; j < col; j) {board[i][j] ;}} }void DisplayBoard(char board[ROW][COL], int row, int col) …

算法训练(leetcode)第二十九天 | 62. 不同路径、63. 不同路径 II

刷题记录 *62. 不同路径63. 不同路径 II *62. 不同路径 leetcode题目地址 每个单元格的数值都是有上方和左侧的单元格决定的&#xff0c;因此需要先将最上方和最左侧的单元格初始化。因为题目要求只能向下和向右移动&#xff0c;因此最上方和最左侧的单元格初始化为1。 时间…

《昇思25天学习打卡营第8天 | mindspore 模型保存与加载用法》

1. 背景&#xff1a; 使用 mindspore 学习神经网络&#xff0c;打卡第8天&#xff1b; 2. 训练的内容&#xff1a; 为了微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;因此需要保存模型的参数&#xff0c;本小结主要训练保存模型。 3. 常见的用…

【java实现结果集转为树结构,树转为扁平结构】

list转为树&#xff0c;树拉平 业务需求oracle实现树结构1、**Controller.java层** &#xff1a;前端调此处请求2、**service层&#xff1a;** 逻辑结构 &#xff08;zbjcpjService.java&#xff09;&#xff0c;重点&#xff1a;this.entityMapper.queryZbjcpjTree接口3、**ma…

【python算法学习1】用递归和循环分别写下 fibonacci 斐波拉契数列,比较差异

问题&#xff1a; fibonacci 斐波拉契数列&#xff0c;用递归和循环的方法分别写,比较递归和循环的思路和写法的差别 最直接的思路&#xff0c;是写递归方法 循环方法的稍微有点绕&#xff0c;我觉得问题主要是出在&#xff0c;总结循环的通项公式更麻烦&#xff0c;难在数学…

多目标螳螂搜索算法MOMSA求解无人机三维路径规划,可以自行修改障碍物位置(MATLAB代码)

无人机路径规划多目标优化求解是一个复杂的过程&#xff0c;涉及到多个目标的考量和优化算法的应用。以下是一些关键点和相关算法的概述&#xff1a; 1. **多目标优化策略**&#xff1a;在无人机路径规划中&#xff0c;需要同时考虑多个目标&#xff0c;如路径长度、安全性、飞…

关于delete和delete[ ]混用的未定义问题解释

我们知道delete用于释放一个动态空间&#xff0c;而delete[ ]用于释放多个动态空间&#xff0c;但是如果我们混用的话会导致什么问题&#xff1f;我在博客上看了许多文章&#xff0c;但不尽人意&#xff0c;因此写下这篇文章让你知其然知其所以然&#xff08;浅薄的解释&#x…

大数据学习之Spark基础

Spark基础 简述 1、spark作业执行的特点&#xff1a; &#xff08;1&#xff09;只有遇到行动算子的时候&#xff0c;整个spark作业才会被触发执行 &#xff08;2&#xff09;遇到几次&#xff0c;执行几次 2、RDD: 弹性分布式数据集 弹性&#xff1a;数据量可大可小 RDD类似…

插片式远程 I/O模块:Profinet总线耦合器在SIMATIC Manager配置

XD9000是Profinet总线耦合器&#xff0c;单个耦合器最多可扩展32个I/O模块&#xff01;本文将详细介绍如何在SIMATIC Manager中配置插片式远程 I/O模块的Profinet总线耦合器&#xff0c;帮助您更好地应用这一技术。 一、SIMATIC Manager软件组态步骤&#xff1a; 1、创建工程&…

MySQL8之mysql-community-icu-data-files的作用

MySQL8中的mysql-community-icu-data-files包主要提供国际组件&#xff08;ICU&#xff0c;International Components for Unicode&#xff09;的数据文件&#xff0c;这些文件对于MySQL数据库处理多语言数据和进行Unicode字符集转换至关重要。具体来说&#xff0c;mysql-commu…

什么是敏捷本地化

快速、敏捷的多语言产品和服务交付正逐渐成为众多行业的常态。在这种情况下&#xff0c;重点从传统的期望&#xff08;即在合理的时间框架内翻译大量内容&#xff09;转变为翻译工作量非常大的小片段&#xff0c;通常在2-3到12-24小时之间&#xff0c;通常在周末或假期。 Logr…

IntelliJ IDEA自定义菜单(Menus)、任务栏(toolbars)详细教程

一、自定义菜单 1、打开Settings&#xff0c;找到Menus and Toolbars 2、点击右边的Main Menu&#xff0c;点击号&#xff0c;选择Add Action 3、弹出Add Action弹窗&#xff0c;搜索或者选择你要添加的指令 二、自定义工具栏 1、右键IDEA上方的工具栏空白位置&#xff0c;选…

AIGC各个应用场景下的模型选择

需要注意的是&#xff0c;下述模型可以在不同任务和领域中灵活应用&#xff0c;它们的归属也会根据模型的设计和主要应用领域而有所变化&#xff0c;并不绝对。 自然语言处理模型 模型层中自然语言理解(Natural LanguageUnderstanding&#xff0c;NLU)和自然语言生成(NaturalL…

计算机网络体系结构解析

OSI参考模型 与 TCP/IP模型 如图所示 TCP/IP模型有几层 应用层&#xff1a;只需要专注于为用户提供应用功能 HTTP、SMTP、Telnet等&#xff0c;工作在操作系统中的用户态&#xff0c;传输层及以下工作在内核态传输层&#xff1a;为应用层提供网络支持&#xff08;TCP、UDP传…