以下所有的实验实操都在rhel7.0上
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
它可以运行在几乎所有广泛使用的计算机平台上。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
在企业中常用的web服务,用来提供http://(超文本传输协议)
主配置目录:/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/
关闭selinux
getenforce
查看selinux的状态
Disabled
[root@apache yum.repos.d]# yum install httpd -y ##安装http
[root@apache yum.repos.d]# systemctl start httpd ##开启http
[root@apache yum.repos.d]# systemctl enable httpd ##开机自启
[root@apache yum.repos.d]# firewall-cmd --list-all ##查看防火墙中是否添加了http服务
[root@apache yum.repos.d]# firefox &
在浏览器上输入172.25.254.110,会出现apache默认页面
[root@apache ~]# rpm -qc httpd ##查看http配置文件:/etc/httpd/conf/httpd.conf;
[root@apache ~]# cd /var/www/html ##apached的根目录,默认发布目录:apache默认的数据文档存储目录
[root@apache html]# vim index.html ##apache的默认发布文件
默认文件的内容:test wetsos1
[root@apache yum.repos.d]# firefox &
在浏览器上输入172.25.254.110,会显示默认发布目录下的发布文件index.html的默认页面
[root@apache html]# vim westos
test westos2
[root@apache yum.repos.d]# firefox & 在浏览器上输入172.25.254.110/westos,会出现配置文件
的默认页面
[root@apache html]# yum install -y httpd-manual.noarch
##安装apache的手册
在浏览器上输入172.25.254.110/manual,会出现报错因为没有重新启动服务;
[root@apache html]# systemctl restart httpd
[root@apache html]# systemctl restart network
##### 修改默认端口:
vim /etc/httpd/conf/httpd.conf
43 Listen 8080 #修改默认端口为8080
firewall-cmd --permanent --add-port=8080/tcp #打开防火墙添加8080端口
firewall-cmd --reload
firewall-cmd --list-all
systemctl restart httpd ##修改完配置文件要重新启动给防火墙添8080:
[root@apache yum.repos.d]# firefox &
在浏览器上输入172.25.254.110:8080,因为默认的端口号为80,而端口号发生了改变,所以在访问时需要添加8080端口,会出现配置文件的默认页面;
默认发布文件就是访问apache时没有指定文件名时默认访问的文件这个文件可以指定多个,有访问顺序
vim /var/www/html/westos
test westos2
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex westos1 index.html ##当westos不存在时访index.html
systemctl restart httpd
[root@apache yum.repos.d]# firefox &
在浏览器上输入172.25.254.110:8080,会出现配置文件->当westos存在时,自动跳转访问/westos目录下,若westos不存在时会访问index.html
cd /var/www/html/
ls
rm -fr westos
#删除westos文件
vim /etc/httpd/conf/httpd.conf
#将配置文件的端口好改为80,
systemctl restart httpd.service
[root@apache yum.repos.d]# firefox &
#在浏览器上输入172.25.254.110,westos配置文件不存在时,访问index.html
还原纯净环境!!!
将配置文件的端口好改为80,(记得实验后把配置文件的164行的westos删除)
mkdir -p /westos/html/ #创建发布目录
vim /westos/html/index.html
修改发布目录
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/westos/html"
文件默认访问目录
注意:常见访问控制指令
Require all granted
允许所有来源访问
Require all denied
拒绝所有来源访问
Require expr expression
允许表达式为true时访问
Require ip 10 172.20 192.168.2
允许特定IP段访问,多个段之前用空格隔开,每个段使用开头几项表示
Require host westos.com
只允许来自域名westos.com的主机访问
systemctl restart httpd.service
firefox &
#在浏览器上输入172.25.254.110:8080,会显示修改的发布目录下的文件
还原纯净环境!!!
vim /var/www/html/index.html
test westos1
#先设置默认发布文件的内容
mkdir /var/www/html/westos #创建需要域名访问的的指定目录
vim /var/www/html/westos/index.html
westos目录下
` #编辑域名访问时,指定文件的内容
添加:
设置主配置文件中的域名访问时的访问控制条件
vim /etc/httpd/conf/httpd.conf
121
122 Order(顺序) Allow,Deny ##执行命令,注意顺序,先读Allow,再deny
Allow from All #允许所有通过
Deny from 172.25.254.110 #不允许110主机访问,读到deny会覆盖allow(图片有误注意)
123
systemctl restart httpd #重启动服务
测试:
在110客户机浏览器上面测试:
172.25.254.110测试访问
权限未开,拒绝访问
172.25.254.110/westos/index.html
指定用户的目录:注意它的绝对路径:/etc/httpd/conf/
htpasswd -cm westosuser admin1 #添加指定用户,第一次生成文件时加-c参数
cat westosuser #查看指定用户的存储文件下的帐号与密码
htpasswd -m westosuser admin2 #在第一次添加完用户后,往后添加新用户时不需要-c参数,因为如果还添加参数c会覆盖原本的信息;
vim /etc/httpd/conf/httpd.conf
添加:
121
122 AuthUserFile /etc/httpd/conf/westosuder ##指定用户和密码的目录
AuthType basic #用户认证的类型是mod_auth提供的基本类型basic
AuthName "Please input your name and passwd!!"
# 下面这两行只能出现一行
Require user admin #只允许admin用户登录
#Require valid-user #存在合法的所有用户都可以登录
123
sytemctl restart httpd
测试:http://172.25.254.110/westos/index.html #因为目录就是westos下
帐号:admin1
密码:admin1
正常访问需要认证
浏览器提示是否记录账户密码
正常访问
浏览器访问http://172.25.254.110/westos/index.html
帐号:admin2
密码:admin2
vim /etc/httpd/conf/httpd.conf
Require valid-user #存在合法的所有用户都可以登录
sytemctl restart httpd
如上述情况,所有的合法用户都可登录,而本人只设置了两个账户分别为:
账号admin1密码admin1
账号admin2密码admin2
测试与上述一样
日志截断:
/etc/httpd/logs/access_log 登录日志
/etc/httpd/logs/error_log 错误日志
- 服务起不来查看日志
- 服务起的来:
1、查看apache是否被打开
2、查看ifconfig是否存在ip
3、查看apache日志:/etc/httpd/logs/error_log
因为如果一个主机只能访问一个域名,这是非常的浪费资源;
所以现在处理一个主机处理不同的域名访问服务
apache的虚拟主机
一台apache主机上开多个站点
hosts——>The static table lookup for host name(文件名查询静态表)
/etc/hosts是配置ip地址和其对应主机名的文件,这里可以记录本机的或其他的ip及其对应
名
不同的linux版本,这个配置文件也可能不同,比如:Debian的对应文件的/etc/hostname
而linux主机名的相关配置文件就是/etc/hosts;这个文件告诉主机那些域名对应哪些ip,那些主机名对应那些ip:
比如文件中有这样的定义:
172.25.254.110 linux110 test110
假设172.25.254.110是一台网络服务器,在网页中输入http://linux110或http://test110就会打开172.25.254.110的网页。
通常情况下这个文件记录了本机的IP和主机名:
172.0.0.1 localhost.localdomain localhost
一般情况下hosts文件的每行尾一个主机,每行由三部分组成,每个部分由空格隔开。
第一部分:网络IP地址
第二部分:主机名或域名
第三部分:主机名别名。
主机名(hostname)与域名(domain)的区别:
主机名通常在局域网内使用,通过hosts文件,主机名就被解析到对应ip;
域名通常在INTERNET上使用,但如果本机不想使用internet上的域名解析,这时就可以更改hosts文件,加入自己的域名解析。
vim /etc/hosts
172.25.254.110 www.westos.com news.westos.com #本地地址解析
一个主机处理不同服务访问
创建一个目录将其这些虚拟(virtual)服务放在一个目录下
mkdir /var/www/virtual/news/html -p
mkdir /var/www/virtual/music/html -p
#虚拟服务的默认的访问目录下的默认文件
vim /var/www/virtual/news/html/index.html
news.westos.com
vim /var/www/virtual/music/html/index.html
music.westos.com
vim /etc/httpd/conf/httpd.conf #记得还原配置文件
systemctl restart httpd.service
在子配置文件下建立
vim /etc/httpd/conf.d/default.conf
#虚拟主机端口80
DocumentRoot /var/www/html #文件默认访问目录
CustomLog logs/default.log combined #日志存放地址
这里的logs相当于/etc/https/logs,combined 是混合性日志,将登录日志与错误日志联系在一起,不用分开看
vim /etc/httpd/conf.d/news.conf
#虚拟主机端口80
ServerName news.westos.com #服务器名称
DocumentRoot /var/www/virtual/news/html/ #文件默认访问目录
CustomLog logs/news.log combined 日志存放位置,类型:混合型(是将登录日志与错误日志联系在一起,一起看不用分开),这里的logs相当与/etc/https/logs
Require all granted #允许所有来源访问
查看默认目录下的文件内容
vim /var/www/virtual/news/html/index.html
cat /var/www/virtual/news/html/index.html
http://news.westos.com正常访问
music类似
vim /var/www/virtual/music/html/index.html
[root@apache conf.d]# cat /var/www/virtual/music/html/index.html
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI分为标准CGI和间接CGI两种。标准CGI使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI又称缓冲CGI,在CGI程序和CGI接口之间插入一个缓冲程序,缓冲程序与CGI接口间用标准输入输出进行通信
vim /var/www/html/index.php
http://172.25.254.110/index.php
报错信息:会显示空白的状态
添加php服务
安装php和cgi
yum install -y php
systemctl restart httpd
110主机上:172.25.254.110/index.php
显示默认状态;
mkdir /var/www/html/cgi 创建目录
vim /var/www/html/cgi/index.cgi 编剧index.cgi
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print date
; 文字输出是静态的,显示的是代码;
http://172.25.254.110/cgi/index.cgi
chmod +x index.cgi 添加可执行权限;
vim /etc/httpd/conf.d/default.conf ##进入子配置文件设置端口
默认的80端口
DocumentRoot /var/www/html/
CustomLog logs/default.log combined
#将错误日志和登录日志联系在一起,及可以一起看不用分开看;方便
121
122 Options +ExecCGI #允许使用mod_cgi模块执行CGI脚本I
AddHandler cgi-script .cgi #允许用户目录中所有以“.cgi”结尾的文件作为CGI脚本执行
123
http://172.25.254.110/cgi/index.cgi
时间是在不停变化的,这是一个动态的
HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为
目标的HTTP通道,即HTTP的安全版。HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细
内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http体系。用于安全的HTTP
数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验
证层(在HTTP与TCP之间)。
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,
为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于
对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。即HTTPS协议是由SSL+HTTP协议构建的可
进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS和HTTP的区别主要如下:
(1)https协议需要到ca申请证书,一般免费证书较少,需要一定费用。
(2)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
(3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
没有加密之前,访问https不能访问
cd /etc/httpd/conf.d
yum install -y mod_ssl # 用mod_ssl来实现https
ls
systemctl restart httpd
https://172.25.254.110
有了加密软件之后,就可以通过证书来进行访问
认证成功后就可以访问了
https:172.25.254.110
上面的证书是系统自己生成的,可是我想自己制作证书,以下操作是我自己在生成证书
删除station证书
yum install -y mod_ssl
yum insatll -y crypto-utils # 此软件提供加密工具
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 #生成的密钥
systemctl restart httpd
打开浏览器
测试
http://www.westos.com
cd /etc/httpd/conf.d/
cp news.conf login.conf
vim login.conf
默认的80端口
ServerName login.westos.com 域名名称
DocumentRoot /var/www/virtual/login/html 文档根目录是指定的虚拟目录
CustomLog logs/default.log combined #将错误日志和登录日志联系在一起,及可以一起看不用分开看;方便
SSLEngine on ##SSL引擎开启
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt 认证文件
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key?认证秘钥文件
121
122 Require all granted 给该目录都授权
123
mkdire -p /var/www/virtual/login/html
vim /var/www/virtual/login/html/index.html
login page
systemctl restart httpd
测试:http://login.westos.com
vim login.conf
默认的80端口
ServerName login.westos.com 域名名称
RewriteEngine on ##改写引擎开启
RewriteRule ^(/.*)$https://%{HTTP_HOST}$1 [redirect=301] ##重写规则,将80端口转换成443,这样才能保证安全性;
#^(/.*)$表示客户在浏览器中输入的所有字符
# 1 表 示 ( / . ∗ ) 1表示^(/.*) 1表示(/.∗)的值
#redirect=301表示转换成永久重定向
#%{HTTP_HOST}表示客户请求主机
https:445
http:80
测试:login.westos.com服务会自动转换成443服务:https://login.westos.com
1、当重新启动apache服务没有成功会有报错
解决办法:
查看日志:vim /var/log/message
2、当重新启动apache服务成功没有报错但是在浏览器测试时没有显示成功的页面
解决办法:
查看系统日志(错误日志):vim /etc/httpd/logs/error_log