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、phpMyAdmin、eAccelerator一键安装包。可以在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后查看
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