一、编译安装
1、解决依赖关系安装httpd 2.4.4时首先需要解决依赖关系,httpd 2.4.4需要较新版本的apr和apr-util。升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。本文选择第一种方法来进行升级。在这里我们下载 apr-1.4.8.tar.bz2与apr-util-1.6.0.tar.bz2版本。为了以后不必要的麻烦,在这里一定要保证系统时间正确,不正确的(data自行修改)。
apr和apr-util的下载路径为:http://archive.apache.org/dist/apr/ 

编译安装apr
[root@proxy ~]# tar -xf apr-1.6.2.tar.bz2 [root@proxy ~]# cd apr-1.6.2/[root@proxy apr-1.6.2]# ./configure[root@proxy apr-1.6.2]# make[root@proxy apr-1.6.2]# make install[root@proxy apr-1.6.2]# rpm -q aprapr-1.4.8-3.el7.x86_64

编译安装apr-util

出现的错误:xml/apr_xml.c:35:19: error: expat.h: No such file or directory

安装expat库:yum install expat-devel
[root@proxy ~]# tar -xf apr-util-1.6.0.tar.gz [root@proxy ~]# cd apr-util-1.6.0/[root@proxy ~]#./configure --with-apr=/usr/local/apr[root@proxy apr-1.6.2]# make[root@proxy apr-1.6.2]# make install[root@proxy apr-util-1.6.0]# rpm -q apr-utilapr-util-1.5.2-6.el7.x86_64

httpd-2.4.4编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。
[root@proxy apr-util-1.6.0]#yum -y install pcre-devel

编译安装apache

原先的主机上有apache,先要卸载
[root@proxy ~]# rpm -e httpd

错误:依赖检测失败:
    httpd-mmn = 20120211x8664 被 (已安裝) php-5.4.16-36.el7_1.x86_64 需要
[root@proxy ~]# rpm -e php[root@proxy ~]# rpm -e httpd

[root@proxy ~]# tar -xf httpd-2.4.27.tar.gz [root@proxy ~]# cd httpd-2.4.27/[root@proxy ~]#/configure --prefix=/usr/local/apache - --enable-so --enable-mpms-shared=all:prefork、worker、event --with-mpm=event --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

解释:
--enable-so:支持动态共享模块,如果支持php将不能与apache一起工作。必须要有
--enable-ssl:启用ssl功能,如果不启用将无法使用https--enable-mpms-shared=all:prefork、worker、event--with-mpm=event:event为默认--enable-rewrite:支持URL重写
--enable-cgi :支持cgi--enable-cgid:httpd使用event或者worker得启用被线程方式访问
--enable-modules=most :启用大多数模块
--enable-mods-shared=most:启用大多数共享模块

[root@proxy apr-1.6.2]# make[root@proxy apr-1.6.2]# make install[root@proxy apr-util-1.6.0]# rpm -q apr-utilsetenforce 0 关掉selinux。(临时关闭)
永久关闭 vim /etc/selinux/config

遇到的错误
root@proxy httpd-2.4.27]# /usr/local/apache2/bin/apachectl startAH00557: httpd: apr_sockaddr_info_get() failed for proxyAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

解决:
只要在:vi /usr/local/apache2/conf/httpd.conf中ServerName(或vim/etc/httpd/conf/httpd.conf)前面的“#”拿掉就好了二、三种不同的web虚拟主机
基于不同域名
[root@proxy ~]# cat /usr/local/apache2/conf/httpd.conf <VirtualHost *:80>ServerName www.a.comDocumentRoot /var/www/html </VirtualHost><VirtualHost *:80>ServerName www.b.comDocumentRoot /var/www/web</VirtualHost>[root@proxy ~]# /usr/local/apache2/bin/apachectl restart[root@Client ~]# curl http://www.b.com

aaa[root@Client ~]# curl http://www.b.com

bbb

基于不同端口
[root@proxyt ~]# cat /usr/local/apache2/conf/httpd.conf<VirtualHost *:80>ServerName www.a.comDocumentRoot /var/www/html </VirtualHost><VirtualHost *:81>ServerName www.a.comDocumentRoot /var/www/web</VirtualHost>[root@proxy ~]# cat/usr/local/apache2/conf/httpd.confListen 80Listen 81[root@@proxy ~]# /usr/local/apache2/bin/apachectl restart[root@Client ~]# curl http://www.a.com:81

bbb[root@Client ~]# curl http://www.a.com

aaa

基于不同ip
[root@proxy ~]# cat /usr/local/apache2/conf/httpd.conf<VirtualHost 192.168.4.100:80>ServerName www.a.comDocumentRoot /var/www/html </VirtualHost><VirtualHost 192.168.2.101:80>ServerName www.a.comDocumentRoot /var/www/web</VirtualHost>[root@proxy ~]# /usr/local/apache2/bin/apachectl restart[root@Client ~]# curl http://192.168.4.100

aaa[root@Client ~]# curl http://192.168.2.101

Bbb

三、网页内容访问控制
客户机地址限制
使用<Directory>配置区段
--每个文件夹自动集成其父目录的ACL访问权限
--除非针对子目录有明确设置
<Directory 目录的绝对路径>
Require all denied|granted
Require ip IP或网段地址
</Directory>

SELinux策略保护
标准的web目录
用semanage工具可查看(semanage命令是用来查询与修改SELinux默认目录的安全上下文)
[root@proxy~]# semanage fcontext -l |grep httpd_sys_content/srv/([^/]*/)?www(/.*)?                            all files          system_u:object_r:httpd_sys_content_t:s0 /var/www(/.*)?                                     all files          

新建标准web目录时对的初始化(restorecon)
[root@proxy ~]# mkdir /web            [root@proxy ~]# mv /web/ /var/www/[root@proxy ~]# ls -Zd /var/www/web/        //显示安全上下文
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /var/www/web/[root@proxy ~]# restorecon -R /var/www/web/        //恢复SELinux文件属性即恢复文件的安全上下文
[root@proxy ~]# ls -Zd /var/www/web/     drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/web/

增加新的web目录
方式一:参照标准目录,重设目录的属性
chcon [-R] --reference=模板目录 新目录 例子:
[root@proxy ~]# ls -Zd /var/www/html/            //模板目录
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

[root@proxy ~]# mkdir /web                    //新目录
[root@proxy ~]# ls -Zd /web/drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /web/[root@proxy ~]# chcon --reference=/var/www/html /web/        //重设目录属性
[root@proxy ~]# ls -Zd /web/drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /web/

方式二:将新目录增加到预设的标准web目录范围
Semanage fcontext -a -t httpd_sys_content_t ‘新目录(/.*)?’
[root@proxy ~]# mkdir /web1      //新建根下的wbb1

[root@proxy ~]# semanage fcontext -a -t httpd_sys_content_t '/web1(/.*)?'  //设置web1的属性
[root@proxy ~]# ls -Zd /web1            //查看没变化,这里要要用restorecon命令重设一下
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /web1[root@proxy ~]# restorecon -R /web1                //重设后查看
[root@proxy ~]# ls -Zd /web1drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /web1[root@proxy ~]# mkdir -p /web1/web2     //在其目录下创建子目录属性会继承
[root@proxy ~]# ls -Zd /web1/web2drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /web1/web2

四、安全的web服务1、HTTPS

1.1. 什么是HTTPS

HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP。HTTPS的安全基础是安全套接层(Secure Sockets Layer,SSL)。HTTP工作在应用层(OSI模型的最高层),SSL协议工作在一个较低的子层,位于TCP/IP协议和HTTP协议之间。在HTTP报文传输前对其加密,并在到达时对其解密。严格地讲,HTTPS并不是一个单独的协议,而是工作在SSL协议上的HTTP协议。
TLS对SSL进行了扩充,是SSL的继任者,但两者区别不大,以下讨论中不对TLS和SSL做严格区分。HTTPS主要作用有两种:(1)确认通讯双方的身份,(2)建立安全通道,保证数据传输安全。
1.2. HTTPS的主要作用
1.2.1. 确认通讯双方的身份
HTTPS通讯中,通过签名技术通讯双方可以确认对方身份。身份认证分为单向认证和双向认证。单向认证中只有服务器端有证书,双向认证中服务器和客户端都有证书。一般的HTTPS站点只有服务器有证书,而客户端无证书。
单向认证是双向认证的简化版,本文讨论过程中如无特殊说明都认为是双向认证。
1.2.2. 建立安全通道,保证数据传输安全
基于SSL协议通讯双方可以协商一个用于对称加密的密钥,该密钥是一个难以破解的随机数,而且依赖通讯双方的证书、私钥等来协商。密钥协商好后,通讯双方用该密钥对数据进行加解密,从而保证数据安全。
1.3. HTTPS与HTTP协议的差异
(1)HTTP 的URL是以“http://”开始,HTTPS的URL是以“https://”开始;
(2)HTTP默认端口为80,HTTPS的默认端口为443;
(3)采用HTTPS的Web Server需要到CA申请证书;
(4)HTTPS由HTTP+SSL来实现,可进行加密传输、身份认证等,要比HTTP安全
(5)HTTP的信息是明文传输,而HTTPS的信息是加密传输
数字证书基础
PKI公钥基础设施
公钥:主要用来加密数据
私钥:主要用来解密数据
数字证书:证明拥有者的合法性/权威性
Certificate Authority,数字整数授权中心:负责证书的申请、审核、颁发、鉴定、撤销等管理工作
实现https加密的条件
HTTPs加密web通信(tcp 443端口)
--secure sockets layer ,安全套字层
--transport layer security ,安全传输层协议
实现条件
--启用ssl模块支持
--部署好加密素材:网站服务器的数字证书、网站服务器的私钥、根证书(CA管理机构的证书)
[root@lxy ~]# yum -y install mod_ssl.x86_64

部署证书、密钥相关文件
部署证书、密钥文件的部署路径
--/etc/pki/tls/certs/证书文件.crt

--/etc/pki/tls/private/私钥文件.key
调整web服务器的配置
配置要点
指定ssl虚拟站点的DNS名称、网页根目录
指定站点证书/根证书/站点密钥
[root@proxy ~]# vim /usr/local/apache2/conf/extra/httpd-ssl.conf  

SSLCertificateFile /etc/pki/tls/certs/localhost.crtSSLCertificateKeyFile /etc/pki/tls/private/localhost.keySSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

[root@proxy ~]# /usr/local/apache2/bin/apachectl restart

五、部署动态网站
部署WSGI动态环境
1、装包(httpd、mod_wsgi)
2、配置
3、启服务
<VirtualHost *:8909>Listen8909ServerName www.a.comDocumentRoot /var/www/htmlWSGIScripAlias / /var/www/html/.*.wsgi</VirtualHost>[root@proxy ~]# /usr/local/apache2/bin/apachectl restart

selinux策略保护
标准web端口
使用sanmanage工具可查看
[root@proxy ~]# semanage port -l |grep http_porthttp_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

当尝试监听非标配端口时,selinux会阻止
调整允许开放其他web端口
使用semanage工具
[root@proxy ~]# semanage port -a -t http_port_t -p tcp 8909[root@proxy ~]# semanage port -l |grep http_porthttp_port_t                    tcp      8909, 80, 81, 443, 488, 8008, 8009, 8443, 9000

转载于:https://www.cnblogs.com/lxyqwer/p/7355912.html

apache基本配置相关推荐

  1. ubuntu+php+mysql+apache安装配置

    ubuntu+php+mysql+apache安装配置 1. 安装运行环境 复制内容到剪贴板 代码: sudo apt-get install apache2 sudo apt-get install ...

  2. apache http配置https

    apache http配置https <一,Lamp系统搭建> yum install httpd httpd-devel mysql mysql-server mysql-devel p ...

  3. Apache+PHP配置过程详解

    Apache+PHP配置过程详解 经过两晚上的奋斗终于将Apache配置PHP成功,安装配置过程中走了不少弯路,特记录之. 1.Apache配置PHP个人认为首先要注意的是Apache和PHP的版本信 ...

  4. Apache简单配置(4)搭建Discuz 7.0.0论坛

    Apache简单配置(4)搭建Discuz 7.0.0论坛 RHEL5.3 基本网络配置 一. 1.RHEL5 U3:如图1 (如图1) 2.#hostname //查看当前主机的主机名:如图2 (如 ...

  5. Apache服务器 配置多个网站解决方案

    Apache服务器 配置多个网站解决方案 参考文章: (1)Apache服务器 配置多个网站解决方案 (2)https://www.cnblogs.com/lazb/p/5537924.html (3 ...

  6. apache虚拟机配置步骤和修改访问端口

    这篇文章主要介绍了apache虚拟机配置步骤和修改访问端口的方法(虚拟机端口映射),需要的朋友可以参考下 一.添加服务端口 在文件Apache\conf\httpd.conf中, 1.找到 Liste ...

  7. Apache 2配置域名绑定的步骤

    这篇文章主要给大家介绍了Apache 2配置域名绑定的方法,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近新装了个OJ系统,想着总是用ip访问挺难记得,就打算绑一个域名上去. ...

  8. tomcat苹果版安装步骤_mac系统安装apache tomcat配置方法图文详解

    下面,绿茶小乐哥分享mac系统安装apache tomcat配置方法,希望能帮助到大家! tomcat无法取访问appache资源. appache只支持静态网页,但像asp,php,cgi,jsp等 ...

  9. 在Apache上配置防盗链功能和隐藏版本号

    文章目录 在Apache上配置防盗链功能 安装DNS服务 配置http服务软件目录 开启服务 开启服务 源站进行防盗链操作 隐藏版本信息步骤 使用抓包工具查看版本信息 隐藏设置 在Apache上配置防 ...

  10. LINUX下的APACHE的配置

    今天写一下LINUX下的APACHE的配置方法. APACHE是作为WEB服务器的.它的优点在于用缓存方式来加快网页的搜索速度. APACHE缺省只支持静态网页 LINUX下有APACHE的RPM包 ...

最新文章

  1. UA MATH571B 试验设计I 试验设计简介
  2. Competition——ML/DL:机器学习、深度学习各种计算机视觉、自然语言处理、科学预测等等比赛竞赛简介
  3. messenger android 4.,AndroidIPC机制(4)-Messenger
  4. Ulink2 No Ulink Device found 解决办法
  5. 线程间的协作(3)——管道输入/输出流
  6. ORC 在 Hive 中的应用
  7. openresty的html文件夹在,Openresty 配置访问静态文件,拆分路径
  8. 插入耳机不识别只能外放,音频设备错误代码0xc00d36fa
  9. 如何区分网线是几类的_5类、6类网线双绞线如何区分又怎么样使用?
  10. matlab 连续下标表示,matlab 下标问题
  11. 通用计算机按其规模速度和功能,电脑基础知识详解
  12. 2022帆软BI数据分析大赛他来了!
  13. Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问
  14. 「大数据成神之路」第三版更新完毕
  15. R语言中dcast 和 melt的使用 简单易懂
  16. 四川率先发布新基建新消费新产业创新发展行动计划
  17. Mac HomeBrew安装慢解决方案
  18. 关于PBR流程的小概念
  19. 谷歌浏览器变成白色的解决方法
  20. 区块链开发公司解析区块链怎样与大数据完美结合

热门文章

  1. 来吧,用设计模式来干掉 if-else 啊~
  2. Java中的双冒号::是什么玩意?有这个语法?
  3. Go基础-核心特性和前景
  4. web自动化知识点-02
  5. LInux下CAN滤波时间,linux下can调试工具canutils安装过程记录
  6. hashcode值一样对象一定相同吗_硬核问题,为什么重写equals()就要重写hashCode()?
  7. vuejs知乎_vueJS (简版)amp; 响应式原理
  8. java web实训项目_通知 | Java、web大前端将在南京开课啦!
  9. python如何筛选数据_python如何在列表、字典中筛选数据
  10. 二位数组的示例 go语言