apache
1.相关名词介绍
1)什么是Web服务器?
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档, 也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache 、Nginx、 IIS。加粗样式
2)什么是Apache?
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它可以运行在几乎所有广泛使用的计算机平台上。
3)Apache与Httpd的区别是什么?
httpd是Apache超文本传输协议(HTTP)服务器的主程序。在早期的http server就叫做apache,到了http server 2.0以后就改名为httpd了。
4)WWW、HTTP、HTTPS、HTML分别是什么?
WWW:WWW是环球信息网的缩写,(亦作“Web”、“WWW”、“‘W3’”,英文全称为“World Wide Web”),中文名字为“万维网”,"环球网"等,常简称为Web。 分为Web客户端和Web服务器程序。 WWW可以让Web客户端(常用浏览器)访问浏览Web服务器上的页面。 是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过超文本传输协议(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源。
HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。
HTTPS:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
HTML:超文本标记语言(HyperText Markup Language )。网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
5)http与https的区别是什么?
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
1.apchece
#企业中常用的web服务,用来提供http://(超文本传输协议)
2.apache的安装部署
yum install httpd -y ##apache软件
yum install httpd-manual ##apache的手册
systemctl start httpd
systemctl enable httpd
firewall-cmd --list-all ##列出火墙信息
firewall-cmd --permanent --add-service=http ##永久允许http
firewall-cmd --reload ##火墙从新加载策略
/var/www/html ##apache的/目录,默认发布目录
/var/www/html/index.html ##apache的默认发布文件
vim /var/www/html/index.html
<h1> hello world </h1>
:wq
#测试 http://172.25.254.100
http://172.25.254.100/manual
3.apache的基础信息
#主配置目录: /etc/httpd/conf
#主配置文件: /etc/httpd/conf/httpd.conf
#子配置目录: /etc/httpd/conf.d/
#子配置文件: /etc/httpd/conf.d/*.conf
#默认发布目录: /var/www/html
#默认发布文件: index.html
#默认端口: 80
#默认安全上下文:httpd_sys_content_t
#程序开启默认用户: apache
#apache日志: /etc/httpd/logs/*
1)修改默认端口:
vim /etc/httpd/conf/httpd.conf
43 Listen 8080 ##修改默认端口为8080
修改为下图
重启httpd,查看端口
此时在真机的浏览器
输入172.25.254.111(相当于172.25.254.111:80)此时找不到
输入172.25.254.111:8080此时还找不到
因为只是修改了默认端口,火墙并不允许这个端口通过,在火墙中添加这个端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
再查看
2)修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件
3)修改配置文件
重启httpd
然后测试
这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.html test.html ##当index.html不存在时访问test.html
当第一个文件存在时,先访问第一个文件
第一个文件不存在时,访问第二个
4)修改默认发布目录
cd /var/www/html 默认发布目录
mkdir -p /www/html
vim /www/html/index.html
vim /etc/httpd/conf/httpd.conf
搜/Doc
复制一行,注释掉原来的
/var/www/html----->/www/html
加入:
<Directory "/westos/html">
Require all granted
</Directory>
systemctl restart httpd
输入172.25.254.113/index.html 访问不到
查看selinux状态
setenforce 0
输入172.25.254.113 可以访问
ls -Zd /var/www/html
ls -Zd /westos/html
是因为安全上下文的问题,那么给这个目录可以通过selinux的安全上下文
semanage fcontext -a -t httpd_sys_content_t '/westos/html(/.*)?'
restorecon -RvvF /westos/html
Getenforce
输入172.25.254.113
4.apache的虚拟主机
vim /etc/httpd/conf.d/adefault.conf
DocumentRoot “/var/www/html”
CustomLog “logs/www.westos.com.log” combined
vim /etc/httpd/conf.d/linux.conf
<VirtualHost *:80>
ServerName linux.westos.com #指定站点名称
DocumentRoot “/var/www/virtual/linux.westos.com/html/” #站点默认发布目录
CustomLog “logs/linux.westos.com.logs” combined #站点日志combined标示四种日志的集合
<Directory “/var/www/virtual/linux.westos.com/html/”>
Require all granted
vim /etc/httpd/conf.d/c.conf
<VirtualHost *:80>
ServerName c.westos.com
DocumentRoot “/var/www/virtual/c.westos.com/html/”
CustomLog “logs/c.westos.com.logs” combined
<Directory “/var/www/virtual/c.westos.com/html/”>
Require all granted
测试:
在测试主机中作好本地解析
vim /etc/hosts
172.25.254.100 c.westos.com …
5.apache内部的访问控制
1.针对与主机的访问控制
5 <Directory “/var/www/html/test”>
6 Order deny,allow ##列表读取顺序,后读取的列表会覆盖限度去内容的重复部分
7 Allow from 172.25.254.44
8 Deny from all
9
2.用户方式的访问控制
htpasswd -cm /etc/httpd/userpass admin
htpasswd -m /etc/httpd/userpass admin1
vim adefault.conf
10 <Directory “/var/www/html/admin”>
11 AuthUserFile /etc/httpd/userpass
12 AuthName “Please input your name and password”
13 AuthType basic
14 #Require user admin
15 Require valid-user
16
6.apache支持的语言
1.html
2.php
vim /var/www/html/index.php
yum install php -y
systemctl restart httpd
测试
172.25.254.100/index.php
3.cgi
mkdir -p /var/www/html/cgi
semanager fcontent -a -t httpd_sys_script_exec_t ‘/var/www/html/cgi(/.*)?’
restorecon -RvvF /var/www/html/cgi/
vim /var/www/html/cgi/index.cgi
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print date
;
chmod +x /var/www/html/cgi/index.cgi
/var/www/html/cgi/index.cgi #执行下脚本确保脚本运行正常
vim adefatul.conf
17 <Directory “/var/www/html/cgi”>
18 Options +ExecCGI
19 AddHandler cgi-script .cgi
20
systemctl restart httpd
4.wsgi
yum install mod_wsgi -y
vim /var/www/html/cgi/westos.wsgi
#!/usr/bin/env python
import time
def application (environ, start_response):
response_body = ‘UNIX EPOCH time is now: %s\n’ % time.time()
status = ‘200 OK’
response_headers = [(‘Content-Type’, ‘text/plain’),
(‘Content-Length’, ‘1’),
(‘Content-Length’, str(len(response_body)))]
start_response(status, response_headers)
return [response_body]
vim /etc/httpd/conf.d/adefault.conf
DocumentRoot “/var/www/html”
WSGIScriptAlias /WSGI /var/www/html/cgi/script.wsgi
systemctl restart httpd
测试:
http://172.25.254.100/WSGI
7.https
yum install mod_ssl -y
yum install crypto-utils -y
genkey www.westos.com
vim /etc/httpd/conf.d/ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
8设定https虚拟主机并设定网页重写
1 <VirtualHost *:443>
2 ServerName login.westos.com
3 DocumentRoot /var/www/html/virtual/login.westos.com/html
4 CustomLog “logs/login.logs” combined
5 SSLEngine on
6 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
7 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
8
9 <Directory “/var/www/html/virtual/login.westos.com/html”>
10 Require all granted
11
12 <VirtualHost :80>
13 ServerName login.westos.com
14 RewriteEngine On
15 RewriteRule ^(/.)$ https://%{HTTP_HOST}$1 [redirect=301]
16
^(/.*)$ ##客户在浏览器地址栏中输入的所有字符
https:// ##强制客户加密访问
%{HTTP_HOST} ##客户请求主机
$1 ###"
1
"
标
示
(
/
.
∗
)
1"标示 ^(/.*)
1"标示(/.∗)的值
[redirect=301] ##永久重写 302临时