LAMP一键安装(Python版)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
去年有出一个 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起来: 


wKiom1PSlAvxSg3WAAGJ26vt7Js035.jpg



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

wKioL1PSlSXTLkS4AAMZPbtmkyY030.jpg


  服务必须可以启动

[root@ipython ~]# service mysqld start
Starting MySQL SUCCESS! 
[root@ipython ~]# service httpd start
Starting Apache web server:









本文转自 lgpqdwjh 51CTO博客,原文链接:http://blog.51cto.com/itchenyi/1530322,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
26天前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
209 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
29天前
|
XML 数据格式 Python
Python实用记录(五):labelImg安装和使用-----看这篇就够了!
这篇文章介绍了在Windows 10系统中使用Anaconda3安装labelImg工具的方法,包括通过pip安装相关包和从GitHub下载配置,以及一些使用技巧,如修改预定义类别和自动保存功能。
146 3
|
27天前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
128 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
58 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
1月前
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
164 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
|
24天前
|
Python
Python 三方库下载安装
Python 三方库下载安装
21 1
|
26天前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
302 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
29天前
|
Python
Jetson环境安装(二):ubuntu18.0卸载和安装python3
在Jetson Nano上如何卸载Python 3.7并重新安装Python 3.7.0版本的详细步骤,包括卸载命令、安装依赖库、下载和编译Python源码以及建立软链接等。
44 2
|
24天前
|
Python
【python从入门到精通】-- 第一战:安装python
【python从入门到精通】-- 第一战:安装python
45 0
|
29天前
|
人工智能 Java Shell
Python学习一:了解Python,下载、安装Python。
这篇文章是关于如何了解Python、下载和安装Python 3.8.3版本的教程。
26 0
下一篇
无影云桌面