去年有出一个python整的LAMP自动安装,不过比较傻,直接调用的yum 去安装了XXX...不过这次一样有用shell..我也想如何不调用shell 来弄一个LAMP自动安装部署啥啥的..不过尼玛智商有限,没搞定,暂且分享一下

先说说目前的缺陷

    这个脚本总体来说是调用一个字典,组成这个字典是最花费时间的,实际代码到是没几行,本来想把Nginx 的部署也加进去,什么memcached phpmyadmin apc 这样的常用组件作为功能加进去,尼玛,时间不够,只能打打酱油,包括最后我也只能用一行行if来让脚本能run起来,好吧,我想时间充足了一定要改进下,如果你看到此代码,如果仔细看看啊,对...日志记录这块,因为我没有判断异常,函数执行失败,脚本不会写日志,有时间改一下,不过近期不太会改。

注:
废话也不多说,这个脚本没有多少实用性,仅作分享学习之意吧,注(这类脚本还是用shell简单粗暴),有时间我也会改进它,也欢迎各位大牛来一起XXX

软件版本:

###怎么是这么奇葩的组合###
##等Nginx 加入的时候再改好了,只所以这么用是公司内部有套系统PHP版本要求高..所以直接用这个测试了..跑的也还行###
[root@ipython ~]# ls source/*.bz2 | sort
source/apr-1.5.1.tar.bz2
source/apr-util-1.5.3.tar.bz2
source/curl-7.36.0.tar.bz2
source/freetype-2.5.2.tar.bz2
source/httpd-2.4.9.tar.bz2
source/jpegsrc.v9a.tar.bz2
source/libmcrypt-2.5.8.tar.bz2
source/libpng-1.6.8.tar.bz2
source/libxml2-2.8.0.tar.bz2
source/mysql-5.1.58.tar.bz2
source/ncurses-5.9.tar.bz2
source/pcre-8.35.tar.bz2
source/php-5.5.12.tar.bz2
source/xcache-3.1.0.tar.bz2
source/zlib-1.2.8.tar.bz2

部分代码如下(具体看附件吧):

#!/usr/bin/python
##coding:utf-8##
#-------------------------------------------------------------------------------
# Name: LAMP-Auto-Install.py
#
# Author: LiuSha
#
# Created: 9/07/2014
# Copyright: (c) http://www.ipython.me/ 2014
#-------------------------------------------------------------------------------
import os
import sys
import time
import getopt
import logging
import commands
from Dict import Global
from platform import machine #Define Log Output#
logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'),
filemode = 'w',
level = logging.DEBUG,
format = '%(asctime)s %(filename)s %(levelname)s %(message)s',
datefmt = '%a,%d %b %Y %H:%M',) #Define Main Funtion Class#
class funcTion():
def main(self):
"""define global main config. get global build param"""
try:
longargs = ["prefix=","debug=","webservice=","jobdir=","add-vhost=","add-func=","howto="]
opts,args = getopt.getopt(sys.argv[1:],"h",longargs)
Global.Mainargs = dict(opts) except getopt.GetoptError,err:
print str(err)
sys.exit(2) def echo(self,output,color = '32'):
"""define calor Output funtion"""
return '\033[1;{1};40m{0}\033[0m'.format(output,color) def exec_commands(self,cmd,cmdAlias,istName = ''):
"""define commands exec function"""
status,output = commands.getstatusoutput("{0}".format(cmd))
if int(status) == 0:
logging.info('{0} execution successful -->\n ####---{1}---####'.format(cmdAlias,istName))
else:
logging.debug('{0} execution exception -->\n ####---{1}---####\n\n{2}\n\n'.format(cmdAlias,istName,output)) def Unpack(self,istName,jobdir,tarname,tardir):
"""define unpack function"""
print self.echo("%s Starting Install".ljust(80)%istName)
if tarname[-3:] == 'bz2':
os.chdir("%s"%jobdir)
os.system("tar jxf %s"%tarname)
os.chdir("%s"%tardir)
else:
print self.echo('[Error1]:Unpark format Error','31') def command_Check(self,command,istCommand):
"""define Command check via Yum"""
if os.path.exists("/usr/bin/%s"%command) == False:
self.exec_commands("yum -y install {0} {1}".format(istCommand,Global.workMode['OutPut']),"yum install {0}".format(command),"command_Check[function]")
else:
pass

如何使用:

##解包##
[root@ipython ~]# unzip LAMP-Auto-Install.zip
Archive: LAMP-Auto-Install.zip
creating: source/
inflating: source/apr-1.5.1.tar.bz2
inflating: source/apr-util-1.5.3.tar.bz2
creating: source/conf/
inflating: source/conf/httpd
inflating: source/conf/httpd.conf
inflating: source/conf/iptables
inflating: source/conf/limits.conf
inflating: source/conf/my.cnf
inflating: source/conf/mysqld
inflating: source/conf/php.ini
inflating: source/conf/sysctl.conf
inflating: source/curl-7.36.0.tar.bz2
inflating: source/freetype-2.5.2.tar.bz2
inflating: source/httpd-2.4.9.tar.bz2
inflating: source/jpegsrc.v9a.tar.bz2
inflating: source/libmcrypt-2.5.8.tar.bz2
inflating: source/libpng-1.6.8.tar.bz2
inflating: source/libxml2-2.8.0.tar.bz2
inflating: source/mysql-5.1.58.tar.bz2
inflating: source/ncurses-5.9.tar.bz2
inflating: source/pcre-8.35.tar.bz2
inflating: source/php-5.5.12.tar.bz2
inflating: source/xcache-3.1.0.tar.bz2
inflating: source/zlib-1.2.8.tar.bz2
inflating: Dict.py
inflating: Main.py

我也象征性的整了个Help:

[root@ipython ~]# python Main.py --howto=enable
Usage:
--prefix [=PATH]:
install path
--jobdir [=PATH]:
source code path
--debug [enable|disable]:
whether friendly output
--add-vhost [=Domain(www.ipython.com)]:
add virtual host
--add-func [=xcache]:
add function
--webservice [apache|nginx]:
nginx or apache example:
python Main.py --prefix=/software --jobdir=`pwd`/source --webservice=apache --add-func=xcache
python Main.py --prefix=/software --jobdir=`pwd`/source --webservice=apache --debug=disable

run起来:

有定义logging,会记录日志,为当前目录中的log.txt

  

服务必须可以启动

[root@ipython ~]# service mysqld start
Starting MySQL SUCCESS!
[root@ipython ~]# service httpd start
Starting Apache web server:
» 转载保留版权:IT辰逸 » 《LAMP一键安装(Python版)》
» 本文版权采取:BY-NC-SA 协议进行授权,转载注明出处。除特别标注,本站所有文章均为原创。
» 如果喜欢可以:点此订阅本站

LAMP一键安装包(Python版)的更多相关文章

  1. 【个人专用&入门级】LAMP一键安装包

    最近自学了下Shell编程,也算是入门吧!按照如下教程,编译安装了LAMP(Apache-2.4.6 + MySQL-5.5.25 + PHP-5.3.27) CentOS6.3编译安装LAMP(1) ...

  2. LAMP一键安装包-CentOS 5/6下自动编译安装Apache,MySQL,PHP

    http://www.centos.bz/lamp/ 此安装包已经不再维护,请使用新版http://www.centos.bz/ezhttp/. 适用环境: 系统支持:CentOS-5 (32bit/ ...

  3. phpStudy for Linux (lnmp+lamp一键安装包)

    phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 phpStudy for Linux 支持Apache/Ng ...

  4. centos 6的LAMP一键安装包(可选择/升级版本)

    安装步骤 事前准备(安装 wget.screen.unzip,创建 screen 会话) yum -y install wget screen git git clone 并赋予脚本执行权限 git ...

  5. 推荐一个lamp的一键安装包

    本来我是一直用的nginx的,现在安全者的服务器是用的tengine,稳定性就不用多说了! 前段时间用thinkphp写了两个两个项目,刚开始放到了国外的服务器上,环境也是lnmp的,最后发现ngin ...

  6. 服务器中 配置phpstudy一键安装包

    在线phpstudy一键安装包    安装版: (很简单) wget -c http://lamp.phpstudy.net/phpstudy.bin  chmod +x phpstudy.bin   ...

  7. lnmp、lamp、lnmpa一键安装包(Updated: 2016-4-12)

    lnmp.lamp.lnmpa一键安装包(Updated: 2016-4-12)   文章目录 脚本特性 安装步骤 如何添加虚拟主机? 如何删除虚拟主机? 如何管理ftp账号? 数据备份 如何管理服务 ...

  8. lnmp、lamp、lnmpa一键安装包(Updated: 2015-10-25)

    lnmp.lamp.lnmpa一键安装包(Updated: 2015-10-25) 2014-12-26 Posted by yeho 这个脚本是使用shell编写,为了快速在生产环境上部署lnmp/ ...

  9. lanmp v2.5一键安装包发布(包括lamp,lnmp,lnamp安装)

    lanmp一键安装包是wdlinux官网2010年开始推出的lamp,lnmp,lnamp(apache,nginx,php,mysql,zend,eAccelerator,pureftpd)应用环境 ...

随机推荐

  1. 设置 Linux 的 LD_LIBRARY_PATH 变量

    源地址:http://www.cnblogs.com/trying/archive/2013/06/07/3123577.html 我们在ubuntu图形界面下用eclipse写了一个动态库,到cen ...

  2. 《转载》常用算法经典代码(C++版)

    转自:http://blog.renren.com/blog/311453043/736944237 一.快速排序 void qsort(int x,int y) //待排序的数据存放在a[1]..a ...

  3. linux 怎么使用一个c/c++库

    linux 怎么使用一个c/c++库 使用一个库,库有动态和静态之分. 静态库只要能够编译通过,运行时就没有提示缺少这个库可能,因为把这个库就是这个使用者的一部分了.动态库.两部分.1 库信息的注册 ...

  4. c coding style之学习篇

    1. 使用do-while结构去避免潜在的内存泄漏问题. do {     p1 = malloc(10);     if (null == p1)     {         break;     ...

  5. HTTP POST请求的Apache Rewrite规则设置

    最近自测后端模块时有个业务需求需要利用WebServer(我用的是Apache)将HTTP POST请求转发至后端C模块,后端处理后返回2进制加密数据.http post请求的url格式为:     ...

  6. ThinkPHP连接数据库出现的错误:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

    最近看了看ThinkPHP.在连接mysql数据库时出现了错误:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'.意思就是没有PDO(PHP数据对象 ...

  7. MySql 链接url 参数详解

    最近 整理了一下网上关于MySql 链接url 参数的设置,有不正确的地方希望大家多多指教: mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:po ...

  8. C++不支持Unicode,即使utf8

    今天,字符串unicode我们已经不需要常理的理由,但是,一些有编程语言的悠久历史.这仍然是一个头疼. 尽管第三方库支持的假设,C++事实上没有真正有效地支持unicode.即使utf8.(注意:本文 ...

  9. kobox : key_wq.c -v1 如何使用工作队列 workqueue

    kobox: key_wq.c - v1 说明: TQ2440主要驱动因素,四个按键驱动的处理 key_wq.c和key.c类别似,与key.c之间的差异的主要驱动力: key.c使用计时器,在中断发 ...

  10. Wix打包系列(七) 添加系统必备组件的安装程序

    原文:Wix打包系列(七) 添加系统必备组件的安装程序 我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件.这里以.Net Fr ...