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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

 最近经常项目需求开通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,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
SQL 关系型数据库 MySQL
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
|
1月前
|
存储 缓存 固态存储
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
|
2月前
|
边缘计算 Kubernetes Devops
KubeSphere平台安装系列之二【Linux单节点部署KubeSphere】(2/3)
KubeSphere平台安装系列之二【Linux单节点部署KubeSphere】(2/3)
41 3
|
2月前
|
监控 安全 Shell
【Shell 命令集合 文件传输 】Linux 将文件传送到远端的UUCP主机 uuto命令使用指南
【Shell 命令集合 文件传输 】Linux 将文件传送到远端的UUCP主机 uuto命令使用指南
35 0
|
2月前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
46 1
|
2月前
|
边缘计算 Kubernetes Linux
KubeSphere平台安装系列之三【Linux多节点部署KubeSphere】(3/3)
KubeSphere平台安装系列之三【Linux多节点部署KubeSphere】(3/3)
31 1
|
2天前
|
消息中间件 测试技术 Linux
linux实时操作系统xenomai x86平台基准测试(benchmark)
本文是关于Xenomai实时操作系统的基准测试,旨在评估其在低端x86平台上的性能。测试模仿了VxWorks的方法,关注CPU结构、指令集等因素对系统服务耗时的影响。测试项目包括信号量、互斥量、消息队列、任务切换等,通过比较操作前后的时戳来测量耗时,并排除中断和上下文切换的干扰。测试结果显示了各项操作的最小、平均和最大耗时,为程序优化提供参考。注意,所有数据基于特定硬件环境,测试用例使用Alchemy API编写。
8 0
linux实时操作系统xenomai x86平台基准测试(benchmark)
|
18天前
|
网络协议 Linux 程序员
【Linux】虚拟机ipv4地址消失,主机ping不通
【Linux】虚拟机ipv4地址消失,主机ping不通
35 0
|
18天前
|
运维 网络协议 Linux
Linux(28) Linux双网卡配置为连接到Linux主机的PC提供外网访问
Linux(28) Linux双网卡配置为连接到Linux主机的PC提供外网访问
52 1
|
26天前
|
JavaScript Java 测试技术
基于Java的web新闻流媒体平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的web新闻流媒体平台的设计与实现(源码+lw+部署文档+讲解等)
21 0