Apache服务器的安装与部署

Apache的服务httpd查询与卸载


[root@es ~]# rpm -qa |grep httpd
[root@es ~]# rpm -e --nodeps httpd*
error: package httpd* is not installed
[root@es ~]# for name in `rpm -qa httpd*`;do rpm -e --nodeps $name;done


注意:如果服务器默认安装了httpd,如果要编译安装,那要使用上述命令将httpd服务器删除

rpm -qa |grep httpd     # 查询服务器的是否安装了httpd

rpm -e --nodeps httpd*  # 卸载有过httpd的服务,上面没有安装,所有出现error

第四行代码:将查询和卸载合二为一


Apache服务http安装包和验证包下载地址

如果在生产环境,那么我们必须将我们下载的安装包进行检测,看看是否被修改。这是一个安全的常识

wget http://www.eu.apache.org/dist/httpd/httpd-2.2.26.tar.gz.sha1
wget http://www.eu.apache.org/dist/httpd/httpd-2.2.26.tar.gz.md5
wget http://www.eu.apache.org/dist/httpd/httpd-2.2.26.tar.gz.asc
wget http://www.eu.apache.org/dist/httpd/httpd-2.2.26.tar.gz
wget http://www.apache.org/dist/httpd/KEY


验证和解压httpd安装包是否被修改

[root@Sersync tools]# tar xzvf httpd-2.2.26.tar.gz
[root@es tools]# cd httpd-2.2.26
[root@es tools]# gpg --import KEYS
[root@es tools]# gpg --verify httpd-2.2.26.tar.gz.asc
[root@es httpd-2.2.26]# less README   # 查看程序信息
[root@es httpd-2.2.26]# less INSTALL    # 查看安装编译的参数


编译安装Apache

[root@apache httpd-2.2.26]# ./configure --prefix=/application/apache2.2.26 --enable-deflate --enable-expires --enable-headers  --enable-modules=most --with-mpm=worker --enable-rewite --enable-so --with-mpm=worker
[root@apache httpd-2.2.26]# make && make install

--prefix=/application/apache2.2.22    # 设置apache安装目录(默认/usr/local/apache2)

--enable-deflate   # 提供对传输的编码进行压缩

--enable-expires   # 激活需用通过配置文件控制http的expires和cache-control头内容,即对网站图片,js、css等内容,提供在客户端浏览器缓存的设置

--enable-headers   # 提供允许对http请求头的控制

--enable-modules=most   #

--enable-so        # 指定允许DSO(动态共享对象)

--with-mpm=worker  # 更多的使用线程来出来请求,处理更多的并发。(默认prefork进程模式)

--enable-rewrite   # 开启rewrite支持,以实现url静态化,建议开启

详细的命令可以查看./configure --help


对apache目录进行软连接创建,方便管理

[root@apache httpd-2.2.26]# ln -s /application/apache2.2.26 /application/apache


[root@apache httpd-2.2.26]# /application/apache/bin/apachectl -l

[root@apache httpd-2.2.26]# /application/apache/bin/apachectl -M

   : 空白可以现实后面能够所加载的参数

-l  :检查安装情况

-M  :用来列出基于当前配置加载的所有模块,与 -l不同 还列出mod_so加载的(动态共享对象)


[root@apache httpd-2.2.26]# /application/apache/bin/apachectl


下列仅说明了SysV初始化类型的选项,其他参数的说明见httpd手册页。

start

启动Apache httpd后台守护进程。如果已经启动,则产生一个错误。它等价于 apachectl -k start
stop
停止Apache httpd后台守护进程。它等价于 apachectl -k stop
restart
重新启动Apache httpd后台守护进程。如果守护进程尚未运行,则启动它。在重新启动守护进程之前,此命令会使用configtest自动检查配置文件,以确保Apache不会死掉。它等价于 apachectl -k restart
fullstatus
显示由mod_status提供的完整的状态报告。要使用这个功能,需要启用服务器上的mod_status模块,并且系统中有一个基于文本的浏览器,如lynx 。修改脚本中的STATUSURL变量,可以修改访问状态报告的URL 。
status
显示一个简要的状态报告。它类似于fullstatus选项,但是省略了正在处理的请求的列表。
graceful
优雅地重新启动Apache httpd后台守护进程。如果守护进程尚未启动,则启动它。它和标准重新启动的不同之处在于:不会中断当前已经打开的连接,也不会立即关闭日志。这意味着,如果在日志滚动脚本使用它,则在处理日志之前必须加入一个实实在在的延迟,以确保老的日志文件在被处理前已经关闭。在重新启动守护进程之前,此命令会使用configtest自动检查配置文件,以确保Apache不会死掉。它等价于 apachectl -k graceful
graceful-stop
优雅地停止Apache httpd后台守护进程。它和标准停止的不同之处在于:不会中断当前已经打开的连接,也不会立即关闭日志。它等价于 apachectl -k graceful-stop
configtest
执行一次配置文件语法检查。它解析配置文件,并报告 Syntax Ok 或者是特定的语法错误详细信息。它等价于 apachectl -t

下列选项仅在早期版本中使用,现在已经被废弃了。

startssl
以支持SSL的方式启动httpd ,你应当编辑配置文件,并在其中包含与SSL支持相关的指令,然后使用 apachectl start 启动服务器。


[root@apache ~]# /application/apache/bin/apachectl -t

httpd: apr_sockaddr_info_get() failed for apache

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Syntax OK

所以要解决这个问题可以设定httpd.conf文件中的 ServerName,如下:

  (1)ServerName localhost:80                        

  或者在 /etc/hosts 中填入自己的主机名称apache,如下:

  (2)127.0.0 apache

查看apache服务的状态,进程号和端口号

[root@apache ~]# ps -ef|grep httpd|grep -v grep

root      1222     1  0 18:03 ?        00:00:00 /application/apache2.2.26/bin/httpd -k start

daemon    1531  1222  0 18:38 ?        00:00:00 /application/apache2.2.26/bin/httpd -k start

daemon    1532  1222  0 18:38 ?        00:00:00 /application/apache2.2.26/bin/httpd -k start

daemon    1533  1222  0 18:38 ?        00:00:00 /application/apache2.2.26/bin/httpd -k start

daemon    1534  1222  0 18:38 ?        00:00:00 /application/apache2.2.26/bin/httpd -k start

daemon    1685  1222  0 18:38 ?        00:00:00 /application/apache2.2.26/bin/httpd -k start


[root@apache ~]# netstat -tln |grep 80

tcp        0      0 :::80                       :::*                        LISTEN


[root@apache ~]# lsof -i tcp:80

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

httpd   1222   root    4u  IPv6  11323      0t0  TCP *:http (LISTEN)

httpd   1532 daemon    4u  IPv6  11323      0t0  TCP *:http (LISTEN)

httpd   1533 daemon    4u  IPv6  11323      0t0  TCP *:http (LISTEN)

httpd   1534 daemon    4u  IPv6  11323      0t0  TCP *:http (LISTEN)

httpd   1685 daemon    4u  IPv6  11323      0t0  TCP *:http (LISTEN)


在浏览器里面输入测试

在浏览器里面输入你配置apache服务器的ip地址,如:http://10.10.26.146

默认在浏览器里面显示

it's work


排错思路指南

如果不能正常显示,按照下面的思路进行配置

1.iptables防火墙是否关闭

2.selinux是否关闭

3.80端口是否存在

4.http进程是否存在

5.本地wget http://ip 测试

6.查看apache的错误日志,看看是否有特殊的异常