这是我首次尝试的经验(Centos7最小化安装),走了不少坑,借此记录一下,但愿朋友们少走一些弯路;
我是经过下载源码安装的,全部的下载文件为*.tar.bz2压缩包(不一样压缩方式,解压方式不一样,我就下载同一种了);linux
一次性把文件下载好,其中包括:
apr-1.5.2
apr-util-1.5.4
pcre-8.37(若是没记错的话,这个不要下载最新版;记错的话,以上三个有一个不要下载最新版——我好不负责)
httpd-2.4.18c++
# gcc -v
若是没有的话,安装文件时会报错,能够根据提示安装相应文件;
我是经过yum install安装的gcc 、c++apache
[root@root]# yum install gcc -y [root@root]# yum install gcc-c++ -y
把第一步下载好的源码包解压:服务器
tar -jxvf DirName.tar.bz2
固然,若是你没有解压工具,请经过:网络
yum search bzip2查找安装解压工具;
若是直接安装Apache的话(我就不直接安装),它有可能会报错(我都是必定会报错):curl
checking for chosen layout... Apache checking for working mkdir -p... yes checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking target system type... i686-pc-linux-gnu configure: configure: Configuring Apache Portable Runtime library... configure: checking for APR... no configure: error: APR not found. Please read the documentation.
这时候第一步下载的文件就用的上了; 安装顺序apr -> apr-util ,固然pcre能够乱入(顺序不重要); 安装过程,配置 -> 编译 -> 安装 三部曲; 主要说配置: 进入解压后的apr文件包: [root@root]# ./configure --prefix=/usr/local/apr/(这里配置的是安装路径) # make # make intall 进入解压后的apr-util文件包: [root@root]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config(配置apr-util安装路径,并关联apr文件——确保路径正确) # make # make intall 进入解压后的pcre文件包: [root@root]# ./configure --prefix=/usr/local/pcre(配置安装路径) # make # make intall
关联文件安装结束后就是主菜了:tcp
进入解压后的httpd文件包: [root@root]# ./configure --prefix=/usr/local/apache/ \ --sysconfdir=/etc/httpd \ //指定Apache服务器的配置文件存放位置 --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util/ \ --with-pcre=/usr/local/pcre/ \ --enable-so \ //以动态共享对象(DSO)编译---记得要加,不然之后手动修改配置文件加载新的模块,好比,不配置的话,安装好PHP后,要手动修改conf来loadmodule…… --enable-deflate=shared \ //缩小传输编码的支持 --enable-expires=shared \ //期满头控制 --enable-rewrite=shared \ //基于规则的URL操控 --enable-static-support //创建一个静态连接版本的支持 # make # make intall
进入Apache的目录/etc/httd/工具
修改httpd.conf配置文件(Apache2.4与2.2配置不一样) Require all denied(禁止外部访问) Require all granted(容许外部访问)
进入Apache的安装目录/usr/local/apache/bin(若是你没自定义的话):ui
./apachectl start #启动服务 ./apachectl stop #关闭服务 ./apachectl restart #重启服务
我用的Centos7不会提醒服务已启动,因此,我通常一个命令运行两次,第二次它会报告服务已启动/已关闭;this
启动就ok了?我曾经是这样认为的——但是,坑还在继续……
外网/局域网访问不了:
排查1: 服务器/虚拟机自身网络是否正常,能够经过ping http://www.baidu.com度娘地址试试; 排查2: 服务是否启动,占用80端口的是否为http服务: netstat -ntpl #查看端口监听(个人是,因此,我就没有了关闭其它进程的经验) 若是你不必定非要80端口的话,能够修改/usr/local/apache/conf/httpd.conf监听端口; 排查3: You don't have permission to access / on this server 没有权限,解决方案: chmod o+x /usr/ chmod o+x /usr/local/ chmod o+x /usr/local/apache/ chmod o+x /usr/local/apache/htdocs(每一级目录都要执行) 以上问题能够经过curl http://127.0.0.1在服务器/虚拟机上检验本地是否能够访问; 排查4: 防火墙设置——Centos7默认使用firewalld代替iptables(网上多数是iptables的设置解决方案,**好吧!发现Centos7有的小版本还在用iptables**因此,只能尝试两个命令,存在的就是用的该防火墙) systemctl start firewalld #启动 systemctl status firewalld #查看状态 systemctl disable firewalld #中止 systemctl stop firewalld #禁用(能够直接禁用防火墙,也能够添加80端口到例外) 查看活动区域状态: # firewall-cmd --get-active-zones(firewall-cmd是一个合成词) 返回: [root@localhost bin]# firewall-cmd --get-active-zones **public** interfaces: eno16777736 重要的是**public**、dmz,或者其它。根据这个值的不一样,添加端口的语句也不一样; 加入一个端口到dmz区域: # firewall-cmd --zone=dmz --add-port=80/tcp 加入一个端口到public区域: # firewall-cmd --zone=public --add-port=80/tcp 永久生效再加上 --permanent 而后reload防火墙 # firewall-cmd --zone=dmz --add-port=80/tcp --permanent 或者 # firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --complete-reload 查看全部活动的端口: # firewall-cmd --zone=dmz --list-ports 或者 # firewall-cmd --zone=public --list-ports
因为我进行了不少步操做来解决外部访问的问题,因此,最终仅仅经过以上调试方法可否获得外部访问的结果,不敢保证;
如不行: 检查一下selinux设置(其它问题只能自行百度了)……