脚本一键安装好之后的目录结构:
/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