Debian 8.2 64位 Nginx PHP MySQL Java Tomcat安装脚本

一键部署LAMP环境
本文介绍了一种通过脚本一键安装并配置LAMP(Linux, Apache/NGINX, MySQL, PHP)环境的方法,包括软件的下载、编译、安装及配置等步骤,并实现了用户个人网站的快速部署。

脚本一键安装好之后的目录结构:

/data

    /nginx

        /html

            /phpmyadmin

            html/php文件位置

    /tomcat

        /tomcat1

        /tomcat2

    /soft

        /nginx

            nginx程序/配置文件位置

        /php

            php程序/配置文件位置

        /src

            下载的源码文件

 

以下除了utils.py不需要运行外,其他脚本由上到下依次运行即可

首先要进行编译环境安装:

utils

# coding:utf-8
import os
__author__ = 'gavin'
def apt_install():
    os.system("apt-get -y install gcc g++ automake autoconf libtool make build-essential pkg-config")
    if not os.path.exists("/data"):
        os.mkdir("/data")
        os.mkdir("/data/soft")
        os.mkdir("/data/soft/src")
        pass
    if not os.path.exists("/data/soft"):
        os.mkdir("/data/soft")
        os.mkdir("/data/soft/src")
        pass
    if not os.path.exists("/data/soft/src"):
        os.mkdir("/data/soft/src")
if __name__ == "__main__":
    pass

 

mysql安装

# coding:utf-8
import os
__author__ = 'gavin'
def apt_install():
    os.system("apt-get install mysql-server  mysql-client")
    pass
def config_cha(user, passwd):
    command = '''myslq -u%s -p%s -e " SET character_set_client = utf8 ;SET character_set_connection = utf8 ;SET character_set_database = utf8 ;SET character_set_results = utf8 ;SET character_set_server = utf8 ; "''' % (
        user, passwd)
    os.system(command)
if __name__ == "__main__":
    apt_install()
    config_cha("root", "xxxx")
    pass

 

nginx安装

# coding:utf-8
__author__ = 'gavin'
import os
import utils
def apt_prepare():
    utils.apt_install()
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/pcre-8.38.tar.gz"):
        os.system("wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz")
    os.system("tar -zxf pcre-8.38.tar.gz")
    os.chdir("/data/soft/src/pcre-8.38")
    os.system("./configure")
    os.system("make")
    os.system("make install")
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/zlib-1.2.8.tar.gz"):
        os.system("wget http://zlib.net/zlib-1.2.8.tar.gz")
    os.system("tar -zxf zlib-1.2.8.tar.gz")
    os.chdir("/data/soft/src/zlib-1.2.8")
    os.system("./configure")
    os.system("make")
    os.system("make install")
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/openssl-1.0.1s.tar.gz"):
        os.system("wget http://www.openssl.org/source/openssl-1.0.1s.tar.gz")
    os.system("tar -zxf openssl-1.0.1s.tar.gz")
    os.chdir("/data/soft/src/openssl-1.0.1s")
    # os.system("./config --prefix=/usr/local --openssldir=/usr/local/ssl")
    os.system("./config")
    os.system("make")
    os.system("make install")
    # os.system("./config shared --prefix=/usr/local --openssldir=/usr/local/ssl")
    # os.system("make clean")
    # os.system("make")
    # os.system("make install")
    pass
def apt_install():
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/nginx-1.9.9.tar.gz"):
        os.system("wget http://nginx.org/download/nginx-1.9.9.tar.gz")
    os.system("tar -zxf nginx-1.9.9.tar.gz")
    os.chdir("/data/soft/src/nginx-1.9.9")
    os.system("./configure --sbin-path=/data/soft/nginx/nginx "
              "--prefix=/data/nginx "
              "--conf-path=/data/soft/nginx/nginx.conf "
              "--pid-path=/data/soft/nginx/nginx.pid "
              "--error-log-path=/data/soft/nginx/logs/error.log "
              "--http-log-path=/data/soft/nginx/logs/access.log "
              "--with-http_ssl_module "
              "--with-pcre=/data/soft/src/pcre-8.38 "
              "--with-zlib=/data/soft/src/zlib-1.2.8 "
              "--with-openssl=/data/soft/src/openssl-1.0.1s")
    os.system("make")
    os.system("make install")
    os.system("echo \"/data/soft/nginx/nginx\" >> /etc/rc.local")
    os.system("/data/soft/nginx/nginx")
    pass
def config():
    newstrs = '''
#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include vhost/*.conf;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
}'''
    if not os.path.exists("/data/soft/nginx/nginx.conf.back"):
        os.system("cp /data/soft/nginx/nginx.conf /data/soft/nginx/nginx.conf.back")
        pass
    if not os.path.exists("/data/soft/nginx/vhost"):
        os.mkdir("/data/soft/nginx/vhost")
        pass
    fw = file("/data/soft/nginx/nginx.conf", 'w')
    fw.write(newstrs)
    fw.close()
    os.system("/data/soft/nginx/nginx -s reload")
if __name__ == "__main__":
    apt_prepare()
    apt_install()
    config()
    pass

 

php安装

# coding:utf-8
import os
import utils
__author__ = 'gavin'
def apt_prepare():
    utils.apt_install()
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/libxml2-2.9.1.tar.gz") or not os.path.exists("/data/soft/src/libxml2-2.9.1"):
        os.system("wget ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz")
        os.system("tar -zxf libxml2-2.9.1.tar.gz")
        pass
    os.chdir("/data/soft/src/libxml2-2.9.1")
    os.system("./configure")
    os.system("make")
    os.system("make install")
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/curl-7.48.0.tar.gz") or not os.path.exists("/data/soft/src/curl-7.48.0"):
        os.system("wget http://www.execve.net/curl/curl-7.48.0.tar.gz")
        os.system("tar -zxf curl-7.48.0.tar.gz")
        pass
    os.chdir("/data/soft/src/curl-7.48.0")
    os.system("./configure")
    os.system("make")
    os.system("make install")
    
    os.system("apt-get -y install libjpeg-dev libpng-dev libmcrypt-dev ")#libreadline6
    pass
def apt_install():
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/php-7.0.5.tar.gz") or not os.path.exists("/data/soft/src/php-7.0.5"):
        os.system("wget http://cn2.php.net/distributions/php-7.0.5.tar.gz")
        os.system("tar -zxf php-7.0.5.tar.gz")
        pass
    os.chdir("/data/soft/src/php-7.0.5")
    os.system("./configure --prefix=/data/soft/php "
              "--enable-fpm --enable-inline-optimization "
              "--disable-debug --disable-rpath --enable-shared "
              "--enable-opcache  "
              "--with-mysql "
              "--with-mysqli "
              "--with-mysql-sock  "
              "--enable-pdo "
              "--with-pdo-mysql "
              "--with-gettext "
              "--enable-mbstring "
              "--with-iconv "
              "--with-mcrypt "
              "--with-mhash "
              "--with-openssl "
              "--enable-bcmath "
              "--enable-soap "
              "--with-libxml-dir "
              "--enable-pcntl "
              "--enable-shmop "
              "--enable-sysvmsg "
              "--enable-sysvsem "
              "--enable-sysvshm "
              "--enable-sockets "
              "--with-curl "
              "--with-zlib "
              "--enable-zip "
              "--enable-bz2 "
              #"--with-readline  "
              "--with-pear "
              "--with-libdir=/lib/x86_64-linux-gnu "
              "--with-gd "
              "--with-jpeg-dir=/usr/lib "
              "--enable-gd-native-ttf "
              "--enable-xml ")
    os.system("make")
    os.system("make install")
    os.system("")
    pass
def apt_config():
    os.chdir("/data/soft/src/php-7.0.5")
    os.system("cp -f php.ini-development /data/soft/php/lib/php.ini")
    os.system("cp -f /data/soft/php/etc/php-fpm.conf.default /data/soft/php/etc/php-fpm.conf")
    os.system("cp -f /data/soft/php/etc/php-fpm.d/www.conf.default /data/soft/php/etc/php-fpm.d/www.conf")
    os.system("cp -f -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm")
    os.system("echo \"/etc/init.d/php-fpm\" >> /etc/rc.local")
    strs = open("/data/soft/php/etc/php-fpm.d/www.conf").read()
    fw = file("/data/soft/php/etc/php-fpm.d/www.conf", 'w')
    strs = strs.replace("user = nobody", "user = www-data")
    strs = strs.replace("group = nobody", "group = www-data")
    fw.write(strs)
    fw.close()
    os.system("/etc/init.d/php-fpm")
    os.system("echo \"<?php echo phpinfo();?>\" > /data/nginx/html/index.php")
def phpmyadmin():
    os.chdir("/data/nginx/html")
    if not os.path.exists("/data/nginx/html/phpMyAdmin-4.6.0-all-languages.tar.gz") or not os.path.exists("/data/nginx/html/phpMyAdmin-4.6.0-all-languages") or not os.path.exists("/data/nginx/html/phpmyadmin"):
        os.system("wget  https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-all-languages.tar.gz")
        os.system("tar -zxf phpMyAdmin-4.6.0-all-languages.tar.gz")
        pass
    os.system("cp -r -f phpMyAdmin-4.6.0-all-languages phpmyadmin")
    os.chdir("/data/nginx/html/phpmyadmin")
    os.system("cp config.sample.inc.php  config.inc.php")
    os.chdir("/data/nginx/html")
    os.system("rm phpMyAdmin-4.6.0-all-languages.tar.gz")
if __name__ == "__main__":
    apt_prepare()
    apt_install()
    apt_config()
    phpmyadmin()
    pass

 

java环境和tomcat安装:

# coding:utf-8
import os
__author__ = 'gavin'
def apt_install():
    os.system("apt-get -y install openjdk-7-jdk")
    os.system("echo \"export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64\" >> /etc/profile")
    os.system("/bin/bash; source /etc/profile")
    pass
def tomcat_install(url, port=8080, shudownport=8005, redirectPort=8443, connectorport=8009):
    os.chdir("/data/soft/src")
    if not os.path.exists("/data/soft/src/apache-tomcat-7.0.69.tar.gz") or not os.path.exists(
            "/data/soft/src/apache-tomcat-7.0.69"):
        os.system("wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.69/bin/apache-tomcat-7.0.69.tar.gz")
        os.system("tar -zxf apache-tomcat-7.0.69.tar.gz")
        pass
    if not os.path.exists("/data/tomcat"):
        os.mkdir("/data/tomcat")
        pass
    os.chdir("/data/tomcat")
    os.system("cp -f -r /data/soft/src/apache-tomcat-7.0.69 %s" % url)
    os.chdir("/data/tomcat/%s" % url)
    if not os.path.exists("/data/tomcat/%s/conf/server.xml.back"):
        os.system("cp /data/tomcat/%s/conf/server.xml /data/tomcat/%s/conf/server.xml.back" % (url, url))
        pass
    newstrs = open("/data/tomcat/%s/conf/server.xml.back" % url).read()
    newstrs = newstrs.replace("8080", str(port))
    newstrs = newstrs.replace("8005", str(shudownport))
    newstrs = newstrs.replace("8443", str(redirectPort))
    newstrs = newstrs.replace("8009", str(connectorport))
    fw = file("/data/tomcat/%s/conf/server.xml" % url, 'w')
    fw.write(newstrs)
    fw.close()
    os.system("/data/tomcat/%s/bin/startup.sh" % url)
    vhost = '''
        server{
    listen 80;
    server_name 127.0.0.1;
    location / {
   proxy_pass http://localhost:8080;
   proxy_set_header Host $host;
   proxy_redirect off;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_connect_timeout 60;
   proxy_read_timeout 600;
   proxy_send_timeout 600;
    }
}
    '''
    vhost = vhost.replace("127.0.0.1", url)
    fw = file("/data/soft/nginx/vhost/%s.conf" % url, 'w')
    fw.write(vhost)
    fw.close()
    os.system("/data/soft/nginx/nginx -s reload")
if __name__ == "__main__":
    apt_install()
    tomcat_install("你绑定的域名")
    pass

 

 

最后,可以创建单个用户,用户可以在用户目录中直接上传html/php代码进行执行

# coding:utf-8
import os
import sys
__author__ = 'gavin'
def init_group():
    pass
def build(username):
    os.system("groupadd %s" % username)
    #默认密码是123456
    os.system(
        "useradd -d /home/%s -m -g %s -s /bin/bash -p '$6$lAwpeIp.$zbwtofFeZSzn9JepGpuJ2Zn23YYVmy6YEFkJVVCqN9wLC6IP0U5Qha.iBE/O.dl4L38DuQXfcN2JInqg.22aB1'  %s" % (
            username, username, username))
    os.system("mkdir /data/nginx/html/%s" % username)
    os.chdir("/data/nginx/html/%s" % username)
    os.system("echo \"<?php echo 'hello %s';?>\" > index.php" % username)
    os.chdir("/data/nginx/html")
    os.system("ln -s /data/nginx/html/%s /home/%s/www" % (username, username))
    os.system("chmod 775 -R /data/nginx/html/%s" % username)
    os.system("chown -R %s:%s /data/nginx/html/%s" % (username, username, username))
    pass
def delete_user(username):
    if os.path.exists("/data/nginx/html/%s" % username):
        os.system("rm -rf /data/nginx/html/%s" % username)
        pass
    if os.path.exists("/home/%s" % username):
        os.system("rm -rf /home/%s" % username)
        pass
    os.system("userdel %s" % username)
if __name__ == "__main__":
    # init_group()
    if len(sys.argv) == 3:
        if sys.argv[1] == "add":
            build(sys.argv[2])
            pass
        if sys.argv[1] == "del":
            delete_user(sys.argv[2])
            pass
        pass
    else:
        print "格式:"
        print "\tadd xxx"
        print "\tdel xxx"
    pass
    #最后访问网址为IP:80/username

 

更多文章:http://blog.gavinzh.com

转载于:https://my.oschina.net/jiangmitiao/blog/665329

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值