编译安装Apache服务

apache简介

Apache HTTPD又可以简称为httpd或者Apache,它是Internet使用最广泛的web服务器之一,使用Apache提供的web服务器是由守护进程httpd,通过http协议进行文本传输,默认使用80端口的明文传输方式,当然,后来,为了保证数据的安全和可靠性,又添加了443的加密传输的方式,Apache提供的服务器又被称为:补丁服务器,原因很简单,它是一款高度模块化的软件,想要给它添加相应的功能只需添加相应的模块,让其Apache主程序加载相应的模块,不需要的模块也可以不用加载,保证了Apache的简洁,轻便,高效性,当出现大量访问一个服务器是可以使用多种复用模式,保证了服务器能快速回应客户端的请求,如MPM,端口复用技术。

1、安装依赖环境

[[email protected] ~]# yum install -y gcc*   ##安装gcc,因为是最小化安装的CentOS 7,所以需要安装gcc
[[email protected] ~]# yum groupinstall "Development tools" "Server Platform Development" -y      ##安装开发依赖包
[[email protected] ~]# yum install pcre* -y   ##支持正则表达式

2、安装apr

[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
[[email protected] src]# wget http://mirror.bit.edu.cn/apache/apr/apr-1.6.3.tar.bz2

[[email protected] src]# tar -xf apr-1.6.3.tar.bz2 
[[email protected] src]# cd apr-1.6.3
[[email protected] apr-1.6.3]# ./configure --prefix=/usr/local/apr
##如果出现rm: cannot remove 'libtoolT': No such file or directory的问题
解决方法:[[email protected] apr-1.6.3]# vim configure
把RM='$RM'修改为RM='$RM -f' (注意-f前面必须要有空格)
[[email protected] apr-1.6.3]# make && make install

[[email protected] src]# tar -xf apr-util-1.6.1.tar.gz 
[[email protected] src]# cd apr-util-1.6.1
[[email protected] apr-util-1.6.1]#  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[[email protected] apr-util-1.6.1]#  make && make install
##如果编译不成功,尝试一下安装expat-devel后再编译一次
[[email protected] apr-util-1.6.1]# yum install expat-devel -y

3、下载Apache安装包并解压

[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.28.tar.gz
[[email protected] src]# tar -xf httpd-2.4.28.tar.gz

4、编译安装

[[email protected] src]# cd httpd-2.4.28
[[email protected] httpd-2.4.28]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-mpms-shared=all --with-mpm=worker
##如果出错,则尝试一下安装openssl-devel后,再来一次
[[email protected] httpd-2.4.28]# yum install -y openssl-devel
[[email protected] httpd-2.4.28]# make && make install
##如果make时出现以下的错误
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] Error 1
make[2]: Leaving directory `/usr/local/src/httpd-2.4.28/support'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/httpd-2.4.28/support'
make: *** [all-recursive] Error 1
解决方法:在后面添加--with-included-apr
[[email protected] httpd-2.4.28]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-mpms-shared=all --with-mpm=worker --with-included-apr
可是加上了--with-included-apr编译之后,出现了以下问题
configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
解决方法
[[email protected] httpd-2.4.28]# cd /usr/local/src/
[[email protected] src]# cp -r apr-1.6.3 /usr/local/src/httpd-2.4.28/srclib/apr
[[email protected] src]# cp -r apr-util-1.6.1 /usr/local/src/httpd-2.4.28/srclib/apr-util
然后再次编译则不会出现问题,而且make时也不会出现问题

注:
--with-pcre                          #支持perl的正则表达式,不然会报错
--enable-so                          #激活apache服务的DSO(全称Dynamic Shared Object,动态共享对象)支持,即在以后可以以DSO的方式编译安装共享模块,这个模块本身不能以DSO方式编译。
--enable-ssl                         #基于ssl加密传输
--enable-cgi                         #开启CGI脚本
--enable-rewrite                     # 提供基于URL规则的重写功能。即根据已知URL地址,转换其它想要的URL地址。如前文讲解的伪静态功能就是这个模块实现的。这是apache生产环境中必用的一个重要功能。
--with-zlib                          #支持压缩
--enable-deflate                     # 提供对内容的压缩传输编码支持,一般html,js,css等内容的站点,使用此参数功能会大大提高传输速度,提升访问者访问体验。在生产环境中,这是apache调优的一个重要选项之一。
--enable-expires                     # 激活允许通过配置文件控制HTTP的“Expires:”和“Cache-Control:”头内容,即对网站图片、js、css等内容,提供在客户端游览器缓存的设置。这是apache调优的一个重要选项之一。
--enable-headers                     #提供允许对HTTP请求头的控制
--enable-modules=most                #支持大多数模块
--enable-mpms-shared=all             #mpm模块的动态切换
--with-mpm=worker                     #选择apache mpm的模式为worker模式。因worker模式原理是更多的使用线程来处理请求,所以可以处理更多的并发请求,而系统资源的开销小于基于进程的MPM prefork。如果不指定此参数,默认的模式是prefork进程模式。

5、查看相关配置文件

[[email protected] ~]# cd /usr/local/apache/
[[email protected] apache]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules

注:

ab: apache自带压力测试。

apachectl:启动脚本。

apxs:动态加载模块。

htpasswd:加密。

httpd:apache后台启动服务。

rotatelogs:日志切分。

6、修改用户

为了安全考虑,我们需要指定运行用户,修改成其他自定义的用户,这里修改为web用户

[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf
<IfModule unixd_module>
User web
Group web
</IfModule>
[[email protected] ~]# ps -ef | grep httpd
root      61726      1  0 11:12 ?        00:00:00 /usr/local/apache/bin/httpd
web       61727  61726  0 11:12 ?        00:00:00 /usr/local/apache/bin/httpd
web       61728  61726  0 11:12 ?        00:00:00 /usr/local/apache/bin/httpd
web       61729  61726  0 11:12 ?        00:00:00 /usr/local/apache/bin/httpd
root      61812    982  0 11:12 pts/0    00:00:00 grep --color=auto httpd

7、启动Apache服务

[[email protected] ~]# /usr/local/apache/bin/apachectl 
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
##出现报错,需要取消注释
[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf 
ServerName localhost:80

[[email protected] ~]# /usr/local/apache/bin/apachectl -t  ##检查Apache的配置是否有错
Syntax OK
[[email protected] ~]# /usr/local/apache/bin/apachectl     ##启动 
httpd (pid 61571) already running

8、配置启动脚本

[[email protected] ~]# cat /usr/lib/systemd/system/httpd.service 
[Unit]
Description=httpd
After=network.target
  
[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl 
ExecStop=/usr/local/apache/bin/apachectl stop
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target

[[email protected] ~]# chmod a+x /usr/lib/systemd/system/httpd.service   ##给执行权限
[[email protected] ~]# systemctl enable httpd     ##设为开机自启

9、module目录

存放apache模块,我们要支持这个功能,必须加载一个响应的模块。

[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf   ##查看配置文件
LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule unixd_module modules/mod_unixd.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
注:编译的时候用—with-module或者用apxs来动态加载

10、配置文件说明

(1)、加载模块:alias_module

[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
</IfModule>

(2)、日志处理模块

[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" common
    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "logs/access_log" combined
</IfModule>
###可以自定义日志格式:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "logs/access_log" common    ##日志存放路径,在使用自定义日志之前,我们需要加上comon才能使其生效。

(3)、支持php

[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf
找到AddType处,并添加以下2行:
AddType application/x-httpd-php .php .php3 .phtml .inc
AddType application/x-httpd-php-source .phps
时间: 2024-10-19 00:08:01

编译安装Apache服务的相关文章

【Linux】编译安装Apache服务

实验环境 使用Linux的系统为CentOS6.5 x64 安装Apache所需要的源码包有 httpd-2.4.16.tar.gz apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz 下载地址:http://pan.baidu.com/s/1skcEHFB 实验配置 首先安装如下编译工具以及软件包 [[email protected] ~]# yum -y install gcc gcc-c++ make pcre-devel 编译安装apr和apr-util这两个包

编译安装Apache服务需要注意的问题

安装 软件版本 apr-1.5.2 apr-util-1.5.4 httpd-2.4.12 1:开发工具和开发库是否已安装 2:是否安装了apr和apr-util apr(apache portable runtime )可移植运行环境:相当于httpd的虚拟环境库,使得httpd可以在任意平台使用 apr-util:apr提供的工具命令组件 安装 3:configure对软件安装进行配置,检查依赖关系,这是我的一个例子: ./configure --help 查看选项 --enable-so

手工编译安装Apache

实验要求:手工编译安装Apache 实验步骤: 服务器(Redhat6)地址:192.168.4.2 客户机(Win7)地址:192.168.4.5 客户机设置LAMP文件夹共享,安装文件在LAMP文件夹中 mount.cifs //192.168.4.5/LAMP /opt/lamp //将LAMP文件夹挂载到服务器中的lamp目录中 smbclient -L 192.168.4.5 查看已经共享到的LAMP文件夹 tar xzvf httpd-2.4.2.tar.gz -C /opt/htt

CentOS6.5安装Apache服务

一.描述 CentOS安装Apache服务可以有两种方式,一种是用yum安装,一种是从官网下载源代码进行安装. 二.使用yum安装Apache服务 步骤1:在命令行输入如下语句可以使用yum在线更新方式进行安装: [[email protected] /]$ sudo yum install httpd -y 注意:采用该方式进行安装配置文件的默认路径为:/etc/httpd/conf/httpd.conf 步骤二:配置防火墙,添加下面红色字体的一行,表示开启80端口供客户浏览. [[email

linux中编译安装Apache、PHP、MySQL(上)

1.简介 在阿里云买了个云服务器,一直没时间折腾.过了近十天了吧,才有时间好好玩玩这个云服务器.自己是做Web开发的,所以我需要的开发环境是LAMP.之前打算是采用yum安装,不过yum安装apache可以安装到2.4版本,而PHP最高安装版本只能是5.4,这也是yum安装PHP的软肋,因此我这里主要涉及到的安装方式是源码安装.通过源码安装能够更好的管理这些软件,想安装到哪就放在哪. 云服务器: 阿里云CentOS 7.2 64位 阿帕奇版本:apache2.4 PHP版本:PHP5.6 主要的

Linux编译安装Apache的详细过程

LAMP 是 Linux Apache MySQL PHP 的简写,其实就是把 Apache,MySQL 以及 PHP安装在 Linux 系统上,组成一个环境来运行 PHP 的脚本语言.Apache 是最常用的 WEB 服务软件,所以安装Apache必不可少,其中编译安装Apache又尤为重要,接下来我一步步来编译安装Apache. 具体步骤: 1,准备工作:首先保证有Linux系统的PC或者服务器,我这里是CentOS6.8的64位的系统(最小化安装):然后得保证你系统能正常使用wget,因为

编译安装httpd服务

首先,编译安装http,需要有它的源码包,这里提供官方下载:http://httpd.apache.org 我使用的是httpd-2.4.4.tar.bz2软件包 在进行源码编译安装之前,我们需要设定一下安装环境 1.安装开发包组: # yum groupinstall "Development tools" "Server Platform Development" "Desktop Platform Development" "Co

配置网络YUM源和第三方YUM源及编译安装Apache

配置网络YUM源和第三方YUM源及编译安装Apache 系统软硬件环境平台: VMware Workstation Pro 12.5.5 build-5234757 CentOS Linux release 7.3.1611 内核版本:3.10.0-514.el7.x86_64 测试时间:2017年6月13日 实验1:实现网络YUM源 1.准备相关系统光盘,搭建网络服务ftp或http [执行命令]#ls /mnt [执行命令]#mount | grep "/dev/sr0" [执行命

Centos 6.9 编译安装 apache 2.4+php7.2.3 + Fast-cgi

1. 编译安装apache 2.4 参考Centos 6.9 apahce 2.4.29编译安装 2. PHP官网下载Stable版本 http://php.net/downloads.php #curl -O http://cn2.php.net/distributions/php-7.2.3.tar.bz2 3.安装依赖包 有个别包需要EPEL源,可提前配置好Aliyun的Yum源 #yum install bzip2-devel libxml2-devel libmcrypt-devel