Linux_源码编译安装LAMP
1. 安装httpd服务
在配置 Apache 网站服务之前,需要正确安装好 httpd 服务器软件。httpd 服务器的安装可以选用 RPM 安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使用源码编译安装的方式要更加普遍。本次将以下载的源码包httpd-2.4.25.tar.gz 为例,介绍 httpd 服务的定制安装过程。
1. 准备工作
为了避免发生端口冲突、程序冲突等现象,建议卸载使用 RPM 方式安装的 httpd。httpd 服务编译安装时需要依赖 apr-util-devel、pcre-devel 等软件,因此在 httpd 编译安装之前需要先安装依赖软件。
[root@Linux01 ~]# rpm -e httpd --nodeps
错误:未安装软件包 httpd
[root@Linux01 ~]# yum install -y apr-util-devel pcre-devel
2. 源码编译及安装
(1)解包
将下载获得的 httpd 源码包解压并释放到/usr/src 目录下,且切换到展开后的源码目录中。
[root@Linux01 ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
[root@Linux01 ~]# cd /usr/src/httpd-2.4.25/
[root@Linux01 httpd-2.4.25]#
(2)配置
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行“./configure --help” 命令。
root@Linux01 httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
上述配置命令中,各选项的含义如下。
- --prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd。
- --enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
- --enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
- --enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页。
- --enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。
(3)编译及安装
完成配置以后,执行“make”命令进行编译,将源代码转换为可执行的程序;然后执行“make install”命令完成最后的安装过程;将编译完的 httpd 程序及相关目录、文件自动复制到预设的安装目录(由配置时的“--prefix”选项指定)。其中“make”的过程可能会需要较长的时间。
[root@Linux01 httpd-2.4.25]# make && make install
3. 确认安装结果
由于指定的安装目录为/usr/local/httpd,因此 httpd 服务的各种程序、模块、帮助文件等都将复制到此目录下。
[root@Linux01 ~]# ls /usr/local/httpd/
bin build cgi-bin conf error htdocs icons include logs man manual modules
在安装后的/usr/local/httpd 目录下包含 httpd 服务相关的各种子目录,主要子目录的用途如下。
- /usr/local/httpd/bin:存放 httpd 服务的各种可执行程序文件,包括主程序 httpd、服
务控制工具 apachectl 等。 - /usr/local/httpd/conf:存放 httpd 服务的各种配置文件,包括主配置文件 httpd.conf、
增强配置子目录 extra 等。 - /usr/local/httpd/htdocs:存放网页文档,包括默认首页文件 index.html 等。
- /usr/local/httpd/logs:存放 httpd 服务的日志文件。
- /usr/local/httpd/modules:存放 httpd 服务的各种模块文件。
- /usr/local/httpd/cgi-bin:存放各种 CGI 程序文件。
4. 优化执行路径
通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。
[root@Linux01 ~]# ln -s /usr/local/httpd/bin* /usr/local/bin/
[root@Linux01 ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
这样,在执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd-v”命令(用于查看程序版本)时,即相当于执行“/usr/local/httpd/bin/httpd-v”命令。
[root@Linux01 ~]# httpd -v
Server version: Apache/2.4.25 (Unix)
Server built: Jan 3 2024 11:31:48
[root@Linux01 ~]#
5. 添加 httpd 系统服务
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制由 Systemd 管理或监控的 httpd 服务。
[root@Linux01 ~]# cd /lib/systemd/system
[root@Linux01 system]# vim httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s[Install]
WantedBy=graphical.target
[root@Linux01 system]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/graphical.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@Linux01 system]# systemctl is-enabled httpd.service
enabled
[root@Linux01 system]#
成功执行上述操作后,在日常维护过程中,可直接使用 apachectl 工具或 systemctl命令控制 httpd 服务。
1.2 httpd 服务器的基本配置
1.2.1 Web站点的部署过程
在 CentOS 7.3 系统中,使用 httpd 服务部署 Web 站点的基本过程分析如下。
1. 确定网站名称、IP地址
若要向 Internet 中发布一个 Web 站点,需要申请一个合法的互联网 IP 地址,并向 DNS 服务提供商注册一个完整的网站名称。在企业内部网络中,这些信息可以自行设置。例如 Web 主机的 IP 地址为 192.168.56.10,网站名称为 www.ymk.com。
若要在客户机的浏览器中通过地址 www.ymk.com 来访问此 Web 站点,还应该有可用的 DNS 域名服务。例如,客户机所使用的 DNS 服务器应能够将 www.ymk.com 解析为 IP 地址 192.168.56.10。
在 Web 服务器本机中,将 IP 地址设置为 192.168.56.10;将主机名称设置为www.ymk.com;并修改/etc/hosts 文件,添加相应的映射记录以提高本地解析速度。
[root@Linux01 ~]# hostname www.ymk.com
[root@Linux01 ~]# vim /etc/hostname
www.ymk.com
[root@Linux01 ~]# vim /etc/hosts
192.168.56.10 www.ymk.com
[root@Linux01 ~]# bash
[root@www ~]#
2. 配置并启动 httpd 服务
(1)配置 httpd 服务
编辑 httpd 服务的主配置文件 httpd.conf,查找配置项“ServerName”,在附近添加一行内容“ServerName www.ymk.com”,用于设置网站名称。
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
......//省略部分内容
Servername www.ymk.com
......//省略部分内容
修改 httpd.conf 文件的配置内容后,建议使用带“-t”选项的 apachectl 命令对配置内容进行语法检查(或使用“httpd-t”命令)。如果没有语法错误,将会显示“Syntax OK”的信息,否则需要根据错误提示信息来修正配置。
[root@www ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK
(2)启动 httpd 服务
使用 systemctl 命令启动 httpd 服务。正常启动 httpd 服务以后,默认将监听 TCP 协议的 80 端口。
[root@www ~]# systemctl start httpd
[root@www ~]# netstat -anpt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 36547/httpd
3. 部署网页文档
对于新编译安装的 httpd 服务,网站根目录位于/usr/local/httpd/htdocs 下,需要将 Web 站点的网页文档复制或上传到此目录下。httpd 服务器默认已提供了一个名为 index.html 的测试网页(可显示字串“It works!”),作为访问网站时的默认首页。
[root@www ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
4. 在客户机中访问Web站点
在客户机的网页浏览器中,通过域名或 IP 地址访问 httpd 服务器,将可以看到 Web 站点的页面内容。若使用的是 httpd 服务默认的首页,则页面会显示“It works!”,表示 httpd 服务已经正常运作。

5. 查看 Web 站点的使用情况
httpd 服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名分别为 access_log 和 error_log,均位于/usr/local/httpd/logs 目录下。
通过查看访问日志文件 access_log,可以及时了解 Web 站点的访问情况。访问日志中的每一行对应一条访问记录,记录了客户机的 IP 地址、访问服务器的日期和时间、请求的网页对象等信息。例如,当从客户机 192.168.56.1 访问 Web 站点以后,访问日志将会记录“192.168.56.1……"GET/HTTP/1.1"……”的消息。
[root@www ~]# tail /usr/local/httpd/logs/access_log
192.168.56.1 - - [03/Jan/2024:12:16:10 +0800] "GET / HTTP/1.1" 200 45
192.168.56.1 - - [03/Jan/2024:12:16:10 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.56.1 - - [03/Jan/2024:12:17:02 +0800] "-" 408 -
通过查看错误日志文件 error_log,可以为排查服务器运行故障提供参考依据。错误日志文件中的每一行对应一条错误记录,记录了发生错误的日期和时间、错误事件类型、错误事件的内容描述等信息上述过程是使用 httpd 服务器部署并验证 Web 站点的基本步骤,其中涉及 httpd.conf 配置文件的改动量非常少,要搭建一台简单的 Web 服务器还是十分容易的。
1.2.2 httpd.conf 配置文件
若要对 Web 站点进行更加具体、更加强大的配置,仅仅学会添加“ServerName”配置项显然是远远不够的,还需要进一步熟悉 httpd.conf 配置文件,了解其他各种常见的配置项。
主配置文件 httpd.conf 由注释行、设置行两部分内容组成。与大多数 Linux 配置文件一样,注释性的文字以“#”开始,包含了对相关配置内容进行的说明和解释。除了注释行和空行以外的内容即设置行,构成了 Web 服务的有效配置。根据配置所作用的范围不同,设置行又可分为全局配置、区域配置。
1. 全局配置
全局配置决定 httpd 服务器的全局运行参数,使用“关键字 值”的配置格式。例如,配置网站名称时使用的“ServerName www.ymk.com”,其中“ServerName”为配置关键字,而“www.ymk.com”为对应的值。
每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了 httpd.conf 文件中最常用的一些全局配置项。
ServerRoot "/usr/local/httpd"
Listen 80
User daemon
Group daemon
ServerAdmin webmaster@kgc.com
ServerName www.kgc.com
DocumentRoot "/usr/local/httpd/htdocs"
DirectoryIndex index.htmlindex.php
ErrorLog "logs/error_log"
LogLevel warn
CustomLog logs/access_log common
PidFile logs/httpd.pid
AddDefaultCharset UTF-8
Include conf/extra/httpd-default.conf
在上述设置行中,各全局配置项的含义如下。
- ServerRoot:设置 httpd 服务器的根目录,该目录下包括了运行 Web 站点必需的子目录和文件。默认的根目录为/usr/local/httpd,与 httpd 的安装目录相同。在 httpd.conf 配置文件中,如果指定目录或文件位置时不使用绝对路径,则目录或文件位置都认为是在服务器的根目录下。
- Listen:设置 httpd 服务器监听的网络端口号,默认为 80。
- User:设置运行 httpd 进程时的用户身份,默认为 daemon。
- Group:设置运行 httpd 进程时的组身份,默认为 daemon。
- ServerAdmin:设置 httpd 服务器的管理员 E-mail 地址,可以通过此 E-mail 地址及时联系Web 站点的管理员。
- ServerName:设置 Web 站点的完整主机名(主机名+域名)。
- DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置项比较容易和 ServerRoot 混淆,需要格外注意。
- DirectoryIndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格分开,默认的首页文件为 index.html。
- ErrorLog:设置错误日志文件的路径,默认路径为 logs/error_log。
- LogLevel:设置记录日志的级别,默认级别为 warn(警告)。
- CustomLog:设置访问日志文件的路径、日志类型,默认路径为 logs/access_log,使用的类型为 common(通用格式)。
- PidFile:设置用于保存 httpd 进程号(PID)的文件,默认保存地址为 logs/httpd.pid,logs 目录位于 Apache 的服务器根目录下。
- AddDefaultCharset:设置站点中的网页默认使用的字符集编码,如 UTF-8、gb2312等。
- Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单独的文件中,再使用 Include 配置项将其包含到 httpd.conf 文件中,这样便于独立进行配置功能的维护而不影响主配置文件。
以上配置项是 httpd.conf 文件中主要的全局配置项。还有其他很多配置项,在此不一一列举,如果需要使用可以查看 Apache 服务器中的相关帮助手册文档。
2. 区域配置项
除了全局配置项以外,httpd.conf 文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。
<Directory /> //定义"/"目录区域的开始Options FollowSymLinks //控制选项,允许使用符号链接AllowOverride None //不允许隐含控制文件中的覆盖配置
Require all denied //禁止任何人访问此区域
</Directory> //定义"/"目录区域的结束
在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对 httpd 服务的根目录有效,而不会作用于全局或其他目录区域。
相关文章:
Linux_源码编译安装LAMP
1. 安装httpd服务 在配置 Apache 网站服务之前,需要正确安装好 httpd 服务器软件。httpd 服务器的安装可以选用 RPM 安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使…...
静态网页设计——清雅古筝网(HTML+CSS+JavaScript)
前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1T64y1K7Zn/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术:HTMLCSSJS(…...
实战Flink Java api消费kafka实时数据落盘HDFS
文章目录 1 需求分析2 实验过程2.1 启动服务程序2.2 启动kafka生产 3 Java API 开发3.1 依赖3.2 代码部分 4 实验验证STEP1STEP2STEP3 5 时间窗口 1 需求分析 在Java api中,使用flink本地模式,消费kafka主题,并直接将数据存入hdfs中。 flin…...
爬虫与反爬-localStorage指纹(某易某盾滑块指纹检测)(Hook案例)
概述:本文将用于了解爬虫中localStorage的检测原理以及讲述一个用于检测localStorage的反爬虫案例,最后对该参数进行Hook断点定位 目录: 一、LocalStorage 二、爬虫中localStorage的案例(以某盾滑块为例) 三、如何…...
聊一聊 webpack 和 vite 的开发服务代理的问题
webpack 和 vite webpackVite重新编辑的问题 changOrigin: true如何定义 /api ? webPack And Vite 都是两个比较好用的打包工具,尤其是 Vite, 几几年流行忘记了,特色就是服务启动极快,实现预加载,感觉 webPack 要比 Vite 要复杂一…...
【鸿蒙4.0】安装DevEcoStudio
1.下载安装包 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者华为鸿蒙DevEco Studio是面向全场景的一站式集成开发环境,,在鸿蒙官网下载或升级操作系统开发工具DevEco Studio最新版本,SDK配置和下载,2.1支持Mac、Windows操作系统。…...
[概率论]四小时不挂猴博士
贝叶斯公式是什么 贝叶斯公式是概率论中的一个重要定理,用于计算在已知一些先验信息的情况下,更新对事件发生概率的估计。贝叶斯公式的表达式如下: P(A|B) P(B|A) * P(A) / P(B) 其中,P(A|B)表示在事件B发生的条件下事件A发生的概…...
算法通关村第二十关-黄金挑战图的常见算法
大家好我是苏麟 , 今天聊聊图的常见算法 . 图里的算法是很多的,这里我们介绍一些常见的图算法。这些算法一般都比较复杂,我们这里介绍这些算法的基本含义,适合面试的时候装*,如果手写,那就不用啦。 图分析算法…...
服务器内存不足怎么办?会有什么影响?
服务器内存,也被称为RAM(Random Access Memory),是一种临时存储设备,用于临时存放正在运行的程序和数据。它是服务器上的超高速存储介质,可以快速读取和写入数据,提供给CPU进行实时计算和操作。…...
GPT实战系列-简单聊聊LangChain
GPT实战系列-简单聊聊LangChain LLM大模型相关文章: GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-大话LLM大模型训练 GPT实战系列-探究GPT等大模型的文本生成 GPT实战系列-Baichuan2等大模…...
【读书笔记】《白帽子讲web安全》浏览器安全
目录 第二篇 客户端脚本安全 第2章 浏览器安全 2.1同源策略 2.2浏览器沙箱 2.3恶意网址拦截 2.4高速发展的浏览器安全 第二篇 客户端脚本安全 第2章 浏览器安全 近年来随着互联网的发展,人们发现浏览器才是互联网最大的入口,绝大多数用户使用互联…...
海外服务器2核2G/4G/8G和4核8G配置16M公网带宽优惠价格表
腾讯云海外服务器租用优惠价格表,2核2G10M带宽、2核4G12M、2核8G14M、4核8G16M配置可选,可以选择Linux操作系统或Linux系统,相比较Linux服务器价格要更优惠一些,腾讯云服务器网txyfwq.com分享腾讯云国外服务器租用配置报价&#x…...
Linux 编译安装 Nginx
目录 一、前言二、四种安装方式介绍三、本文安装方式:源码安装3.1、安装依赖库3.2、开始安装 Nginx3.3、Nginx 相关操作3.4、把 Nginx 注册成系统服务 四、结尾 一、前言 Nginx 是一款轻量级的 Web 服务器、[反向代理]服务器,由于它的内存占用少…...
Oracle文件自动“减肥”记
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...
【csharp】抽象类与接口有哪些不同?什么时候应该使用抽象类?
抽象类与接口有哪些不同? 抽象类和接口是在面向对象编程中两个不同的概念,它们有一些重要的区别。以下是抽象类和接口的主要不同点: 抽象类(Abstract Class): 成员类型: 抽象类可以包含抽象方…...
最新-mybatis-plus 3.5分页插件配置
mybatis-plus 3.5分页插件配置 前提 1.项目不是springboot, 是以前的常规spring项目 2.mp 从3.2升级到3.5,升级后发现原本的分页竟然不起作用了,每次查询都是查出所有 前后配置对比 jar包对比 jsqlparser我这里单独引了包,因为版本太低…...
案例098:基于微信小程序的电子购物系统的设计与实现
文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…...
亚信安慧AntDB数据库:数字化时代的数据库创新引领者
AntDB数据库以其卓越的创新能力,集中体现在融合统一与实时处理两大关键领域。作为一款服务全国超过10亿用户的分布式数据库,其独特之处在于长期积累的经验、多样性的支持能力、快速响应的数据处理速度以及卓越的系统稳定性。AntDB不仅仅是一个数据库系统…...
【MySQL】关于日期转换的方法
力扣题 1、题目地址 1853. 转换日期格式 2、模拟表 表: Days Column NameTypedaydate day 是这个表的主键。 3、要求 给定一个Days表,请你编写SQL查询语句,将Days表中的每一个日期转化为"day_name, month_name day, year"格式的字符串…...
Ubuntu 虚拟机挂接 Windows 目录
Windows 共享目录 首先 Windows 下共享目录 我这里偷懒直接直接 Everyone ,也可以指定用户啥的 Ubuntu 挂接 挂接命令,类似如下: sudo mount -o usernamefananchong,passwordxxxx,uid1000,gid1000,file_mode0644,dir_mode0755,dynperm //…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
mcts蒙特卡洛模拟树思想
您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...
C++ Saucer 编写Windows桌面应用
文章目录 一、背景二、Saucer 简介核心特性典型应用场景 三、生成自己的项目四、以Win32项目方式构建Win32项目禁用最大化按钮 五、总结 一、背景 使用Saucer框架,开发Windows桌面应用,把一个html页面作为GUI设计放到Saucer里,隐藏掉运行时弹…...
