构建LAMP网站服务 第一步 编译安装httpd服务器

2023-10-31

1、安装前准备

解压apr apr-util pcre httpd expat包

[root@localhost app]# tar -xvf apr-1.6.5.tar.xz -C /app/
[root@localhost app]# tar -xvf apr-util-1.6.1.tar.xz -C /app/
[root@localhost app]# tar -xvf pcre-8.42.tar.xz -C /app/
[root@localhost app]# tar -xvf httpd-2.4.46.tar.xz -C /app/

[root@localhost app]# ls
apr-1.6.5  apr-util-1.6.1  httpd-2.4.46  packages  pcre-8.42

安装软件支持

[root@localhost apr-1.6.5]# dnf -y install gcc gcc-c++ make cmake gdb libstdc++* 

2、编译安装apr

[root@localhost apr-1.6.5]# pwd
/app/apr-1.6.5

[root@localhost apr-1.6.5]# ./configure --prefix=/usr/local/apr

[root@localhost apr-1.6.5]# make && make install

这里运行编译文件时可能会报错

rm: cannot remove 'libtoolT': No such file or directory

解决:

[root@localhost apr-1.6.5]# vim configure
#把RM='$RM'改为RM='$RM  -f'

3、编译安装expat

[root@localhost expat-2.2.3]# pwd
/app/expat-2.2.3
[root@localhost expat-2.2.3]# ./configure --prefix=/usr/local/expat
make && make install

4、编译安装apr-util

[root@localhost apr-util-1.6.1]# pwd
/app/apr-util-1.6.1
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-expat=/usr/local/expat
make && make install

5、编译安装pcre

[root@localhost pcre-8.42]# pwd
/app/pcre-8.42
[root@localhost pcre-8.42]# ./configure --prefix=/usr/local/pcre
[root@localhost pcre-8.42]# make && make install

6、编译安装httpd

[root@localhost httpd-2.4.46]# pwd
/app/httpd-2.4.46
[root@localhost httpd-2.4.46]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre  --enable-so   --enable-rewrite --enable-ssl  --with-ssl=/usr/lib  --enable-auth-digest --enable-cgi --enable-suexec  --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache/htdocs
#这里的编译选项应当是需要什么加什么,具体选项见说明文档

httpd服务的目录结构

服务目录:/usr/local/apache/

主配置文件:/usr/local/apache/conf/httpd.conf

网页目录:/usr/local/apache/htdocs/

服务脚本:/usr/local/apache/bin/apachectl

执行程序:/usr/local/apache/bin/httpd

访问日志: /usr/local/apache/log/access_log

错误日志: /usr/local/apache/log/error_log

7、selinux配置

[root@localhost httpd-2.4.46]# getsebool -a | grep httpd
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> off
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_opencryptoki --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off

[root@localhost httpd-2.4.46]# setsebool -P httpd_anon_write on
[root@localhost httpd-2.4.46]# setsebool -P httpd_can_check_spam on
[root@localhost httpd-2.4.46]# setsebool -P httpd_can_network_connect on
[root@localhost httpd-2.4.46]# setsebool -P httpd_can_network_connect_db on
[root@localhost httpd-2.4.46]# setsebool -P httpd_can_network_relay on
[root@localhost httpd-2.4.46]# setsebool -P httpd_tmp_exec on
[root@localhost httpd-2.4.46]# setsebool -P httpd_ssi_exec  on
[root@localhost httpd-2.4.46]# setsebool -P httpd_enable_cgi  on

8、防火墙配置

[root@localhost httpd-2.4.46]# firewall-cmd  --add-port=80/tcp --permanent 
success
[root@localhost httpd-2.4.46]# firewall-cmd  --add-port=443/tcp --permanent 
success
[root@localhost httpd-2.4.46]# firewall-cmd  --add-port=8080/tcp --permanent 
success
[root@localhost httpd-2.4.46]# firewall-cmd  --add-port=8888/tcp --permanent 
success
[root@localhost httpd-2.4.46]# firewall-cmd  --add-service=http  --permanent 
success
[root@localhost httpd-2.4.46]# firewall-cmd  --add-service=https  --permanent 
success
[root@localhost httpd-2.4.46]# firewall-cmd  --reload
success

9、修改主配置文件httpd.conf

[root@localhost conf]# pwd
/usr/local/apache/conf
[root@localhost conf]# vim httpd.conf 

ServerAdmin mufeng.yu@qq.com		#管理员邮箱
ServerName www.mufeng.com:80	#站点名称

ServerRoot:服务目录

ServerAdmin:管理员邮箱

User:运行服务的用户身份

Group:运行服务的组身份

ServerName:网站服务器的域名

DocumentRoot:网页文档的根目录

Listen:监听的IP地址、端口号

PidFile:保存httpd进程PID号的文件

DirectoryIndex:默认的索引页文件

ErrorLog:错误日志文件的位置

CustomLog:访问日志文件的位置

LogLevel:记录日志的级别,默认为warn

Timeout:网络连接超时,默认为300秒

KeepAlive:是否保持连接,可选On或Off

MaxKeepAliveRequests:每次连接最多请求文件数

KeepAliveTimeout:保持连接状态时的超时时间

Include:需要包含进来的其他配置文件

10、http.conf 语法检查

[root@localhost conf]# /usr/local/apache/bin/apachectl  -t
Syntax OK

11、启动httpd服务

[root@localhost conf]# /usr/local/apache/bin/apachectl start 

12、测试

[root@localhost conf]# wget www.mufeng.com
--2020-12-01 08:41:48--  http://www.mufeng.com/
Resolving www.mufeng.com (www.mufeng.com)... 192.35.35.1
Connecting to www.mufeng.com (www.mufeng.com)|192.35.35.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
Saving to: ‘index.html’

index.html                        100%[==========================================================>]      45  --.-KB/s    in 0s      

2020-12-01 08:41:48 (7.99 MB/s) - ‘index.html’ saved [45/45]

[root@localhost conf]# vim index.html 
<html><body><h1>It works!</h1></body></html>

这个测试完全可以通过ip地址来实现,如果想通过域名访问,需要配置自己的DNS域名服务器bind

13、测试本机httpd服务器的性能

ab命令格式说明

ab [-q] -c 并发请求数 -n 总的请求数 [http://]域名[:端口]/路径
[root@localhost conf]# ulimit -n 3600
[root@localhost bin]# pwd
/usr/local/apache/bin
[root@localhost bin]# ./ab -q -c 2000 -n 4000 http://www.mufeng.com/ 
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.mufeng.com (be patient).....done


Server Software:        Apache/2.4.46
Server Hostname:        www.mufeng.com
Server Port:            80

Document Path:          /
Document Length:        45 bytes

Concurrency Level:      2000
Time taken for tests:   0.519 seconds
Complete requests:      4000
Failed requests:        0
Total transferred:      1156000 bytes
HTML transferred:       180000 bytes
Requests per second:    7703.79 [#/sec] (mean)
Time per request:       259.613 [ms] (mean)
Time per request:       0.130 [ms] (mean, across all concurrent requests)
Transfer rate:          2174.21 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    9  17.2      4      71
Processing:     0   17  46.8      8     428
Waiting:        0   16  46.7      7     428
Total:          0   26  58.4     12     498

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     13
  75%     15
  80%     16
  90%     24
  95%     81
  98%    283
  99%    288
 100%    498 (longest request)

注:构建服务所需的包可在server_source_2020.iso 请自行下载,您也可以在所需安装包官网下载
本地源配置、防火墙、selinux等是linux较为基础的内容,不再赘述。
本文均为原创,如需与博主交流可email至mufeng.yu@qq.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建LAMP网站服务 第一步 编译安装httpd服务器 的相关文章

  • DBus 是我要找的吗?

    我需要一个Linux上的IPC系统 我的要求是 面向数据包 消息 能够处理点对点和一对多通信 没有层次结构 没有服务器和客户端 如果一个端点崩溃 必须通知其他端点 现有 Linux 发行版的良好支持 Apache 存在 绑定 用于创建动态页
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • Linux 上的用户空间能否实现本机代码的抢占式多任务处理?

    我想知道是否可以在 Linux 用户空间的单个进程中实现本机代码的抢占式多任务处理 也就是说 从外部暂停一些正在运行的本机代码 保存上下文 交换到不同的上下文 然后恢复执行 所有这些都由用户空间精心安排 但使用可能进入内核的调用 我认为这可
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • Win 8.1 上的 XAMPP 安装带有 UAC 警告

    我正在尝试在 Windows 8 1 上安装 Xampp win32 1 8 2 我收到一条消息说 由于系统上激活的用户帐户用户帐户 XAMPP 的某些功能可能会受到限制 我尝试更改用户帐户控制设置 但警告仍然存在 并且APACHE无法启动
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • mod_rewrite, .htaccess 连接mysql数据库

    我希望 htaccess 文件中的 mod rewrite 链接到 mysql 数据库以向我提供映射信息 具体来说 我使用单个代码库来托管多个站点 因此 如果用户请求图像 例如 http www example com images car
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 后台分叉无法正常工作[重复]

    这个问题在这里已经有答案了 我运行这个程序 在前景和背景中 int main int pid printf App Start pid d n getpid while 1 pid fork if pid 0 printf Child n
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用

随机推荐

  • Python Spyder 调出缩进对齐线

    初学python 对python的对齐很重视 为了防止出错 使用spyder工具提供的功能 下面是方法 1 首先打开Tools菜单栏下的Preferences 出现如下界面 轻松1 2 3步之后就可以发现有 当然 红色的矩形框是我自己通过画
  • 2022年Android面经分享,准备Android面试

    前言 前几天一个多年的朋友和我聊天 说他被公司裁员了 我听了非常吃惊 我这个朋友之前在一家著名的外企公司已经工作10年以上了 级别也还不错 算是中高层了 前几年创业最火爆的时候 我和其他人想拉这位朋友出来一起干 怎么诱惑 怎么画大饼他都不动
  • Ubuntu18.04安装cuda10以及cuda版本的opencv3.4.13

    目录 一 cuda 二 cuda版本的Opencv3 4 13 一 cuda 首先提前安装好显卡驱动 在软件与更新 附加驱动里面直接安装即可 这个很简单 不再赘述 查看自己应该安装的版本CUDA 12 0 Update 1 Release
  • html返回200错误,http – 为什么在404错误页面上有200 OK标题状态是不是很糟糕?...

    我有一个问题我遇到了麻烦 err404页面的200OK标题状态问题 虽然它应该是404标题 200好有什么问题 真有可能200 OK应该在404错误页面标题状态 感谢建议 非常感谢 我想它与 htaccess有关 这是我的 htaccess
  • 报错:Cannot read properties of undefined (reading ‘commit‘)

    上传头像的时候出现了这样的报错 根据代码的反应锁定应该是上传vuex方法的问题 找出问题的方法 打印 this update avatar 发现是undefined 打印this 发现属性中没有 route方法 然后搜索main js发现没
  • Docker的基本操作2

    CSDN话题挑战赛第2期 参赛话题 学习笔记 个人名片 博主 酒徒 个人简介 沉醉在酒中 借着一股酒劲 去拼搏一个未来 本篇励志 三人行 必有我师焉 本项目基于B站黑马程序员Java SpringCloud微服务技术栈 SpringClou
  • realEngine(UE4)实现开关门效果

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 制作步骤 注意 前言 虚幻引擎4是一个游戏开发工具的集合 能够生成从2D移动游戏到AAA控制台游戏的一切 它是 方舟 生存进化 铁拳7 和 王国之心III 等游戏的引擎 玩家熟知的
  • python爬虫爬取网页上的天气数据

    目录 一 获取网页重要信息 二 爬取网页数据 三 源码分享 一 获取网页重要信息 在要爬取数据信息的网页上 F12进入查看网页内容 二 爬取网页数据 1 导入模块 import requests from bs4 import Beauti
  • MAC python通过pip安装依赖报错:unresolved reference‘Crypto’ 解决办法

    MAC python通过pip安装依赖报错 unresolved reference Crypto 解决办法 出现这个问题网上大部分的解决办法都试过了 对我来说都没有用 比如通过Pycharm gt Preferences gt Proje
  • Idea创建maven项目,通过java API操作Hbase数据库

    一 准备 启动hdfs集群 之前的HA集群 启动Hbase 二 创建工程 三 API操作Hbase分布式数据库 1 插入一条数据 Test public void put throws Exception 创建conf对象 会加载你项目资源
  • Python数据分析之特征工程

    目录 一 数据清洗 1 数据样本采集 抽样 2 异常值处理 识别异常值和重复值 直接丢弃 包括重复数据 集中值指代 除异常值外的均值 中位数 众数等等 插值 根据不同特征值的具体形式处理 二 特征预处理 1 特征选择 剔除与标注不相关或者冗
  • 谷歌浏览器旧版本下载地址

    谷歌浏览器下载地址 http www chromedownloads net django API学习 地址 https github com LABELNET django mysite frist django API学习 CSDN博客
  • pythonseleniumAPI

    一 浏览器操作 1 浏览器最大化 driver maximize window 将浏览器最大化显示 2 设置浏览器宽 高 driver set window size 480 800 设置浏览器宽480 高800显示 3 控制浏览器前进 后
  • Mac上配置python3的环境变量

    1 查看当前python3的位置 which python3 我的电脑当前地址路径是 usr local bin python3 2 准备好环境变量的配置内容 PATH usr local bin PATH export PATH alia
  • python开篇-------python介绍

    一 python介绍 python的创始人为吉多 范罗苏姆 Guido van Rossum 1989年的圣诞节期间 Guido开始写Python语言的编译器 Python这个名字 来自Guido所挚爱的电视剧Monty Python s
  • swap 空间去哪里了?

    问题背景 xxxx 项目中 在内存充足的情况下 swap 被使用 需要优化并释放 问题分析过程 内核参数没有配置 vm swappiness 0 0表示最大限度使用物理内存 其次才是 swap 空间 默认值应该是60 100表示积极的使用
  • 2. 快速了解前端三大件(HTML、CSS、Javascript)

    2 1 Web开发的标准 Web应用开发需要遵循的标准就教Web标准 这里Web标准是一系列标准的集合 网页主要由三部分组成 结构标准 XML HTML和XHTML 表现标准 CSS 行为标准 DOM Javascript 2 2 HTML
  • 正则表达式(详解)

    文章目录 1 基本匹配 1 1 标志 大小写i 全局g 多行m 1 2 零宽度断言 前后预查 1 4 贪婪匹配与惰性匹配 Greedy vs lazy matching 2 常见语法 表格 2 1 元字符 2 2 特殊符号 2 3 扩展表示
  • ARM指令集

    往期推荐 ARM汇编语言程序结构 Android与ARM处理器 反射调用Java层方法 反射获取Java层字段的值 ARM指令集是指计算机ARM操作指令系统 在ARM中有两种方式可以实现程序的跳转 一种是跳转指令 另一种是直接向PC寄存器中
  • 构建LAMP网站服务 第一步 编译安装httpd服务器

    构建LAMP网站服务 第一步 编译安装httpd服务器 1 安装前准备 2 编译安装apr 3 编译安装expat 4 编译安装apr util 5 编译安装pcre 6 编译安装httpd 7 selinux配置 8 防火墙配置 9 修改