设为首页 收藏本站
查看: 3836|回复: 0

[经验分享] RedHat 7 安装配置Apache 2.4

[复制链接]

尚未签到

发表于 2018-11-19 10:06:58 | 显示全部楼层 |阅读模式
  前两天测试了在RedHat 6上安装配置Apache httpd 2.2.31(详见http://jiangjianlong.blog.51cto.com/3735273/1858453)后,再来测试一下在RedHat 7安装配置Apache httpd 2.4.23。本文的内容主要包括:安装部署Apache 2.4.23、配置基于域名的虚拟主机、配置基于端口的虚拟主机、配置虚拟目录、修改默认页面、配置系统服务并设置开机启动。

  测试环境:
  操作系统版本:Red Hat Enterprise Linux Server release 7.2 (Maipo),最小化安装

  gcc版本:gcc-4.8.5-4.el7.x86_64(操作系统介质自带)
  gcc-c++版本:gcc-c++-4.8.5-4.el7.x86_64(操作系统介质自带)
  Apache版本:httpd-2.4.23.tar.gz
  apr版本:apr-1.5.2.tar.gz
  apr-util版本:apr-util-1.5.4.tar.gz
  pcre版本:pcre-8.38.tar.gz
  

  一、安装部署
  1、通过官网查阅安装Apache 2.4的要求(见下图)发现跟Apache 2.2相比有所变化,主要是apr与apr-util不再附随在Apache httpd的源码包中,需要自己下载,以及还要求PCRE,也需要自己下载。其他的如磁盘可用空间大于50M、ANSI-C编译器及编译环境(如gcc)、确保准确的时间(如NTP时间同步,其实不配置也不影响安装)、Perl5(可选)等要求跟Apache httpd 2.2基本上差不多,但需要注意的是在编译pcre时仅安装gcc是不够的,还提示需要gcc-c++。
DSC0000.png

  

  2、通过yum安装gcc-c++:yum install gcc-c++,若只是安装了gcc而未安装gcc-c++,那么在编译安装pcre时执行configure命令会报错提示需要C++:configure: error:You need a C++ compiler for C++ support。而gcc-c++依赖gcc,因此我们只需要直接通过yum安装gcc-c++,就会自动把gcc也装上,
DSC0001.png

  

  3、上传相关的源码包,并解压pcre包:tar -zxvf pcre-8.38.tar.gz
DSC0002.png

  

  4、进入pcre包解压后的目录
DSC0003.png

  5、执行配置源码的命令:./configure
  [root@rh7coreApachepcre-8.38]# ./configure
DSC0004.png

  

  6、再执行编译命令:make
DSC0005.png

  

  7、最后执行编译安装命令:make install
  [root@rh7coreApachepcre-8.38]# make install
DSC0006.png

  

  8、根据官网说明,可以先解压httpd-2.4.23.tat.gz,再将apr和apr-util的源码包分别解压到httpd-2.4.23/srclib/apr和httpd-2.4.23/srclib/apr-util目录中,最后编译安装Apache httpd时使用--with-included-apr参数即可。本文便是采用此种方式进行编译安装Apache(当然也可以将apr和apr-util分别进行编译安装,网上也有相关资料)
[root@rh7coreApachetmp]# tar -zxvf httpd-2.4.23.tar.gz

[root@rh7coreApachetmp]# tar -zxvf apr-1.5.2.tar.gz
[root@rh7coreApachetmp]# mv apr-1.5.2 /tmp/httpd-2.4.23/srclib/apr

[root@rh7coreApachetmp]# tar -zxvf apr-util-1.5.4.tar.gz
[root@rh7coreApachetmp]# mv apr-util-1.5.4 /tmp/httpd-2.4.23/srclib/apr-util




9、检查一下apr和apr-util包都已解压并移动到指定目录
DSC0007.png

  

  10、进入httpd包解压后的目录,使用./configure --with-included-apr --with-pcre命令配置源代码,pcre包必须先单独编译安装,如果也只是解压到httpd-2.4.23/srclib/pcre目录会报错提示configure:error: pcre-config for libpcre not found。关于./configure还可以使用的参数选项如下:
  --prefix= 指明编译后的二进制文件安装到目录,用实际安装路径替换,如--prefix=/usr/local/apache24 ,如果省略此配置参数,默认安装到/usr/local/apache2目录。

--enable-so 指明编译动态加载模块(DSO)支持到httpd二进制文件,此模块使得Apache的各功能模块可以与核心分开编译、运行时动态加载。有了DSO支持,升级和增加模块时只需编译相关的模块即可,不必重新编译整个系统。最新版本的Apache缺省编译此模块到httpd二进制文件,如果使用早期版本的apache并且需要DSO支持,则要明确指出此选项。

--enable-mods-shared= 明确指明要以DSO方式编译的模块,为空格分隔的模块名列表、all或者most,all表示包含所有模块,most表示包含大部分模块,如--enable-mods-share="rewrite deflate",--enable-mods-share=most,效果等同于多个--enable-=share

  

  --with-mpm= 选择Apache多路处理模块,={beos|event|worker|prefork|mpmt_os2},prefork为Unix系统下默认处理模块,它运行一个非线程型的、预派生的Web服务器,适合于没有线程安全库,需要避免线程兼容性问题的系统,每个请求相互独立,若一个请求出现问题就不会影响到其他请求。worker为支持混合的多线程多进程的多路处理模块,它使用了多进程,每个进程又有多个线程,可以处理海量请求,而且系统资源的开销小于基于进程的MPM。
DSC0008.png

DSC0009.png

  

  11、使用make命令编译httpd:
[root@rh7coreApachehttpd-2.4.23]# make
DSC00010.png

  

  12、使用make install命令编译安装httpd
[root@rh7coreApachehttpd-2.4.23]# make install
DSC00011.png

  

  13、默认的编译安装路径是/usr/local/apache2,编辑/usr/local/apache2/conf/httpd.conf文件,修改ServerName为服务器IP地址:80
DSC00012.png

DSC00013.png

  

  14、启动Apache服务
  [root@rh7coreApache ~]# /usr/local/apache2/bin/apachectl -k start
  

  15、使用浏览器访问服务器IP,出现"It works!"表明Apache httpd服务器已经安装成功并启动。
DSC00014.png

  

  16、启动、停止、重启Apache的命令
启动服务   apachectl -k start
停止服务   apachectl -k stop
重启服务   apachectl -k resar
优雅地重启 apachectl -k graceful
优雅地停止 apachectl -k graceful-stop
  

  二、配置基于域名的虚拟主机
  本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1858650
  1、Apache httpd 2.4配置虚拟主机与Apache httpd 2.2基本一样,只是对于Directory的权限控制的参数用法有所改动。首先我们建立一个目录/test1,并在其中创建一个index.html文件,内容为 welcome to jiangjianlong.blog.51cto.com
DSC00015.png

  

  2、再建立目录/test2,并在其中创建一个index.html文件,内容为 GoodGoodStudy,DayDayUp
DSC00016.png

  

  3、编辑httpd.conf文件,将Include conf/extra/httpd-vhosts.conf这一行的注释符删掉,以启用conf/extra/httpd-vhosts.conf
[root@rh7coreApache~]# vi /usr/local/apache2/conf/httpd.conf
DSC00017.png

  

  4、修改conf/extra/httpd-vhosts.conf文件,将两个默认示例修改为下图所示,分别配置为www.test1.com和www.test2.com两个虚拟主机,需要注意Directory的权限控制的参数用法已与Apache httpd 2.2不同
  [root@rh7coreApache~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf


    ServerAdminwebmaster@dummy-host.example.com
    DocumentRoot "/test1"
    ServerName www.test1.com
    ErrorLog"logs/www.test1.com-error_log"
    CustomLog"logs/www.test1.com-access_log" common
   
       AllowOverride none
       Options None
       Require all granted
   



    ServerAdminwebmaster@dummy-host2.example.com
    DocumentRoot "/test2"
    ServerName www.test2.com
    ErrorLog"logs/www.test2.com-error_log"
    CustomLog"logs/www.test2.com-access_log" common
   
       AllowOverride none
       Options None
       Require all granted
   

  

DSC00018.png

  

  5、重启Apache httpd服务
  [root@rh7coreApache~]# /usr/local/apache2/bin/apachectl -k restart
  

  6、在笔记本做hosts解析,将www.test1.com和www.test2.com都解析到相同的服务器IP
  192.168.10.13 www.test1.com
192.168.10.13 www.test2.com
  7、使用浏览器访问www.test1.com,成功访问到/test1/index.html的页面
DSC00019.png

  

  8、使用浏览器访问www.test2.com,成功访问到/test2/index.html的页面
DSC00020.png

  

  9、而此时如果用IP访问,仍是访问到默认页面
DSC00021.png

  

  三、配置基于端口的虚拟主机
  1、修改conf/httpd.conf文件,增加监听 90和91端口
  [root@rh7coreApache~]# vi /usr/local/apache2/conf/httpd.conf
DSC00022.png

  

  2、修改conf/extra/httpd-vhosts.conf文件,将两个虚拟主机的*:80分别修改成*:90和*:91
[root@rh7coreApache~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
DSC00023.png

  

  3、重启Apache服务
[root@rh7coreApache~]# /usr/local/apache2/bin/apachectl -k restart
  

  4、使用IP地址+端口进行访问,成功访问到不同页面
DSC00024.png

  

  5、使用域名+不同端口进行访问,也成功访问到不同页面,访问到哪个页面取决于端口而非域名,如果不加端口则访问到默认页面
DSC00025.png

  

  四、配置虚拟目录

  1、在/test1中建立子目录/test1/earth,并创建一个index.html页面,内容为“Hello Earth”
DSC00026.png

  

  2、在/test2中建立子目录/test2/moon,并创建一个index.html页面,内容为“Hello Moon”
DSC00027.png

  

  3、修改conf/httpd.conf文件,在文件末尾增加2行,分别是Alias /earth "/test1/earth"、Alias /moon "/test2/moon“

DSC00028.png

  

  4、重启Apache服务
[root@rh7coreApache~]# /usr/local/apache2/bin/apachectl -k restart


5、使用IP+端口+虚拟目录成功访问到对应的页面
DSC00029.png

  

  6、使用域名+端口+虚拟目录进行访问,也成功访问到对应的页面
DSC00030.png

  

  五、修改默认页面
  1、创建/www/index.html,内容为 This is Apache 2.4.23
DSC00031.png

  

  2、编辑conf/httpd.conf文件,修改下图红框处的路径为 /www
[root@rh7coreApache~]# vi /usr/local/apache2/conf/httpd.conf DSC00032.png
  3、重启Apache服务
  [root@rh7coreApache~]# /usr/local/apache2/bin/apachectl -k restart
  

  4、使用IP或域名+默认的80端口都能成功访问到/www下的页面,说明默认页面已成功修改,若加上端口则访问到对应的其他页面
DSC00033.png

  

  六、配置系统服务并设置开机启动
  本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1858650
  1、指定PID文件,编辑httpd.conf文件,在文件末尾加上一行:PidFile /usr/local/apache2/httpd.pid
DSC00034.png

  

  2、创建/lib/systemd/system/httpd.service文件并添加以下内容,完成后如果服务启动与停止还不太正常,可reboot服务器后再试一下
[unit]配置了服务的描述,规定了在network启动之后执行。[service]配置服务的pid,服务的启动,停止,重启。[install]配置了使用用户。
[Unit]
Description=Apache2.4
After=syslog.targetnetwork.target remote-fs.target nss-lookup.target

[Service]
Type=forking

PIDFile=/usr/local/apache2/httpd.pid
ExecStart=/usr/local/apache2/bin/apachectl-k start
ExecReload=/usr/local/apache2/bin/apachectl-k restart
ExecStop=/usr/local/apache2/bin/apachectl-k stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target


DSC00035.png

  3、使用systemctl start httpd命令启动Apache服务,并使用systemctl status httpd查看服务状态,使用ls /usr/local/apache2可以看到自动生成了httpd.pid文件
DSC00036.png

  

  4、如果这时再使用命令bin/apachectl -k start启动服务,会发现提示httpd已经在运行,说明systemctl start httpd命令是生效的
DSC00037.png

  

  5、使用systemctl stop httpd命令停止Apache服务,使用systemctl status httpd查看服务状态,使用ls /usr/local/apache2可以看到自动删除了httpd.pid文件
DSC00038.png

  

  6、如果这时再使用命令bin/apachectl -k stop停止服务,会发现提示httpd没在运行,说明systemctl stop httpd命令是生效的
DSC00039.png

  

  7、设置开机运行httpd服务:systemctl enable httpd
DSC00040.png

  

  8、reboot一下服务器再登录,然后使用命令/usr/local/apache2/bin/apachectl -k start启动Apache,提示httpd已经在运行,说明开机自动启动Apache服务已经生效。
DSC00041.png

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636882-1-1.html 上篇帖子: 整合resin和apache 下篇帖子: apache的GenericObjectPool对象池使用经历!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表