- 关于
HTTPD
的主机类型
- 中心主机:
- 虚拟主机:服务器的
IP
地址,端口等信息都是有限的,如果为每一个HTTPD
服务提供独立的公网IP
,很浪费资源;
- 基于
IP
的虚拟主机: - 基于端口的虚拟主机:
- 基于域名的虚拟主机:准确的表示是主机名称不同,但是
IP
地址是相同的,为了提供不同的内容,这是通过HTTP
协议的头部信息关于host
的value
来进行区别的;
- 基于
- 对于
HTTPD2.2
来说必须使用指令NameVirtualHost
来启用虚拟主机; - 独立的虚拟主机需要包含的资源:
DocumentRoot
:IP/Port/Hostname
:ServerName
:<Directory>
独立的访问权限控制,各个目录不同应该独立的封装每一个目录;Alias
:路径别名;ServerAlias
:主机别名;Error logs
:日志定义;Location
:对于RUL
的具体访问方式属性;ScriptAlias
表示用于执行CGI
脚本的别名;
- 虚拟主机的定义同样时使用容器来进行定义的,使用虚拟主机必须首先取消中心主机,注释中心主机的
DocumentRoot
就可以;
<virtualHost Host>
<VirtualHost>
host
的语法说明:- 基于
IP
:IP+端口
,IP1:80
,IP2:80
- 基于端口:
IP:80
,IP:8080
; - 基于主机名称:
*:80
;
- 基于
首先实现基于
IP
地址的虚拟主机- 首先需要注释
DocumentRoot
# vim /etc/httpd/conf/httpd.conf
292 # DocumentRoot "/var/www/html"
- 添加虚拟主机的配置
# cd /etc/httpd/conf/
# vim ../conf.d/virtual.conf
添加:
<VirtualHost 172.25.23.2:80>
ServerName bbs.linux.com
DocumentRoot "/www/bbs/"
</VirtualHost>
<VirtualHost 172.25.23.3:80>
ServerName mail.linux.com
DocumentRoot "/www/mail/"
</VirtualHost>
- 然后按照上面的配置创建对应的目录和文件
# mkdir -pv /www/bbs/
添加:
<h2>bbs.virtaul.com</h2>
# mkdir -pv /www/mail/
添加:
<h2>mail.virtual.ip.com</h2>
# ip addr add 172.25.23.2/24 dev eth0
# /etc/init.d/httpd restart
- 还需要更改本地的解析,用于提供对于上面不同
Serverame
的解析
[root@my Desktop]# vim /etc/hosts //浏览器所在的主机
172.25.23.2 server2.com server2 bbs.linux.com
172.25.23.3 server3.com server3 mail.linux.com
- 基于
IP
的虚拟主机,应该是不用更改解析的,因为只要通过IP
可以直接进行访问就可以了,更改是为了方便使用域名来进行访问,所以添加解析在这里是没有必要的; - 接下来通过主机名称访问上面的虚拟
IP
主机
- 配置基于
Port
的虚拟主机 - 在
virtual.conf
里面添加
添加或者更改:
<VirtualHost 172.25.23.2:80>
ServerName bbs.linux.com
DocumentRoot "/www/bbs/"
</VirtualHost>
<VirtualHost 172.25.23.2:8080>
ServerName news.linux.com
DocumentRoot "/www/news/"
</VirtualHost>
- 配置文件中这两项就是基于
Port
的虚拟主机 - 接下来还需要更改配置监听端口
8080
[root@server3 conf.d]# vim ../conf/httpd.conf
Listen 8080
- 然后同样需要重新启动服务,或者重新加载配置文件
reload
服务
[root@server3 conf.d]# /etc/init.d/httpd reload
Reloading httpd:
- 直接通过不同的端口来访问主机
- 接下来配置基于主机名的虚拟主机
- 首先更改配置文件如下
[root@server3 conf.d]# vim virtual.conf
需要启用指令
NameVirtualHost 172.25.23.3:80
<VirtualHost 172.25.23.3:80>
ServerName mail.linux.com
DocumentRoot "/www/mail/"
</VirtualHost>
<VirtualHost 172.25.23.3:80>
ServerName dns.linux.com
DocumentRoot "/www/dns/"
</VirtualHost>
- 重新加载配置文件
[root@server3 conf.d]# /etc/init.d/httpd reload
Reloading httpd:
- 在浏览器所在的主机上面添加解析
[root@my Desktop]# vim /etc/hosts
172.25.23.3 server3.com server3 mail.linux.com dns.linux.com
- 然后通过域名来访问主机
* 对于虚拟主机的访问控制支持和中心主机的大部分控制条件
- 补充一点知识
MVC
:
- 脚本解释器执行的结果需要交给各种标记语言来进行美化,为了将这两部分内容分开,
MVC
的机制在百度百科的定义如下:
- 脚本解释器执行的结果需要交给各种标记语言来进行美化,为了将这两部分内容分开,
MVC
全名是Model View Controller
,是模型(model)
-视图(view)
-控制器(controller)
的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中;
这一段的解释更加容易理解:
MVC
开始是存在于桌面程序中的,M
是指业务模型,V
是指用户界面,C
则是控制器,使用MVC
的目的是将M
和V
的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C
存在的目的则是确保M
和V
的同步,一旦M
改变,V
应该同步更新。 ——>来自于百度百科