web服务的配置及其相关知识:
第一部分---》相关知识介绍
提供web服务的协议有两个:http(80端口)和https(443端口)
常见的能够提供web服务的软件: apache 和 IIS 和 sun one 和Nginx(俄罗斯,http和smtp服务器反向代理软件,静态页面请求速度无与伦比)
应用程序服务器软件:websphere,weblogic,appserver,jboss,tomcat,resin
tcp握手的六个标准位:syn , ack, fin, rst, psh, urg
当浏览器向服务器请求服务的时候根据服务器返回的信息可以分为六类,分别用数字表示:
1开头 ---》普通信息
2开头 ---》正确信息
3开头 ---> 资源重定向(资源不在这个服务器上,自动指向其他服务器,301表示永久重
定向,302表示临时重定向)
4开头 ---》 客户端错误
5开头 ---》 服务器端发生错误
curl --》transfer a URL web服务器下一个基于文本的工具
因此我们如果想访问一个网页可以使用--》curl
curl -I -->查看返回信息的头部信息
apache响应用户访问的方式有两种:prefork 和 work
prefork;一个用户一个进程,一个进程分配一个单独的进程空间
work:无论用户是否请求,apache都会自己生成两个进程等待用户连接,如果有用户进行连接,
那么它就会在自己的进程区里 生成若干线程(线程最大的好处就是可以实现资源共享),因此效率会大大提高
linux服务器下对线程的支持是模拟出来的,所以一般选用prefork模式
动态页面:完全可以通过不同客户端的请求生成不同的页面(比如我们打开各自的QQ空间返回结果肯定是不一样的,这就是动态页面)
CGI:common gateway interface--》通用网关接口
第二部分:
配置apache相关知识:
在配置httpd的时候我们最好先把selinux 关掉,相关命令为:
getenforce ...........#查看selinux运行情况
setenforce 0 ............#关闭selinux(临时生效)
vim /etc/sysconfig/selinux ...........#通过更改配置文件使永久生效
yum install httpd ...........#yum 安装
rmp -qc httpd ..........#查看httpd 相关配置文件
/etc/httpd/conf .............#此目录下是httpd 主配置文件
rmp -qd httpd ............#列出httpd的帮助文件
/etc/rc.d/init.d/httpd ...........#httpd 服务的脚本文件
service httpd statu ..........#查看httpd 服务的运行情况
netstat -tnl | grep ":80" ............# 查看本机端口情况
/etc/httpd/conf/http.conf ..........主配置文件 --》文件内容解释如下:
ServerTokens OS .......... #服务器标识,默认页面显示结果(最好关掉)
ServerRoot "/etc/httpd" ...........#服务器默认运行目录,默认文件装载目录
KeepAlive Off ...........#打开持久连接功能
Listen 80 。。。。。。。#httpd使用的端口
Include conf.d/*.conf .............#在conf.d下的所有以.conf结尾的文件都是可以被识别为配置文件
DocumentRoot "/var/www/html"...........#用于定义主服务器的网页文件的存放位置
...........#定义某个目录下文件具有哪些特征的(局部
特征) 它有以下子选项:
Options Indexes FollowSymLinks。。。#index -->索引页
followsymlinks-->符号追踪链接 (这两项最好关闭)
AllowOverride None ...........是否覆盖(覆盖后下面的命令无效)
#
# Controls who can get stuff from this server.
#
Order allow,deny 。。。。。。#(明确定义的写前面,不明确定义的写后面)
Allow from all
DirectoryIndex index.html index.html.var.....#定义主页面文件
ErrorLog logs/error_log ............#定义错误日志文件
http -t 和 service httpd configtest .....#测试配置文件是否有语法错误
第三部分:
userdir /////////让apache用户可以访问用户家目录文件
1,useradd gentoo
2, su -gentoo
3, mkdir public_html
4, cd /public_html
5, echo "hello
" >index.html
6, setfacl -m u:apache:--x /home/gentoo #给apache用户访问gentoo下文件的权限
7,setfacl -m u:apache:--x /home/gentoo/public
#访问目录下文件
Alias
基于用户名的认证,让apache用户访问一个目录的时候需要密码的方法:
Options Indexs
AllowOverride AuthConfig
AuthName "Auth BBS"
AuthType basic
AuthUserFile /etc/httpd/conf/.webusers
require valid-user
hdpasswd -c -m /etc/httpd/conf/.htpasswd user1
hdpasswd -c /etc/httpd/conf/.htpassed user2 (-m 表示用MD5加密;第二次创建用户不加-c,如果加-c 则会覆盖第一个用户)
第四部分:虚拟主机
有三种方法 :基于端口的虚拟主机 ;基于iP地址的虚拟主机;基于主机头(域 名)的虚拟主机
基于端口:(记得把主DocumentRoot注释掉并且改变listen端口)
DocumentRoot "/web/html/web1"
ServerName ""
DocumentRoot "/web/html/web2"
ServerName ""
基于IP地址 :
首先要知道如何给一块网卡配置多个IP:
格式:ethX:n
eth0
eth0:0
eth0:1
eth0:2...
ifconfig eth0:0 172.16.100.2/16(这种方法是临时的,重启则无效)
如果希望永久生效则需要修改配置文件:
1,cd /etc/sysconfig/network-scripts
2,cp ifcfg-eth0 ifcfg-eth0:0
3,vim ifcfg-eth0:0 (注意一定要是静态的地址,网卡一行删掉)
具体配置如下:
DocumentRoot "/web/html/web1"
ServerName ""
DocumentRoot "/web/html/web2"
ServerName ""
基于主机名:
NameVirtualHost *:80 --》这一项要改为:NameVirtualHost 192.168.0.17:80
DocumentRoot "/web/html/web1"
ServerName ""
DocumentRoot "/web/html/web2"
ServerName ""
第五部分:CGI
自己开发的cgi程序要放在/var/www/cgi_bin下
访问的时候写:
程序格式:
#!/bin/bash
echo -e "Content-type: text/html\n\n"
ecoh "the current time is:`/bin/data`"
:wq