apache基本配置
一、编译安装 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基本配置相关推荐
- ubuntu+php+mysql+apache安装配置
ubuntu+php+mysql+apache安装配置 1. 安装运行环境 复制内容到剪贴板 代码: sudo apt-get install apache2 sudo apt-get install ...
- apache http配置https
apache http配置https <一,Lamp系统搭建> yum install httpd httpd-devel mysql mysql-server mysql-devel p ...
- Apache+PHP配置过程详解
Apache+PHP配置过程详解 经过两晚上的奋斗终于将Apache配置PHP成功,安装配置过程中走了不少弯路,特记录之. 1.Apache配置PHP个人认为首先要注意的是Apache和PHP的版本信 ...
- Apache简单配置(4)搭建Discuz 7.0.0论坛
Apache简单配置(4)搭建Discuz 7.0.0论坛 RHEL5.3 基本网络配置 一. 1.RHEL5 U3:如图1 (如图1) 2.#hostname //查看当前主机的主机名:如图2 (如 ...
- Apache服务器 配置多个网站解决方案
Apache服务器 配置多个网站解决方案 参考文章: (1)Apache服务器 配置多个网站解决方案 (2)https://www.cnblogs.com/lazb/p/5537924.html (3 ...
- apache虚拟机配置步骤和修改访问端口
这篇文章主要介绍了apache虚拟机配置步骤和修改访问端口的方法(虚拟机端口映射),需要的朋友可以参考下 一.添加服务端口 在文件Apache\conf\httpd.conf中, 1.找到 Liste ...
- Apache 2配置域名绑定的步骤
这篇文章主要给大家介绍了Apache 2配置域名绑定的方法,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近新装了个OJ系统,想着总是用ip访问挺难记得,就打算绑一个域名上去. ...
- tomcat苹果版安装步骤_mac系统安装apache tomcat配置方法图文详解
下面,绿茶小乐哥分享mac系统安装apache tomcat配置方法,希望能帮助到大家! tomcat无法取访问appache资源. appache只支持静态网页,但像asp,php,cgi,jsp等 ...
- 在Apache上配置防盗链功能和隐藏版本号
文章目录 在Apache上配置防盗链功能 安装DNS服务 配置http服务软件目录 开启服务 开启服务 源站进行防盗链操作 隐藏版本信息步骤 使用抓包工具查看版本信息 隐藏设置 在Apache上配置防 ...
- LINUX下的APACHE的配置
今天写一下LINUX下的APACHE的配置方法. APACHE是作为WEB服务器的.它的优点在于用缓存方式来加快网页的搜索速度. APACHE缺省只支持静态网页 LINUX下有APACHE的RPM包 ...
最新文章
- UA MATH571B 试验设计I 试验设计简介
- Competition——ML/DL:机器学习、深度学习各种计算机视觉、自然语言处理、科学预测等等比赛竞赛简介
- messenger android 4.,AndroidIPC机制(4)-Messenger
- Ulink2 No Ulink Device found 解决办法
- 线程间的协作(3)——管道输入/输出流
- ORC 在 Hive 中的应用
- openresty的html文件夹在,Openresty 配置访问静态文件,拆分路径
- 插入耳机不识别只能外放,音频设备错误代码0xc00d36fa
- 如何区分网线是几类的_5类、6类网线双绞线如何区分又怎么样使用?
- matlab 连续下标表示,matlab 下标问题
- 通用计算机按其规模速度和功能,电脑基础知识详解
- 2022帆软BI数据分析大赛他来了!
- Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问
- 「大数据成神之路」第三版更新完毕
- R语言中dcast 和 melt的使用 简单易懂
- 四川率先发布新基建新消费新产业创新发展行动计划
- Mac HomeBrew安装慢解决方案
- 关于PBR流程的小概念
- 谷歌浏览器变成白色的解决方法
- 区块链开发公司解析区块链怎样与大数据完美结合
热门文章
- 来吧,用设计模式来干掉 if-else 啊~
- Java中的双冒号::是什么玩意?有这个语法?
- Go基础-核心特性和前景
- web自动化知识点-02
- LInux下CAN滤波时间,linux下can调试工具canutils安装过程记录
- hashcode值一样对象一定相同吗_硬核问题,为什么重写equals()就要重写hashCode()?
- vuejs知乎_vueJS (简版)amp; 响应式原理
- java web实训项目_通知 | Java、web大前端将在南京开课啦!
- python如何筛选数据_python如何在列表、字典中筛选数据
- 二位数组的示例 go语言