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日志 | /etc/httpd/logs/* |
搭建apache-web服务器
(1)yum search apache寻找安装包
(2)yum install httpd -y 安装apache软件
(3)systemctl start httpd开启apache服务
systemctl enable httpd 开机启动
(4)netstat -antlupe | grep httpd(查看httpd的服务端口80是否开启)
(5)firewall-cmd --list-all ##列出火墙信息
firewall-cmd --permanent --add-service=http ##在火墙里面添加http服务
firewall-cmd --reload ##重新加载使添加生效
(6)rpm -ql httpd查看主配置目录
(7)测试发布的内容
apache服务的相关配置
(1) 修改httpd服务的端口
(1)
vim /etc/httpd/conf/httpd.conf编辑httpd的主配置文件
搜Listen 将端口由80改为8080默认使用端口80
systemctl restart httpd重启才会生效
(2)netstat -antlupe | grep httpd 查看端口是否改为8080查看端口是否修改成功
(3)firewall-cmd --permanent --add-port=8080/tcp在火墙里面添加8080端口
firewall-cmd --reload加载使其生效
(1)semanage port -l | grep http查看http服务可以使用的端口
(2)semanage port -a -t http_port_t -p tcp 6666在httpd服务中加入6666端口
semanage port -l | grep http 再次查看http服务可以使用的端口
(2)修改默认发布文件
(1)vim /etc/httpd/conf/httpd.conf
将端口改为80
为了接下来的实验方便
systemctl restart httpd
(2)cd /var/www/html 默认发布目录
ls查看默认发布文件 index.html
vim test.html在默认发布目录下面再编写一个文件,看会不会被默认共享
<h1>test'page</h1>
(3)vim /etc/httpd/conf/httpd.conf
搜index.html
改为test.html将默认发布文件由index.html改为test.html
systemctl restart httpd
(3)修改默认发布目录
(1) cd /var/www/html 默认发布目录
mkdir -p /xin/html新建一个目录,让它成为默认发布目录
vim /xin/html/index.html编写默认发布文件
(2)vim /etc/httpd/conf/httpd.conf
搜/Document找默认发布目录那一行
/var/www/html----->/xin/html将默认发布目录改为/xin/html
systemctl restart httpd重启服务才会生效
(3)vim /etc/httpd/conf/httpd.conf
加入授权信息:
<Directory "/xin/html">
Require all granted允许共享改目录下面的东西
</Directory>
systemctl restart httpd
(4)若setenforce 1 开启selinux (enforcing)
输入172.25.254.114 不可以,因为自己新建的发布目录与默认发布目录的安全上下文不一致
ls -Zd /var/www/html查看默认发布目录的安全上下文
ls -Zd /xin/html 查看新建目录的安全上下文
apache的虚拟主机(让一台apache主机有多个站点)
(1) 对于百度而言,它有很多域名站点
目的使我的apache服务器上的news、music都有自己的默认发布目录和默认发布文件
但是一台主机一个站点太浪费资源了,我在apache主机上搭建虚拟机主机,使每个虚拟主机对应一个域名
(1)cd /etc/httpd/conf.d/ 默认发布子目录
ls
vim vhost.conf(编辑虚拟主机的配置文件,主配置文件里面有要求,必须以.conf结尾)
(2)<VirtualHost _default_:80>虚拟主机的apache服务默认也使用端口80
DocumentRoot /var/www/html根共享目录
CustomLog logs(etc/httpd/logs)/default.log combined日志的目录
</VirtualHost>
(3)mkdir -p /var/www/vhost/news给news建立默认发布目录
mkdir -p /var/www/vhost/music给music建立默认发布目录
vim /var/www/vhost/news/index.html给news编写默认发布文件
<h1>news's page</h1>
vim /var/www/vhost/music/index.html给music编写默认发布文件
<h1>music's page</h1>
(4)
<VirtualHost_default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
以上是虚拟主机的默认基本信息
<VirtualHost *:80>
ServerName news.westos.com
DocumentRoot /var/www/vhost/news
CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/vhost/news">
Require all granted
</Directory>
以上是news这个虚拟站点的基本信息和授权信息
<VirtualHost *:80>
ServerName music.westos.com
DocumentRoot /var/www/vhost/music
CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/vhost/music">
Require all granted
</Directory>
以上是music这个虚拟站点的基本信息和授权信息
systemctl restart httpd重启才会生效
(5)在真机里面vim /etc/hosts做本地解析(使用哪里的浏览器进行测试就在哪里做解析)
172.25.254.114 www.westos.com news.westos.com music.westos.com
apache内部的访问控制
(1)针对主机ip的访问控制
基于ip的访问控制,允许哪个ip可以访问,哪个ip不可以访问
allow,deny会有一个读取的先后顺序,后面的会覆盖前面的
相当于设置访问apache服务器的黑白名单
<Directory "/var/www/html">
Order Allow,Deny ##列表读取顺序,后读取的列表会覆盖前面列表内容的重复部分
Allow from All
Deny from 172.25.254.114
</Directory>相当于黑名单
(2)
<Directory "/var/www/html">
Order Deny,Allow ##列表读取顺序,后读取的列表会覆盖前面列表内容的重复部分
Allow from 172.25.254.114
Deny from All
</Directory> 相当于白名单
(2)用户方式的访问控制(比ip安全)
(1) cd /etc/httpd/在该目录下面
htpasswd -cm .apache_auth admin建立admin用户
输入密码
htpasswd -cm /etc/httpd/userpass admin建立admin用户
htpasswd -m /etc/httpd/userpass admin1追加admin1用户
(2)cd /etc/httpd/conf.d/
ls
vim vhost.conf
<Directory "/var/www/html">
AuthUserFile /etc/httpd/.apache_auth 认证文件类型
AuthType basic认证类型,基本
AuthName "Please input username and password"认证名字
#Require user admin 只允许admin用户通过认证访问共享目录
#Require valid-user允许所有用户访问
以上两个二选一区别
</Directory>
apache支持的语言
(1)php语言的设置
(1)cd /var/www/html切换到默认发布目录下
ls 查看一下默认发布文件的语言类型,基本是html
(2)编写一个php语言的默认发布文件
vim index.php
<?php
phpinfo();
?>
(3)yum insatll php -y安装这个服务
在浏览器里面输入172.25.254.114 就可以看到php的表格了
(2)perl语言的设置
(1) 172.25.254.114/manual/查看apache服务手册,看设置cgi语言都需要在配置文件里面写入哪些内容
(2)cd /var/www/html
ls
mkdir cgi在默认发布目录下建立cgi目录
cd cgi/
ls
vim index.cgi写cgi的默认发布文件编写cgi语言的默认发布文件
写入刚刚粘贴的东西
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
这个相当于一个测试的脚本
(3)chmod +x index.cgi脚本要给一个可以执行的权限
cd /etc/httpd/conf.d/
ls
vim vhost.conf编辑虚拟主机的配置文件
(4)<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
要使用cgi语言就要添加这个才会生效,手册要求
(5)getenforce
setenforce 0(设置selinux为permissive)
(3)python语言的设置
(1) yum search wsgi
yum install mod_wsgi.x86_64 -y
(2) cd /var/www/html
vim script.wsgi
chmod +x script.wsgi
(3) cd /etc/httpd/conf.d/
ls
vim vhost.conf
systemctl restart httpd
https加密访问
HTTPS和HTTP的区别
超文本传输协议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)apache服务加密
这个加密锁需要开启443端口
netstat -antlupe | grep httpd
(2)apache服务器上面安装锁
yum install mod_ssl -y
(3)cd /etc/httpd/conf.d/
ls
vim ssl.conf可以看到443端口
systemctl restart httpd
(4) firewall-cmd --permanent --add-service=https在火墙里面添加https服务
firewall-cmd --reload
(5)yum install crypto-utils -y 安装自己的加密
genkey www.westos.com 生成自己的锁和钥匙
(6)cd /etc/httpd/conf.d/
ls
vim ssl.conf
写入自己的钥匙和密码
systemctl restart httpd
设定https虚拟主机并设定网页重写
(1)cd /etc/httpd/conf.d/
ls
vim vhost_https.conf
(2) <VirtualHost *:443>建立一个443端口虚拟主机,https需要开启443端口
ServerName login.westos.com
DocumentRoot /var/www/vhost/login建立默认发布目录
CustomLog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory "/var/www/html/vhost/login">
Require all granted
</Directory>
(3)mkdir -p /var/www/vhost/login建立默认发布目录
vim /var/www/vhost/login/index.html建立默认发布文件
<h1>login test page</h1>
systemctl restart httpd
(4) 做本地解析:(浏览器在哪在就哪做本地解析)
vim /etc/hosts
测试:浏览器输入:https://login.westos.com
输入login.westos.com不会自动到 https://login.westos.com
(1) <VirtualHost *:80>建立一个80端口的虚拟主机
ServerName login.westos.com
RewriteEngine on 将网页重写的功能开启
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301](永久重定向:永久跳转)
客户端输入的内容 客户端主机
</VirtualHost>
systemctl restart httpd
(2) 测试:输入login.westos.com------>https://login.westos.com 成功