开发者社区> 余二五> 正文

Linux WEB平台自动创建虚似主机

简介:
+关注继续查看

 最近经常项目需求开通WEB空间,手动实在太麻烦了,决定写个脚下自动创建MYSQL数据库和用户,NGINX虚似主机,FTP。我平台构架是Nginx+Mysql+Pureftpd+PHP,需要求意是,WEB主程序像nginx或apache它们的域名主机配置文件必须独立分开,FTP支持虚似用户(支持MYSQL)就这两点,以下运行此脚本的效果图,基本输入域名一路回车就完事了,源码中用文指说明的,是修改脚本的重点部分,另新建:QQ群:64280040 如不明白加Q一起讨论下

 源脚下载地址:http://down.51cto.com/data/509268

 以下是源码代


  1. #!/usr/bin/python 
  2. #The create to vhost for nginx 
  3. #http://skyson.blog.51cto.com 
  4. #Author:sky.xue 
  5. #Mail:2012damage@gmail.com 
  6. import os 
  7. import re 
  8. import sys 
  9. import random 
  10. import string 
  11. import urllib2 
  12.  
  13. #where is virtualhost path 
  14. VIRTUAL_HOST='/usr/local/nginx/vhost' //WEB程序虚似主机目录
  15. #Default web directory 
  16. DIRECTORY='/var/www' 
  17. #Default nginx tmpllate //默认的WEB路经
  18. VHOST_TEMP='nginx_vhost_conf_template' //创建自己的WEB模板 
  19. #Default mysql path 
  20. MYSQL_PATH='/var/lib/mysql' //默义的数据路经路址
  21. #Nginx file of save list 
  22. LIST=[] 
  23. #Mysql user 
  24. MYSQL_USER='root' //MYSQL管理员用户名
  25. #Mysql password 
  26. MYSQL_PASS='' //MYSQL管理员密码
  27. #Ranmod password 
  28. FTP_PASS = ''.join(random.sample(string.ascii_letters + string.digits , 16)) 
  29. SQL_PASS = ''.join(random.sample(string.ascii_letters + string.digits , 8)) 
  30. #Show host ip 
  31. IP=re.search('\d+\.\d+\.\d+\.\d+',urllib2.urlopen("http://www.whereismyip.com").read()).group(0
  32. #Nginx startup argument 
  33. NGINX='/shell/nginx.sh restart' //WEB程序重起参数,像APACHE /etc/init.d/httpd restart
  34.  
  35.  
  36.  
  37. def create_mysql_exe(EXE): 
  38.     MYSQL_CREA_DATA="CREATE DATABASE %s;"%EXE 
  39.     MYSQL_CREA_USER="grant all on %s.* to %s@localhost identified by '%s';" %(EXE,EXE+'_user',SQL_PASS) 
  40.     MYSQL_DATA_USER= MYSQL_CREA_DATA + MYSQL_CREA_USER 
  41.     MYSQL_USER_PASS='mysql -u%s -p%s -e "%s"'%(MYSQL_USER,MYSQL_PASS,MYSQL_DATA_USER) 
  42.     MYSQL_EXE= MYSQL_USER_PASS 
  43.     MYSQL_PATH_DATA_NAME=MYSQL_PATH+os.sep+EXE 
  44.     if not os.path.isdir(MYSQL_PATH_DATA_NAME): 
  45.         os.system(MYSQL_EXE) 
  46.     else
  47.         print 'Error:%s has been exist!' %EXE 
  48.  
  49.  
  50. #Get uid and guid permission. 
  51. def permission(file): 
  52.     if os.path.isdir(file): 
  53.         os.chmod(file,256|128|64|32|16|8|4) //设置权限/var/www/xxxx.com 774
  54.         os.chown(file,99,2000) //设置/var/www/xxx.com用户和组
  55.     else
  56.         print "No such file or directory" 
  57.         sys.exit(1
  58.  
  59. #Change domain to domainname 
  60. def Change_Name(filter_name): 
  61.     global ADD_NAME 
  62.     do_list=[] 
  63.     for do_name in filter_name.split('.'): 
  64.         if do_name != 'www'
  65.             if do_name != 'cn'
  66.                 if do_name != 'net'
  67.                     if do_name != 'com'
  68.                         if do_name != 'org'
  69.                             do_list.append(do_name) 
  70.     SIXTY_NAME=''.join(do_list) 
  71.     ADD_NAME=SIXTY_NAME[:9
  72.      
  73.  
  74. class vhost: 
  75.  
  76. #make to /usr/local/nginx/vhost www.xxx.com 
  77.     def domain(self): 
  78.         self.DOMAIN_NAME = raw_input('Please input domain:'
  79.         if len(self.DOMAIN_NAME) < 5
  80.             print 'Domain name can\'t be empty or illegal' 
  81.             sys.exit(1
  82.         else
  83.             for ARG in open(VHOST_TEMP).readlines(): 
  84.                 RE_WWW  = ARG.replace(DIRECTORY,DIRECTORY+os.sep+self.DOMAIN_NAME)  
  85.                 RE_DOMAIN = RE_WWW.replace('domain',self.DOMAIN_NAME) 
  86.                 LIST.append(RE_DOMAIN) #append to list 
  87.  
  88.             VHOST_CONF=VIRTUAL_HOST+os.sep+self.DOMAIN_NAME #Vhost Path + Domainname 
  89.  
  90.             if not os.path.isfile(VHOST_CONF): 
  91.                 for info in LIST: 
  92.                     open(VHOST_CONF,'a').write(info) #Create a xxx.xxx.xxx vhost configfile . 
  93.             else
  94.                 print 'Error:%s vhost have existed'%self.DOMAIN_NAME 
  95.                 sys.exit(1
  96.  
  97. #Create default:/var/www/www.xxx.com and permssion 
  98.     def directory(self): 
  99.         print "\nPlease input the directory for the domain:"+self.DOMAIN_NAME 
  100.         Default_dir=raw_input('Default directy:%s:'%(DIRECTORY+os.sep+self.DOMAIN_NAME)) 
  101.         if len(Default_dir) == 0
  102.             self.WWW_DIR=DIRECTORY+os.sep+self.DOMAIN_NAME 
  103.             os.makedirs(self.WWW_DIR) 
  104.             permission(self.WWW_DIR) 
  105.         else
  106.             self.WWW_DIR=Default_dir 
  107.             os.makedirs(Default_dir) 
  108.             permission(Default_dir) 
  109. #Create databases and access user 
  110.     def sql(self): 
  111.         Change_Name(self.DOMAIN_NAME) 
  112.         print "\nPlease input the name for the database:" 
  113.         Default_data=raw_input('Default database: %sdb:'%ADD_NAME) 
  114.         if len(Default_data) == 0
  115.             self.DATABASE_NAME='%sdb'%ADD_NAME 
  116.             create_mysql_exe(self.DATABASE_NAME) 
  117.         else
  118.             self.DATABASE_NAME=Default_data 
  119.             create_mysql_exe(self.DATABASE_NAME) 
  120.              
  121. #Create virtaul accout for ftp 
  122.     def ftp(self): 
  123.         global FTP_USER 
  124.         FTP_USER='%s_user_ftp'%ADD_NAME 
  125.         print "\nPlease input the name for the ftp:" 
  126.         RE_FTP_USER=raw_input('Default FTP name:%s:'%FTP_USER) 
  127.         if len(RE_FTP_USER) != 0
  128.             FTP_USER=RE_FTP_USER 
  129.         FTP_UID='2000' \\FTP用户
  130.         FTP_GID='2000' \\FTP组
  131.         FTP_DATA_USE='use pureftpd;' 
  132.         FTP_DIR=self.WWW_DIR 
  133.         FTP_USER_ID_DIR="insert into users set User='%s',Password='%s',Uid=%s,Gid=%s,Dir='%s';"%(FTP_USER,FTP_PASS,FTP_UID,FTP_GID,FTP_DIR) 
  134.         MYSQL_USER_PASS='mysql -u%s -p%s -e "%s"'%(MYSQL_USER,MYSQL_PASS,FTP_DATA_USE+FTP_USER_ID_DIR) 
  135.         FTP_EXE=MYSQL_USER_PASS 
  136.         os.system(FTP_EXE) 
  137.      
  138.     def info(self): 
  139.         if os.system('echo "Mysql_2012"|passwd --stdin mysql') == 0
  140.             print "\nDefault Domain: %s"%self.DOMAIN_NAME 
  141.             print "Default IP address: %s"%IP 
  142.             print "Default www: %s"%self.WWW_DIR 
  143.             print "Default database name: %s"%self.DATABASE_NAME 
  144.             print "Default database user: %s  passwd: %s" %(ADD_NAME+'_user', SQL_PASS) 
  145.             print "Default ftp user: %s     passwd: %s" %(FTP_USER, FTP_PASS) 
  146.             print "Default SSH user: mysql  passwd: Mysql_2012\n" 
  147.             os.system(NGINX) 
  148.  
  149. V=vhost() 
  150. V.domain() 
  151. V.directory() 
  152. V.sql() 
  153. V.ftp() 
  154. V.info() 









本文转自 ibelieveme 51CTO博客,原文链接:http://blog.51cto.com/skyson/990423,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
金鱼哥RHCA回忆录:DO280管理和监控OpenShift平台--Web控制台使用
第九章 管理和监控OpenShift平台--Web控制台使用
124 0
热饭的测开成果盘点第二十五期:WEB多端自动化平台
热饭的测开成果盘点第二十五期:WEB多端自动化平台
45 0
热饭的测开成果盘点第十七期:web自动化智能平台
本期介绍的是打造的一款新的架构的selenium自动化平台。它可以实现的效果是,直接在用例平台爬下来用例,然后让浏览器去自动执行。就像一个活人一样去点点点。
55 0
【IIS】如何安装Web平台安装程序
【IIS】如何安装Web平台安装程序
413 0
CTF BugKu平台———(Web篇②)
CTF BugKu平台———(Web篇②)总结
159 0
Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架
Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架
179 0
CTF BugKu平台—(Web篇①)
CTF BugKu平台—(Web篇①)
335 0
Web与浏览器隔离平台
本文研究全球及中国市场Web与浏览器隔离平台现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美、欧洲、中国、日本、东南亚和印度等地区的现状及未来发展趋势
91 0
flutter制作博客展示平台,现已支持 Web、macOS 应用、Android 和 iOS
Flutter Blog Theme using Flutter | Web, macOS, Android, iOS Flutter 最近发布了 Flutter V2.5.1,其性能得到了很大提升,支持 Web、macOS、Android 和 iOS。 这就是为什么今天我们使用在 Web、macOS 应用、Android 和 iOS 应用上运行的 flutter 创建响应式博客主题。 此外,我们创建了一个具有自定义悬停动画的动画网络菜单。 最后,您将学习如何使用 Flutter 制作响应式应用程序。
204 0
如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service
如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service
172 0
+关注
余二五
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
PWA:移动Web的现在与未来
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多
相关镜像