Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
/var/www/html ##apache的/目录,默认发布目录 /var/www/html/index.html ##apache的默认发布文件 vim /var/www/html/index.html <h1> hello world </h1> :wq
测试:
1.修改默认端口 修改前本机selinux=enforcing
vim /etc/httpd/conf/httpd.conf 43 Listen 8080 ##修改默认端口为8080 firewall-cmd --permanent --add-port=8080/tcp ##若出现killed则说明此添加端口已被使用过。 firewall-cmd --reload若修改端口为666按照上面步骤则无法成功重启httpd(selinux=enforcing) 解决办法 2.修改默认发布文件 默认发布文件就是访问apache时没有指定文件名称时默认访问的文件 这个文件可以指定多个,有访问顺序
为了实验方便把端口该回默认端口80
vim /etc/httpd/conf/httpd.conf 164 DirectoryIndex index.html test.html ##当index.html不存在时访问test.html(这里实验删除index.html)3.修改默认发布目录
vim /westos/html/index.html -p vim /etc/httpd/conf/http.conf 120 DocumentRoot "/www/html" ##注释掉 DocumentRoot "/westos/html" 121 <Directory "/westos/html"> 122 Require all granted 授权所有 123 </Directory>测试: 此时selinux=enforcing需考虑/westos/html/文件下的安全上下文是否和/var/www/html/的安全上下文文相同
##注意:1.默认看的是目录下的index.html文件,如果你的文件叫其他名字.html在访问时需要在浏览器端指定。 2.系统中默认的日志由三种:access_log,default.log,error_log,下面的music.log和news.log是我们刚在vhost.conf文件中写入的,他们俩保存了当有客户端访问时的记录。
测试:
在客户端 vim /etc/hosts 172.25.254.116 www.westos.com news.westos.com music.westos.com
1.针对主机的访问控制(安全性差,只要改ip就行)
vim /etc/httpd/conf.d/vhost.conf 5 <Directory "/var/www/html"> 6 Order allow deny ##列表读取顺序,后读取的列表会覆盖限度去内容的重复部分 7 Allow from all 8 Deny from 172.25.254.216 9 </Directory>测试: 在ip为172.25.254.16的客户机 在ip为172.25.254.216的客户机 2.用户方式的访问控制(安全性较高)
htpasswd -cm /etc/httpd/.apache_auth admin htpasswd -m /etc/httpd/.apache_auth szy vim /etc/httpd/conf.d/vhost.conf systemctl restart httpd测试: 注意:如果有缓存就不用再次认证,此时我们需要清理缓存,ctrl+shift+delete清除缓存
vim /etc/httpd/conf.d/vhost.conf 10 <Directory "/var/www/html"> 11 AuthUserFile /etc/httpd/.apache_auth 12 AuthName "Please input your name and password" 13 AuthType basic 14 #Require user admin 15 Require valid-user ##此时两个用户都可以访问 16 </Directory>1.html HTML:超文本标记语言(Hyper Text Markup Language),标准通用标记语言下的一个应用。HTML 不是一种编程语言,而是一种标记语言 (markup language),是网页制作所必备的“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体 前面的实验都是html语言完成的。
前面的实验都是用html来编写的
2.php 定义:PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
实验:
vim /etc/httpd/conf/httpd.conf vim /var/www/html/index.php <?php phpinfo(); ?> systemctl restart httpd yum install php -y systemctl restart httpd测试: 3.perl(实验中用perll来编写cgi)
Perl: 最初的设计者为拉里·沃尔(Larry Wall),他于1987年12月18日发表。Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。 Perl 被称为“实用报表提取语言”(Practical Extraction and Report Language)。它是术语,而不仅仅是简写,Perl的创造者,Larry Wall提出第一个,但很快又扩展到第二个。那就是为什么“Perl”没有所有字母都大写。没必要争论哪一个正确,Larry 两个都认可。 Perl对进程、文件和文字有很强的处理能力,操作灵巧方便,已经成为web上主要的脚本语言,绝大部分的CGI是用Perl写的。不但如此,Perl作为一种快捷的语言原形,在让不同的系统一起工作方面也有广泛的应用。许多系统管理员都在用Perl完成各种各样繁多的系统管理。有关快速原型设计、系统工具、软体工具、系统管理、资料库连结、图像程式设计、网路连结,和WWW程式设计等之类的任务,都特别 适合用 Perl来做。
什么是cgi?
CGI:CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分为标准CGI 和间接CGI两种。标准CGI 使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI 又称缓冲CGI,在CGI 程序和CGI 接口之间插入一个缓冲程序,缓冲程序与CGI 接口间用标准输入输出进行通信。
可以根据manual里的步骤来完成实验
vim /var/www/html/cgi/index.cgi #!/usr/bin/perl print "Content-type: text/html\n\n"; ##转换成文本模式,text->html print `date`; chmod +x /var/www/html/cgi/index.cgi vim /etc/httpd/conf.d/vhost.conf systemctl restart httpd查看手册 查看手册 测试: 发现无法访问,此时selinux=enforcing 解决办法:修改selinux未permissive或者修改/etc/www/html/cgi/文件夹以及旗下的文件的安全上下文
semanager fcontent -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' restorecon -RvvF /var/www/html/cgi/4.python我们使用的里面的wsgi 进入/var/www/cgi-bin目录,且在/var/www/cgi-bin下获得 webapp.wsgi文件
cd /var/www/cgi-bin/ yum install lftp -y lftp 172.25.254.10 get webapp.wsgi ##下载一个写好的脚本(.wsgi)安装mod_wsgi
yum search wsgi yum install mod_wsgi.x86_64 -y vim /etc/httpd/conf.d/vhost.conf systemctl restart httpd vim /etc/hosts ##添加本地解析测试:
定义:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
1.实现https对其加密 发现无法访问 为解决上面问题进行以下操作:
yum install mod_ssl -y ##安装ssl插件,使其可以访问https(如果不安装,在网址中输入https会出现报错 systemctl restart httpd在防火墙策略里加入https
firewall-cmd --list-all firewall-cmd --permanent --add-service=https firewall-cmd --reload测试:然后在浏览器https:172.25.254.116让你添加证书(证书相当于加密key的标签),证书添加之后可以访问到. 但是这种证书不安全是别人的,所以我们需要自己去实现一个加密key,将原本的证书信息删除,因为浏览器会缓存。 或这或者crtl+shift+delete
进行key加密
安装加密key安装包
yum install crypto-utils -y 自主提供加密key,安装crypto-utils插件,使其可以出现设置加密key的图形进行key加密
cd /etc/httpd/conf.d genkey apache.westos.com 在子配置目录下生成加密文件cd /etc/httpd/conf.d/ vim /etc/httpd/conf.d/ssl.conf 将锁和证书换成自己设定的 SSLCertificateFile /etc/pki/tls/certs/apache.westos.com.crt SSLCertificateKeyFile /etc/pki/tls/private/apache.westos.com.key systemctl restart httpd
在浏览器中输入一个网址回车后会自动在前面加https://
实验: 输入westos.com自动转成https://westos.com
cd /etc/httpd/conf.d vim meng_https.conf 在里面写入 <VirtualHost *:443> https的默认端口是443 ServerName login.westos.com DocumentRoot /var/www/meng/login Customlog logs/login.log combined SSLEngine on 开启加密认证 SSLCertificateFile /etc/pki/tls/certs/apache.westos.com.crt SSLCertificateKeyFile /etc/pki/tls/private/apache.westos.com.key </VirtualHost> <Directory "/var/www/meng/login"> Require all granted </Directory> <VirtualHost *:80> 将在80端口浏览器输入的字符前强制加入https ServerName login.westos.com RewriteEngine on RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] </VirtualHost> mkdir -p /var/www/vhost/login vim /var/www/vhost/login/index.html systemctl restart httpd测试:
vim /etc/hosts