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 服务的根目录有效,而不会作用于全局或其他目录区域。

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

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

相关文章

堆排序算法

堆排序是利用堆这种数据结构而设计的一种排序算法&#xff0c;堆具有以下特点&#xff1a; 1.完全二叉树 2.二叉树每个结点的值都大于或等于其左右结点的值&#xff0c;称为大顶堆&#xff1b;或者每个结点的值都小于或等于其左右子结点的值&#xff0c;称为小顶堆 大顶堆 大…

马蹄集oj赛(双周赛第十八次)

目录 幸运的3 打靶 照亮街道 九次九日九重色 寻找串 竹鼠的白色季节 捉迷藏 好的三连 三角数 买马 可怜的小码哥 花园浇水 高次方程 幸运的3 难度:黄金时间限制: 1秒四占用内存:128M 你有 n 个数&#xff0c;可以将它们两两匹配(即将两数首尾相连)&#xff0c;每个…

基于Java+SpringBoot+vue+elementUI私人健身教练预约管理系统设计实现

基于JavaSpringBootvueelementUI私人健身教练预约管理系统设计实现 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于JavaSpringBootvueelementUI私人健身教练预约管理系统设计实现一、前言介绍&#xff1a;二、系统设计&#xff1a;2.1 性能需求分析2.2 B/S架构&…

Stable Diffusion汉化插件

今天为大家介绍Stable Diffusion的两种UI汉化包&#xff0c;一种是汉化包&#xff0c;就中文界面&#xff0c;方便大家对于繁杂的参数的模型的操作&#xff0c;一种是中英文对照界面&#xff0c;在中文提示下&#xff0c;同时显示英文&#xff0c;不但方便设置也同时学习了英文…

Vue3 自定义Hooks大全:一站式解决你的疑惑!

前言 不知道喜欢 vue3 的小伙伴和我是不是一样&#xff0c;刚上手vue3 的时候 对自定义hooks 一脸懵逼&#xff0c;在一些视频网站学习的时候老师讲解到自定义hooks 最喜欢用 加减乘除来描述 自定义hooks 是咋用的&#xff0c;可能是我理解能力比较差吧&#xff0c;我看了这个…

程序媛的mac修炼手册-- 终端shell的驾驭 zsh vs bash

进入终端(Terminal)为新下载的应用配置环境&#xff0c;是Mac生产力up up的关键一步&#xff0c;更是编程小白装大神的第一步。Fake it till you make it , 硅谷大神标准路径&#xff5e; shell的基本原理 为应用配置环境&#xff0c;相当于在应用和操作系统间架桥。由此&…

VSCode使用Remote SSH远程连接Windows 7

结论 VSCode Server不能启动&#xff0c;无法建立连接。 原因 .vscode-server 目录中的 node.exe 无法运行。 原因是Node.js仅在Windows 8.1、Windows Server 2012 R2或更高版本上受支持。 由于vscode基于node.js v14&#xff0c;不支持Windows 7操作系统。 另&#xff…

低成本高效率易部署,Ruff工业数采网关+IoT云平台赋能工厂数字化管理

随着工业4.0的快速发展&#xff0c;工业物联网是工业企业实现数字化转型的重要助力&#xff0c;物联网技术的应用也越来越广泛。 作为连接设备与网络的关键节点&#xff0c;数据采集网关是连接工业设备与物联网平台的硬件设备&#xff0c;它负责将工业设备的数据采集、传输到物…

Fast R-CNN

Fast R-CNN算法流程 对比与R-CNN其在第二步时并没有将所有的候选区域进行逐个的CNN特征提取&#xff0c;而是直接将整个图片进行一次CNN特征提取&#xff0c;让后再将候选区映射到feature map上。可想而知速度得到了提升。这里的ROI pooling层缩放到7x7就是将候选区域对应的特征…

企业使用人工智能情况调查

企业使用人工智能情况调查 人工智能在商业中的应用并不是什么新鲜事。多年来&#xff0c;公司一直在使用人工智能技术来削减成本并提高效率。 但最近生成式人工智能市场的激增帮助人工智能成为主流商业技术。具体来说&#xff0c;ChatGPT 和 Midjourney 等大型语言模型 (LLM)…

【Dart】=> [02] Dart初体验-基础语法(ing~

目录 Dart初体验基础语法变量常量数据类型数值类型 Dart初体验 效果&#xff1a;运行Dart程序&#xff0c;并输出字符串 ‘hello itcast’ 创建Dart文件 hello.dart&#xff0c;&#xff08;Dart文件的后缀是 .dart &#xff09;编写Dart代码 // 程序肯定都是有入口的 : main…

提取 PE 文件的各种信息

前段时间项目需要实现对 Windows PE 文件版本信息的提取&#xff0c;如文件说明、文件版本、产品名称、版权、原始文件名等信息。获取这些信息在 Windows 下当然有一系列的 API 函数供调用&#xff0c;简单方便。 我们先看一下PE文件结构&#xff0c;PE文件由DOS首部&#xff0…

LeetCode 25. K 个一组翻转链表

K 个一组翻转链表 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改…

不同语言告别2023,迎接2024

一、序言 1.一名合格的程序员&#xff0c;始于Hello World&#xff0c;终于Hello World&#xff0c;用不同语言表达2023最后一天。 2.在这一年里&#xff0c;博主新接触了VUE、Python、人工智能、JAVA的框架SprinBoot、微服务等&#xff0c;然后一路来感谢大家的支持&#xf…

nifi详细介绍--一款开箱即用、功能强大可靠,可用于处理和分发数据的大数据组件

目录 目录 一、引言 二、NiFi 的历史背景介绍 三、NiFi 是什么&#xff1f; 核心特性 应用领域 四、NIFI 入门 五 、NiFi 工作流程 六、实际应用场景 七、优势总结 一、引言 NiFi&#xff08;Apache NiFi&#xff09;&#xff0c;全名为“Niagara Files”&#xff0…

Unity DOTS中的baking(二)Baker的触发

Unity DOTS中的baking&#xff08;二&#xff09;Baker的触发 我们知道&#xff0c;当传入Baker的authoring component的值发生变化时&#xff0c;就会触发baking。不过在有些情况下&#xff0c;component所引用的对象没有变化&#xff0c;而是对象自身内部的一些属性发生了变化…

编写.NET的Dockerfile文件构建镜像

创建一个WebApi项目&#xff0c;并且创建一个Dockerfile空文件&#xff0c;添加以下代码&#xff0c;7.0代表的你项目使用的SDK的版本&#xff0c;构建的时候也需要选择好指定的镜像tag FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443F…

深度学习基础知识神经网络

神经网络 1. 感知机 感知机&#xff08;Perceptron&#xff09;是 Frank Rosenblatt 在1957年提出的概念&#xff0c;其结构与MP模型类似&#xff0c;一般被视为最简单的人工神经网络&#xff0c;也作为二元线性分类器被广泛使用。通常情况下指单层的人工神经网络&#xff0c…

超实用的小红书达人投放策略分析,纯干货

为什么我投放了小红书达人却没有什么效果&#xff1f; 品牌到底应该怎么投放小红书达人&#xff1f; 品牌小红书达人投放怎么去把控和规划&#xff1f; 小红书达人作为品牌方和用户之间的桥梁&#xff0c;直接影响消费决策。达人粉丝数量大&#xff0c;粘性高&#xff0c;很…

一加 Buds 3正式发布:普及旗舰音质 一加用户首选

1月4日&#xff0c;一加新品发布会正式推出旗下新款耳机一加 Buds 3。延续一加经典美学&#xff0c;秉承音质完美主义追求&#xff0c;一加 Buds 3全面普及一加旗舰耳机体验&#xff0c;其搭载旗舰同款“超清晰同轴双单元”&#xff0c;配备49dB 4000Hz超宽频主动降噪&#xff…