应用场景:
用python脚本,用来实现虚拟机主机的自动配置。 自动的配置好两个虚拟主机,域名分别为www.abc.com和www.python.com 并自动生成一个简单的测试页面(测试页面内容自定)
##提示这里用apache来测试,已经安装完成。[root@centos pytonjiaoben]# cat a.py
#-*- coding:utf-8 -*-
import os
def peizhi():
try:
f=open("/etc/httpd/conf.d/a.conf","w")
os.system("echo python > /var/www/index.html")
os.system("echo abc > /var/www/html/index.html")
f.write('''
Listen 8080
DocumentRoot "/var/www"
ServerName www.python.com
DocumentRoot "/var/www/html"
ServerName www.abc.com
''')
except IOError:
os.system("mkdir -p /etc/httpd/conf.d/a.conf")
f=open("/etc/httpd/conf.d/a.conf","w")
f.write('''
Listen 8080
DocumentRoot "/var/www"
ServerName www.python.com
DocumentRoot "/var/www/html"
ServerName www.abc.com
''')
def ceshi():
peizhi()
os.system("service httpd restart")
print "------------web1-----------"
os.system("curl www.python.com:8080 ")
print "------------web2-----------"
os.system("curl www.abc.com")
ceshi()
接下来我们来看看执行的结果:[root@centos pytonjiaoben]# python a.py
停止 httpd: [确定]
正在启动 httpd: [确定]
------------web1-----------
python
------------web2-----------
abc
我们再来测试我们写的虚拟主机是否能成功访问,主意因为是域名访问所以要配置本地域名解析:
查看端口:[root@centos pytonjiaoben]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2005/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2328/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2182/cupsd
tcp 0 0 0.0.0.0:44484 0.0.0.0:* LISTEN 2148/rpc.statd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 67460/mysqld
tcp 0 0 :::48779 :::* LISTEN 2148/rpc.statd
tcp 0 0 :::111 :::* LISTEN 2005/rpcbind
tcp 0 0 :::8080 :::* LISTEN 77172/httpd
tcp 0 0 :::80 :::* LISTEN 77172/httpd
tcp 0 0 :::22 :::* LISTEN 2328/sshd
tcp 0 0 ::1:631 :::* LISTEN 2182/
可以看到端口已经起来了,访问看看:[root@centos pytonjiaoben]# curl www.python.com:8080
python
[root@centos pytonjiaoben]# curl www.abc.com
abc
##访问成功;
总结:我们发现基于python实现虚拟主机的部署还是挺容易实现的。