Apache 编译

本文介绍了手动编译安装 Apache 的具体步骤。

yum 方式安装

$ yum install wget epel-release

$ wget https://centos7.iuscommunity.org/ius-release.rpm

$ rpm -Uvh ius-release.rpm

$ yum install httpd24u

编译安装

安装所需软件

$ yum install gcc gcc-c++ make uuid-devel libuuid-devel unzip -y

apr 中包含了一些通用的开发组件,包括 mmap,DSO 等等

apr-util 该目录中也是包含了一些常用的开发组件。这些组件与 apr 目录下的相比,它们与 apache 的关系更加密切一些。比如存储段和存储段组,加密等等。

apr-iconv 包中的文件主要用于实现 iconv 编码。目前的大部分编码转换过程都是与本地编码相关的。在进行转换之前必须能够正确地设置本地编码。因此假如两个非本地编码 A 和 B 需要转换,则转换过程大致为 A->Local 以及 Local->B 或者 B->Local 以及 Local->A。

安装 apr

$ wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz

$ tar zxvf apr-1.5.2.tar.gz

$ cd apr-1.5.2

$ ./configure --prefix=/usr/local/apr

#下同

$ make

$ make install

安装 apr-iconv

$ wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.gz

$ tar -zxvf apr-iconv-1.2.1.tar.gz

$ cd apr-iconv-1.2.1

$ ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr

安装 apr-util

$ wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

$ tar zxvf apr-util-1.5.4.tar.gz

$ cd apr-util-1.5.4

$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr \
    --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv

安装 pcre

$ wget  http://120.52.73.44/nchc.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.zip

$ unzip  -o pcre-8.38.zip

$ cd pcre-8.38

$ ./configure --prefix=/usr/local/pcre

Apache

# 替换 url 为实际的下载地址

$ wget url

$ tar zxvf httpd-2.4.20.tar.gz

$ cd httpd-2.4.20

$ ./configure --prefix=/usr/local/apache2  \
      --enable-defalte --enable-expires \
      --enable-headers --enable-modules=most \
      --enable-so --with-mpm=worker \
      --enable-rewrite --with-apr=/usr/local/apr \
      --with-apr-util=/usr/local/apr-util \
      --with-pcre=/usr/local/pcre

systemd

yum 方式安装会生成 httpd.service 文件,编译安装使用 apache.service

新建 /etc/systemd/system/apache.service 文件。

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

[Service]
Type=simple
ExecStart=/usr/local/apache2/bin/httpd -DFOREGROUND
ExecReload=/usr/local/apache2/bin/httpd -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木子墨的前端日常

easyUI datagrid 清空

最近在做一个管理系统,出于一些需要,经常要将一些datagrid清空。然后easyUI本身并没有自带的方法,然后自己动手丰衣足食吧。

11730
来自专栏GuZhenYin

C#开发移动应用系列(2.使用WebView搭建WebApp应用)

前言 上篇文章地址:C#开发移动应用系列(1.环境搭建) 嗯..一周了 本来打算2天一更的 - - ,结果 出差了..请各位原谅.. 今天我们来讲一下使用Web...

251100
来自专栏分布式系统进阶

Influxdb 数据写入流程

因此对写入请求的处理就在函数 func (h *Handler) serveWrite(w http.ResponseWriter, r *http.Reque...

20830
来自专栏重庆的技术分享区

基于python3连接mysql,实现一个银行转账的小功能(shell中执行)

20130
来自专栏向治洪

JSBridge深度剖析

概述 做过混合开发的人都知道Ionic和PhoneGap之类的框架,这些框架在web基础上包装一层Native,然后通过Bridge技术的js调用本地的库。 在...

37850
来自专栏高性能服务器开发

关于windows完成端口(IOCP)的一些理解(一)

系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)...

1K90
来自专栏逆向技术

x64内核HOOK技术之拦截进程.拦截线程.拦截模块

            x64内核HOOK技术之拦截进程.拦截线程.拦截模块 一丶为什么讲解HOOK技术. 在32系统下, 例如我们要HOOK SSDT表,那么...

51370
来自专栏祝威廉

Kafka Zero-Copy 使用分析

Kafka 我个人感觉是性能优化的典范。而且使用Scala开发,代码写的也很漂亮的。重点我觉得有四个

22020
来自专栏林德熙的博客

win10 uwp 读写XML xml 语法XmlDocumentLinq 读写 XMLWPF 读XMLWPF 读写 xaml

UWP 对 读写 XML做了一些修改,但和之前 WPF 的方法没有大的区别。 我们先来说下什么是 XML , XML 其实是 树结构,可以表达复杂的结构,所以在...

18310
来自专栏Android研究院

彻底理解OkHttp - OkHttp 源码解析及OkHttp的设计思想

在OKhttp 源码解析之前,我们必须先要了解http的相关基础知识,任何的网络请求都离不开http。

62120

扫码关注云+社区

领取腾讯云代金券