文章目录
- Apache是什么?
- Apache基本设置
- Apache的安装部署
- Apache的相关文件
- 修改Apache的配置
- 修改默认端口
- 修改默认发布目录
- 修改默认发布文件
- Apaache的虚拟主机配置
- 虚拟主机是什么
- 虚拟主机配置
- 基于ip的虚拟主机的访问控制的黑白名单
- 基于认证的虚拟主机的访问控制的黑白名单
- Apache支持的语言
- php语言设置
- python语言设置
- perl 语言
Apache是什么?
1.Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一,它主要用来提供http协议。
2.它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
3.Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
4.可以使用curl -I www.taobao.com
或者curl -I (大写的i)www.baidu.com
来嗅探以下主流网站使用的服务器软件,发现主要有Apache(稳定),nginx(快速)
还有自己公司开发的。
Apache基本设置
Apache的安装部署
实验背景:
在已经配置好本地yum源的desktop主机上。
实验步骤:
1.安装apache
yum search apache
yum install httpd.x86_64
systemctl start httpd
ssytemctl enable httpd
firewall-cmd --permanent --add-service=http #永久允许http
firewall-cmd --reload
firewall-cmd --list-all
2.
3.
测试:
cd /var/www/html/
vim index.html
添加 <h1>testapache</h1>
在浏览器中输入
http://172.25.254.110
Apache的相关文件
rpm -ql httpd #查看下载apache时系统存在的目录和文件
rpm -qc httpd #查看apache的配置文件
netstat -antlpue | grep httpd #查看apache的默认端口
主配置目录: /etc/httpd/conf
主配置文件: /etc/http/conf/httpd.conf
子配置目录: /etc/httpd/conf.d/
子配置文件: /etc/httpd/conf.d/*.conf .conf 都会被读,因此不要出错
默认发布目录: /var/www/html
默认发布文件:index.html #默认是index.html 里的内容被访问
默认端口: 80
默认安全上下文:http_sys_content_t
程序开启默认用户: apache
apache 日志:/etc/httpd/logs/ *
2.
3.
修改Apache的配置
修改默认端口
当selinux 为关闭 或者警告时 可以改端口为6666,为强制时 不可以。
需要改selinux 安全上下文和防火墙。
1.vim /etc/httpd/conf/httpd.conf
修改Listen 为6666
2.semanage port -l | grep http #发现selinux 默认不允许6666,这里出现的端口,除了80,其他都可以很便捷的更改
3.semanage port -a -t http_port_t -p tcp 6666
4.systemctl restart httpd
5.firewall-cmd --permanent --add-port=6666/tcp #修改火墙策略
firewall-cmd --reload
2.
3.添加成功
测试:
在浏览器中输入 172.25.254.110:6666
注意:
selinux 关闭时不能对安全上下文进行更改
修改默认发布目录
1.mkdir -p /westos/html
cd /westos/html/
2.vim index.html
添加
text morenmulu
3.ls -Zd /westos/
semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
restorecon -RvvF /westos
4.vim /etc/httpd/conf/httpd.conf
更改
120 行 DocumentRoot "/westos/html"
做授权
<Directory "/westos">
Require all granted
</Directory>
5. systemctl restart httpd
1.
2.
测试:
172.25.254.110 查看内容
修改默认发布文件
修改默认发布文件就是访问apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序。
我们改的配置是它的默认文件 也就是输入172.25.254,110 之后自动访问的文件和目录。
建立 /var/www/html/westos.html
添加westos.html
vim /etc/httpd/conf/httpd.conf
更改
166行左右
DirectoryIndex westos.html index.html #更改默认访问文件时,如果第一个文件不在 就依次向下寻找
1.
添加westos.html
测试:
Apaache的虚拟主机配置
虚拟主机是什么
虚拟主机指的是在单一机器上运行多个网站 (例如 company1.example.com 和 company2.example.com) 。
虚拟主机可以“基于 IP”,即每个 IP 一个站点; 或者“基于名称”, 即每个 IP 多个站点。
这些站点运行在同一物理服务器上的事实不会明显的透漏给最终用户。
Apache 是第一个支持基于 IP 的虚拟主机的服务器。
Apache 版本 1.1 和更新的版本同时支持基于 IP 和基于名称的虚拟主机。
基于名称的虚拟主机有时候称为基于主机或非 IP 的虚拟主机.
虚拟主机配置
首先将上个实验对httpd主配置文件的更改还原至默认
1.cd /etc/httpd/conf.d/
vim vhost.conf
添加内容如截图所示
2.systemctl restart httpd
3.mkdir -p /var/www/virtual/westos.org/{music,news}
4.touch /var/www/virtual/westos.org/{music,news}/index.html
5.vim /var/www/virtual/westos.org/music/index.html
添加 music
6.vim /var/www/virtual/westos.org/news/index.html
添加news
7.systemctl restart httpd
8.vim /etc/hosts 添加主机
172.25.254.110 www.westos.org news.westos.org music.westos.org
#浏览器在哪 在哪里添加此解析
1.vim /etc/httpd/conf.d/vhost.conf
2.
3.在上述文件中分别添加内容music和news
4.编辑/etc/hosts文件
测试:
在浏览器中输入
www.westos.org
news.westos.org
music.westos.org
注意:
做虚拟主机实验时,注意文件与防火墙的端口应该一致
基于ip的虚拟主机的访问控制的黑白名单
vim /etc/httpd/conf.d/vhost.conf
添加
<Directory "/var/www/html">
Order deny,allow
Allow from all
Deny from 172.25.254.110
</Directory>
#表明先看deny名单 再看allow名单
此时allow名单会把deny名单覆盖掉。可根据需要自己调整
#表明对此/var/www/html资源(目录)进行访问控制,其他两个资源不受影响,只所
以选择此目录做实验,是因为在实验时,若连接的是其他人的主机,就不用做解析了。
上图表明任何主机都可
基于认证的虚拟主机的访问控制的黑白名单
1.cd /etc/httpd/
添加用户和密码 .htpasswdfile 的点代表隐藏文件
2. htpasswd -cm .htpassfile(文件名称可以随便起) admin(用户名称可以随便起)
3. htpasswd -m .htpassfile admin1 #当添加完一个用户之后,再添加用户时,不能再加 -cm 应该是-m,否则新添加的会把上一次添加的用户覆盖掉。
4.cat .htpassfile
5.vim /etc/httpd/conf.d/vhost.conf
添加:
<Directory "/var/www/html">
AuthUserFile /etc/httpd/.htpasswdfile
Authtype basic #代表最基本的密码认证
AuthName "please input username and passwd" #是在浏览器里认证框里提示的话语
Require valid-user
</Directory>
注意:
方式一:Require user admin 代表只允许admin认证,对其他用户没有授权
方式二:Require valid-user 代表使得htpassfile里的用户都可以使用认证登陆。
2.
3.
测试:
172.25.254.110
注意:
在浏览器中实验成功一次之后,记得清楚浏览器的history 缓存。
Apache支持的语言
Apache除了默认支持html语言。
做相应配置还可支持 php perl python语言。
php语言设置
yum install php -y #下载php插件
systemctl restart httpd
1.vim /var/www/html/index.php
添加 任何php语言 这里以一个测试页为例
<?php
phpinfo();
?>
2.vim /etc/httpd/conf.d/vhost.conf
注释掉<Directory "/var/www/html"
3.systemctl restart httpd
测试:
在浏览器中输入
172.25.254.110/index.php
1.
2.
3.在index.php里输入php代码
4.测试:浏览器输入172.25.254.110/index.php
python语言设置
I
实验步骤:
3.yum search wsgi
4.yum install mod_wsgi.x86_64 -y
5.将自己的测试python 脚本(scripts.wsgi)放在/var/www/html目录下
6.chmod +x script.wsgi
7.vim /etc/httpd/conf.d/vhost.conf
添加
WSGIScriptAlias /WSGI /var/www/html/script.wsgi #表示在浏览器中输入/WSGI时,去找后面的文件
测试:
172.25.254.110/WSGI
1.
wsgi是什么?
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口
perl 语言
yum install httpd-manual #下载httpd的帮助手册
systemctl restart httpd
在浏览器里
172.25.254.110/manual/
点击CGI——
查看CGI的实例命令
CGI是什么?
公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。
CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。
格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI
ls -Zd /var/www/cgi-bin/
mkdir /var/www/html/cgi
ls -Zd /var/www/html/cgi
semanage fcontext -a -t htppd_sys_script_exec_t "/var/www/html(/.*cgi)?"
restorecon -FvvR /var/www/html/cgi/
cd /var/www/html/cgi/
vim index.cgi
添加 一个perl程序
chmod +x index.cgi
./index.cgi #测试文件内容是否正确
1.vim /etc/httpd/conf.d/vhost.conf
添加
<Directory "/var/www/html/cgi">
Options +ExcecCGI #直接从http_manual文件复制
AddHandler cgi-script .cgi
</Directory>
2.systemctl restart httpd
测试:
在浏览器中输入172.25.254.110/index.cgi