记录一下第一次在Linux上安装Apache遇到的问题以及解决过程。
具体步骤可以参考此博文:
https://blog.csdn.net/u010297957/article/details/50751656
1.安装有两种方法,第一种是手动安装,
步骤:
①先下载相关的源码包,包括:Apache HTTP Server(这个就是我们要安装的Apache Server,但它还需要其他依赖包,所以仅有这个并不足够),APR(Apache Server的依赖包,然而这个APR本身又依赖APR-Util和PCRE),APR-Util,PCRE。一共4个源码包。此处用到了wget命令,wget url,下载相应的源码包。
②解压源码包,获得源码文件,用到tar命令,至于选项是-zxvf还是-jxvf则看下载的文件类型是tar.gz,tar.bz2来决定。
③要将这些软件解压到/usr/local/ 下 (并不强求,但用户软件安装到这个目录是一个好选择)。先创建相应的目录存放文件,如mkdir /usr/local/httpd , mkdir /usr/local/apr , mkdir /usr…/pcre
④分别对4个软件进行,配置,编译,安装。用到的命令: ./configure … (./指当前目录下的configure命令,要先进入相应的文件夹),配置完成之后执行make命令,用于编译源码文件。最后执行make install,安装。(configure的时候要指定相应的依赖包文件)
⑤此时Apache已安装完毕,进入bin目录执行./apachectl start ,即可启动Apache服务。至于Apache相应的配置,进入conf命令修改httpd.conf即可。(建议提前对httpd.conf进行备份,避免出错。 cp httpd.conf httpd.conf.bak)
⑥在httpd.conf定义相应的监听端口等,然后外网即可通过IP地址访问服务器。
当中遇到的问题:
①一开始是根据那个Linux教程来安装的,它那里只要求用Apache HTTP Server的源码包,缺少相关的依赖包,因此要先把APR下载安装。
②安装APR时又缺少依赖包,需要APR-Util。
③下载APR-Util,安装时出错,显示缺少expat.h文件,即缺少expat库,此时需要安装expat开发库。yum install expat-devel。安装完成后再安装APR-Util即可。
④再安装APR,成功。此时安装Apache HTTP Server要指定APR和APR-Util的路径,依然报错,显示缺少PCRE。跟前面的错误是相同性质的,不是大问题。
⑤下载PCRE,安装,此时又出错,显示:configure: error: You need a C++ compiler for C++ support.因为我的机器默认只安装了gcc,还没有安装gcc-c++,因此要编译C++文件的时候就出错了。所以此时要安装C++环境。yum install -y gcc-c++ (安装gcc同理)。安装完gcc-c++之后,安装PCRE没有任何问题,都是make,make install。
⑥最后安装Apache HTTP Server,把上面3个依赖包的路径都指定了,安装成功。
⑦在bin中启动了Apache的httpd服务,配置完httpd.conf后,外网可以访问到Apache,有一个默认的index.html,显示it works!表示Apache配置完成。
⑧此时想找到这个index.html来做一下简单的修改,但找不到相应的文件在哪。上网查到,httpd.conf文件中,有一个DocumentRoot的路径,表示默认的路径在哪。本文当前的路径是:
进入htdocs文件夹后,可以看到只有一个index.html,看来默认项目的路径的确是这里。
⑨修改index.html,出现中文乱码。一开始设定了GB2312编码,依然无效,然后改为UTF-8,乱码问题解决。推测是vim编辑器本身的编码就是用UTF-8,所以设置html为GB2312并无效果?毕竟在本地直接编写GB2312是没有乱码问题的(—TODO)。然后再新增一个my.html,外网依然能通过改路径访问。Apache的配置和连通性测试到此结束。
总结:
1.第一种方法主要是,下载源码包以及相应的依赖包,然后分别进行解压,配置,编译,安装。最关键的是要指定依赖包,因此必须按照顺序,先安装没有其他依赖的包,即先PCRE,再APR,APR-Util,最后才是Apache。安装成功就是配置和启动Apache,配置是在httpd.conf中配置,启动是在bin目录下启动。
2.第二种方法,直接使用yum安装。yum就是自动化安装,它会自动帮你安装相应的依赖包,无须自己手动操作,即我们要安装httpd的时候,它也会自动把PCRE等也安装好了,无须像第一种方法一样,在安装httpd之前还要自己先安装PCRE等。网上的教程也都是说直接用yum list httpd,然后yum install httpd.x86_64就可以了。可是自己实际操作的时候,发现第一步yum list就没有找到相应的包,只有其他的版本,如Lighttpd(light httpd)轻量级的版本等等。也尝试过换镜像源(虽然觉得可能性不大,但还是尝试了一下),后来在镜像源的网站上是可以直接搜到httpd的,可是在Linux上却找不到。
继续尝试了一下,mysql,nginx等也是没有相应的包。按理说这些常用的,应该肯定存在包才对。最后查看yum命令的配置文件yum.conf,才发现它有一个exclude名单:
可以看到都是最常用的几个服务,想了一下,肯定不是黑名单,那么作用应该是:避免平时误操作,在已经install了这些服务的情况下,又再次安装一次,把之前的数据给搞坏。所以解决方法并不是要修改这个conf,而是在yum的时候显式说明,使得exclude无效,即:yum disableexcludes all install httpd
(当然,也可以修改yum.conf,安装完再改回去。。)
解决了这个问题之后,的确就直接安装成功。在后续的启动和配置服务的时候,也遇到了问题。不过猜想是和第一种方法安装的Apache起冲突了,也懒得如何共存了,直接用最暴力的方法解决:把第一种方法安装的Apache给卸载掉了,remake之后,第二种方法安装的Apache就能成功运动了~至此,两种方法安装Apache都成功。
最后的总结:yum安装的确方便很多,在安装之前先yum list找到相关的源码包,或者直接到镜像源的官网去查找,作用都是一样的。总的来说yum安装要方便简单一些,但手动安装可以自己定制修改源码等等,那个就是更高级的层面了,暂时不考虑。