码迷,mamicode.com
首页 > Web开发 > 详细

编译安装Apache服务

时间:2017-12-25 13:44:56      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:apache   编译安装   

apache简介

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


1、安装依赖环境

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


2、安装apr

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

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

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


3、下载Apache安装包并解压

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


4、编译安装

[root@localhost src]# cd httpd-2.4.28
[root@localhost 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后,再来一次
[root@localhost httpd-2.4.28]# yum install -y openssl-devel
[root@localhost 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
[root@localhost 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/.
解决方法
[root@localhost httpd-2.4.28]# cd /usr/local/src/
[root@localhost src]# cp -r apr-1.6.3 /usr/local/src/httpd-2.4.28/srclib/apr
[root@localhost 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、查看相关配置文件

[root@localhost ~]# cd /usr/local/apache/
[root@localhost 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用户

[root@localhost ~]# vim /usr/local/apache/conf/httpd.conf
<IfModule unixd_module>
User web
Group web
</IfModule>
[root@localhost ~]# 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服务

[root@localhost ~]# /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
##出现报错,需要取消注释
[root@localhost ~]# vim /usr/local/apache/conf/httpd.conf 
ServerName localhost:80

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


8、配置启动脚本

[root@localhost ~]# 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

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


9、module目录

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

[root@localhost ~]# 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

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


(2)、日志处理模块

[root@localhost ~]# 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

[root@localhost ~]# 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


编译安装Apache服务

标签:apache   编译安装   

原文地址:http://blog.51cto.com/3381847248/2054204

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!