12.1 web服务器-------apache服务

1、web服务器的介绍

常用的web服务器有apache和ngnix以及他们的修改版本

1)apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

2)ngnix

Nginx (engine x) 是一个高性能的HTTP反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。

4)lamp=linux+apache+mriadb+php/perl/python

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.

5)lnmp=linux+ngnix+mariadb+php/perl/python

LNMP指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL、phpMyAdmineAccelerator一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。

6)如何查看某个网站使用的是什么为web服务

命令:curl -I 网站

测试:baidu.com使用的是apache服务

京东使用的是自己开发的服务器jd web server

2.apache服务初使用

实验环境

服务器端:

主机名:server

ip:172.25.254.185

服务器端:

1)安装httpd服务

yum install httpd.x86_64 -y


2)开启

 systemctl start httpd
systemctl enable httpd


3)防火墙允许httpd或者关闭防火墙

步骤一:firewall-cmd --list-all                ##列出火墙信息


步骤二:firewall-cmd --permanent --add-service=http    ##永久允许http


步骤三:firewall-cmd --reload                ##火墙重新加载策略

在有图形的界面下可以使用:firewall-config命令调出图形界面设定

设定为永久

设定完后,重新加载


4)编辑默认发布目录

cd /var/www/html/  ##apache的默认发布目录

vim index.html

编写:默认首页

保存退出

------------------------------------------------------------------------------------------------------------------------------------

默认内容 index.html :编辑内容
html 超文本标记语言
xml 可扩展标记语言


如何复制别的网站
打开一个网站:右建保存文件 x.html 会下载两个文件 一个图片 一个为html文件


复制主页到apache目录下:cp /home/kiosk/Desktop/新浪首页.html /var/www/html/
删除网也中的内容:寻找图片名字找到删除

5)apache专用手册安装

yum install httpd-manual


6)重启服务

systemctl restart httpd.service

测试:在ip为172.25.254.85机器上

1)访问 172.25.254.185


2)访问 172.25.254.252/manual

3.apache的基础信息

1)基本信息

查看配置文件
主配置目录:    /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日志:     /etchttpd/log/*

2)修改接口               ##默认为80

步骤一:主配置文件

vim /etc/httpd/conf/httpd.conf

 42 Listen 80 --> 8080                    ##6666不可以启动服务,setlinux的阻挡


步骤二:改变火墙策略

开启图形 -x
firewall-config           

ports下  永久添加 8080 和 6666 端口号

重新载入


步骤三:重启服务

systemctl restart httpd.service

测试:

查看端口号 netstat -antlupe | grep http  -------结果为8080

 

注意:

改变内核允许的接口:正常是不允许6666端口号,httpd服务无法启动


查看内核那些端口可以启动:
semanage port -l|grep http


增加端口
semanage port -a -t http_port_t -p tcp 6666      ##查看有6666接口

测试可以重新启动,并且接口号为6666

3)修改默认发布文件

实验时先将接口还原为80

默认看index.html

步骤一:修改配置文件vim httpd.conf  

<IfModule dir_module>
    DirectoryIndex wen.html index.html              
</IfModule>
可以有多个,在前面的先访问

步骤二:vim /var/www/html/wen.html

编辑内容:wen

步骤三:重启服务

测试:访问172.25.254.185 可以看到 wen.html

4)修改默认目录

步骤一:创建使用的默认目录

mkdir /westos/web/html -p

步骤二:目录下面创建默认文件

vim /westos/web/html/index.html

编辑内容为:新默认目录

步骤三:修改配置文件 vim httpd.conf

119 DocumentRoot "/westos/web/html"

步骤四:目录授权

DocumentRoot "/westos/web/html"
<Directory "/westos/web/html">
    Require all granted                             ##所有人可以访问
</Directory>

步骤五:修改安全上下文

semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
 restorecon -RvvF /westos/


步骤六:重启服务

测试 :访问172.25.254.185 可以看到index.html的内容

4.配置apache的虚拟机:如何一台电脑发布多个网站

实验环境:
删除原来的配置文件
重新安装httpd
yum reinstall httpd.x86_64  -y

步骤一:创建三个目录,三个默认文件

第一个为默认发布目录 /var/www/html
第一个默认文件 index.html

第二个为默认发布目录 /var/www/westos.com/news/html
第二个默认文件 index.html
mkdir /var/www/westos.com/news/html -p
vim /var/www/westos.com/news/html/index.html

编辑内容为:news

第三个为默认发布目录 /var/www/westos.com/music/html
第三个默认文件 index.html
mkdir /var/www/westos.com/music/html -p
vim /var/www/westos.com/music/html/index.html

编辑内容为:music

步骤二:编写第一个虚拟主机配置文件:vim /etc/httpd/conf.d/a_default.conf

<VirtualHost _default_:80>
        DocumentRoot    /var/www/html            ##目录
        CustomLog       logs/default.log combined    ##日志,combined为四种日志的结合
</VirtualHost>


步骤三:编写第二个虚拟机的配置文件:vim /etc/httpd/conf.d/news.conf

<Virtualhost *:80>                    ##* 表示访问域名
        ServerName      news.westos.com            ##域名
        DocumentRoot    /var/www/westos.com/news/html    ##目录
        CustomLog       logs/news.log combined        ##日志存放的地方,日志目录不用写全,主配置文件31行里面已经说明了
</Virtualhost>
<Directory "/var/www/westos.com/news/html">        ##授权
        Require all granted
</Directory>       


步骤四:编写第三个虚拟机的配置文件:vim /etc/httpd/conf.d/music.conf


<Virtualhost *:80>
        ServerName      music.westos.com
        DocumentRoot    /var/www/westos.com/music/html
        CustomLog       logs/music.log combined
</Virtualhost>
<Directory "/var/www/westos.com/music/html">
        Require all granted
</Directory>


步骤五:本地解析的编写

修改测试机172.25.254.85的本地域名解析,vim/etc/hosts
编写 172.25.254.185  www.westos.com news.westos.com music.westos.com


步骤六:重启服务

systemctl restart httpd.service

测试:分别访问下面三个域名
1)www.westos.com


2)news.westos.com


3)music.westos.com

5.apache内部的访问控制

1)基于IP控制

步骤一:修改配置文件:vim /etc/httpd/conf.d/a_default.conf


<Directory "/var/www/html/">
        Order allow,deny    ##列表读取顺序,后读取的列表会覆盖先读取的列表
        Allow from all        ##这个为不许让172.25.254.52访问
        Deny from 172.25.254.85
</Directory>


步骤二:重启服务systemctl restart httpd.service


测试:


1)使用172.25.254.85不可以访问

2)使用别的ip可以访问


2)基于用户密码的访问

步骤一:创建用户和密码

htpasswd -cm http_userlist admin    ##第一次 -cm
htpasswd -m http_userlist westos    ##后面的添加 用-m 否则会覆盖掉原来的用户名


步骤二:在配置文件内指定用户和密码:vim /etc/httpd/conf.d/a_default.conf

<Directory "/var/www/html/">
        AuthUserFile /etc/httpd/conf.d/http_userlist
        AuthName  "Please input username and password "
        AuthType  basic
        Require user admin
</Directory>

步骤三:重启服务systemctl restart httpd.service


测试:登陆172.25.254.152


输入用户名和密码

6.apache支持的语言

apache默认支持html语言,还支持3p语言 :php python perl语言,下面我们介绍日和支持各种语言

1)html语言

默认支持html 超文本标记语言      

2)php语言

如何使得apache支持php

步骤一:安装php

yum install php -y


步骤二:编写文件:vim /var/www/html/index.php

<?php
        phpinfo();
?>

php -a    #进入php

步骤三:重启服务

测试:访问 172.25.254.152/index.php

3)perl语言编写的cgi

cgi---通用网关接口的介绍:

管接口,处理表单,比如说注册时的表单

CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎 所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分为标准CGI 和间接CGI两种。标准CGI 使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI 又称缓冲CGI,在CGI 程序和CGI 接口之间插入一个缓冲程序,缓冲程序与CGI 接口间用标准输入输出进行通信。

CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例 子:现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如评论之类的东西。接着用户按一下“发布或提交”(到 目前为止工作都在客户端),浏览器把这些信息传送到服务器的 CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后CGI程序将执 行结果返回给服务器(webServer),然后服务器将结果返回给客户端,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

默认目录下的使用

步骤一:默认目录下写脚本:cd /var/www/cgi-bin/

编写vim index.cgi
编写
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;

步骤二:增加可执行权限      ##不增加执行权限,只会显示文本

chmod +x index.cgi

步骤三:重启服务

测试:访问 172.25.254.185/cgi-bin/index.cgi

非默认目录下的使用
步骤一:创建目录和执行文件:

mkdir /var/www/html/cgi -p
编写vim /var/www/html/cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;


步骤二:要编写运行发布目录:vim /etc/httpd/conf.d/a_default.conf

编写:
<Directory "/var/www/html/cgi">
        Options ExecCGI
        AddHandler cgi-script .cgi
</Directory>


步骤三:修改安全上下文或关闭setlinux

semanager fcontent -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi/

步骤四:重启服务

测试:访问172.25.254.152/cgi/index.cgi

7.aphache加密访问

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

1)安装ssl

yum install mod_ssl -y

2)设置防火墙策略允许https或者关闭防火墙
3)重启http后查看

访问:https://172.25.254.185/


4)安装key制作软件

yum install crypto-utils.x86_64 -y


5)制作密钥和证书:

步骤一:genkey www.westos.com

步骤二:选择密钥长度为1024

步骤三:生成随机数

步骤四:收集随机数,此时需要随机按键盘

步骤五:是否登记证书,这里选择否

步骤六:填写信息

生成密钥和证书成功

6)配置文件 密要 证书替换

vim /etc/httpd/conf.d/ssl.conf

101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt

108 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key

7)重新启动systemctl restart httpd.service
8)访问https://172.25.254.185,添加证书。

步骤一:点击advanced的Add Exception

步骤二:点击get certificate,点击确认

测试:完成后网页会加密,前面带个小锁

点击小锁,查看证书来源为westos

8.网页重启

正常人们不会打https,以达到安全启动,如何自动让用户访问https

1)重新制作一个http虚拟机

创建默认发布目录 /var/www/westos.com/login/html
创建默认文件 index.html
mkdir /var/www/westos.com/login/html -p
vim /var/www/westos.com/login/html/index.html

编辑内容:login

编辑配置文件 :vim /etc/httpd/conf.d/login.conf

<Virtualhost *:80>
        ServerName      login.westos.com
        DocumentRoot    /var/www/westos.com/login/html
        CustomLog       logs/login.log combined
</Virtualhost>
<Directory "/var/www/westos.com/login/html">
        Require all granted
</Directory>

2)编辑:vim /etc/httpd/conf.d/login.conf


查看手册:172.25.254.152/mannul
复制的内容在vim /etc/httpd/conf.d/ssl.conf
修改端口  为443
开启ssl
复制证书
复制密钥

<VirtualHost *:443>                                                                              ##端口为443
        SSLEngine on                                                                              ##SSL打开
        ServerName      login.westos.com
        DocumentRoot    /var/www/westos.com/login/html
        CustomLog       logs/login.log combined                         
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt               ##复制证书
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key     ##复制密钥
</VirtualHost>
<Directory "/var/www/westos.com/login/html">
        Require all granted
</Directory>

3)网页重写:vim /etc/httpd/conf.d/login.conf

<VirtualHost *:80>

        ServerName login.westos.com
        RewriteEngine   on
        RewriteRule  ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]

</VirtualHost>

 

说明:
^(/.*)$        ##客户在浏览器地址栏中输入的所有字符
https://    ##强制客户加密访问
%{HTTP_HOST}    ##客户请求主机
$1         ##"$1"表示 ^(/.*)$的值

[redirect=301]    ##永久重写  302临时重写


 

4) 重启服务

5) 测试机172.25.254.85 进行本地域名 vim /etc/hosts

172.25.254.185 login.westos.com

测试:访问login.westos.com

9.wsgi

WSGI是Web Server Gateway Interface的缩写。以层的角度来看,WSGI所在层的位置低于CGI。但与CGI不同的是WSGI具有很强的伸缩性且能运行于多线程或多进程的环 境下,这是因为WSGI只是一份标准并没有定义如何去实现。实际上WSGI并非CGI,因为其位于web应用程序与web服务器之间,而web服务器可以 是CGI,mod_python(注:现通常使用mod_wsgi代替),FastCGI或者是一个定义了WSGI标准的web服务器就像python标准库提供的独立WSGI服务器称为wsgiref。

wsgi:wsgi使用的语言为python wshi为cgi的加密版本

1)使用需要下载支持的软件

yum search wsgi
    2  yum install mod_wsgi.x86_64 -y

2)下载一个wsgi的脚本

我们测试下载的是webapp.wsgi,下载到/var/www/cgi-bin/下

3)编写配置文件:
4)修改权限

chmod +x /var/www/cgi-bin/webapp.wsgi


5)内核防火墙

修改安全上下文,或者关闭setlinux

6)编辑配置文件

vim /etc/httpd/conf.d/webapp.conf

<Virtualhost *:80>

        ServerName webapp.westos.com
        DocumentRoot /var/www/cgi-bin
        CustomLog       logs/webapp.log combined
        WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi
</Virtualhost>


7)本地解析

在测试的机器172.25.254.85上,vim /etc/hosts

172.25.254.185 webapp.westos.com

8)重启服务systemctl restart httpd.service

测试:在172.25.254.85上访问webapp.westos.com

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值