像windows安装服务器套件一样在linux下安装你的服务器套件
发布时间:2020-12-15 07:12:29 所属栏目:安全 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/bin/sh#================================================================================#name : EazyLamp#version : 0.1a#description : Easy
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/bin/sh #================================================================================ #name : EazyLamp #version : 0.1a #description : Easy-to-use on click setup/transfer tool for lamp server # configuration under linux,as easy as wamp server. #author : latel ([email?protected]) #github : https://github.com/latel/EasyLamp #liencense : GPL #date : 2013/12/20 #------------------------------------------------------------ #history : 2013/12/20 latel first release #================================================================================ BASE_DIR=$PWD/${0%/*}/../ cd $BASE_DIR BASE_DIR=$PWD PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:$BASE_DIR/install/functions TTY=`ps|grep $$|awk '{print $2}'` USER=`who|grep ${TTY}|awk '{print $1}'` #adjust your settings as follows which will be refered during installation #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #leave values to "do_not_install" on the item you don't wanted #apache apache_version="2.4.7" #php php_version="5.5.7" #mysql mysql_version="5.6.15" mysql_password="5070474849" #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #this script shall only run in root priviledge get_root(){ if [[ $EUID -ne 0 ]];then echo "This script must be run as root" 1>&2 exit 1 fi } #detect os type detect_os(){ if uname -a | grep -i "arch" >/dev/null 2>&1;then echo "arch" elif uname -a | grep -i "ubuntu|debian">/dev/null 2>&1;then echo "debian" elif uname -a | grep -i "centos|redhat">/dev/null 2>&1;then echo "redhat" elif cat /proc/version | grep -i "arch">/dev/null 2>&1;then echo "arch" elif cat /proc/version | grep -i "ubuntu|debian">/dev/null 2>&1;then echo "debian" elif cat /proc/version | grep -i "centos|redhat">/dev/null 2>&1;then echo "redhat" else echo "generic" fi } #check whether a command is already available in system check_command_exists(){ local command=$1 local stop=$2 if hash $1 2>/dev/null;then echo "0" else echo "1" if [ $2 == "1" ];then echo 'building tools $1 not installed. please do it yourself' exit 1 fi fi } lowcase(){ word=$1 echo $word | tr '[A-Z]' '[a-z]' } #choose yes or no confirm(){ local prompt=$1 local yaction=$2 local naction=$3 while true; do read -p "$prompt(y/n)?: " choice choice=`lowcase $choice` case $choice in y ) eval "$yaction";return 1;break;; n ) eval "$naction";return 0;break;; * ) echo "wrong input,please type y or n only." esac done } #detect source code's compress format #execute accordingly extract command extract_source(){ #currently,only tar.gz and tar.bz2 format are supported local zip_name=`lowcase $1` local zip_destination=$2 cd $BASE_DIR/install if [ -f packages/${zip_name}.tar.gz ];then tar zxvf packages/${zip_name}.tar.gz -C $zip_destination return 0 elif [ -f packages/${zip_name}.tar.bz2 ];then tar jxvf packages/${zip_name}.tar.bz2 -C $zip_destination return 0 else echo "!!no file is available for source ${zip_name},installation aborted." exit 1 fi } #install building tools install_tools(){ if [ "`detect_os`" == "arch" ];then pacman -Syu pacman -S gcc g++ make cmake wget perl curl openssl build-essential elif [ "`detect_os`" == "debian" ];then apt-get update apt-get install gcc g++ make cmake wget perl curl openssl build-essential elif [ "`detect_os`" == "redhat" ];then yum -y gcc g++ make cmake wget perl curl openssl build-essential fi check_command_exists "gcc" "1" check_command_exists "g++" "1" check_command_exists "make" "1" check_command_exists "cmake" "1" check_command_exists "wget" "1" check_command_exists "perl" "1" check_command_exists "curl" "1" } #install dialog install_dialog(){ #prepare files tar xvf install/packages/dialog.tar.gz -C install/temp/ #install cd install/temp/dialog-1.2-20130928 ./configure make make install cd $BASE_DIR } #install apache install_apache(){ cd $BASE_DIR #check previous installation if [ -d apache* ];then confirm "You have installed `ls|grep apache` already,uninstall first" "rm -r apache*" "apache_version=`ls|grep apache|grep -oE '((([0-9]){1,}.){2}[0-9]{1,}){1}'` ; return 0" if [ $? != "1" ];then return 0 fi fi #install dependencies #make directory cd $BASE_DIR [[ -d apache-${apache_version} ]] || mkdir apache-${apache_version} [[ -d www ]] || mkdir www [[ -d logs ]] || mkdir logs [[ -d conf ]] || mkdir conf #prepare files if [ -f www/index.php ];then echo "htdocs files existed,ignore." else touch www/index.php echo "<?php echo phpinfo(); ?>" >> www/index.php fi extract_source "httpd-${apache_version}" "${BASE_DIR}/install/temp/" cd $BASE_DIR #install cd install/temp/httpd-${apache_version} ./configure --prefix=$BASE_DIR/apache-${apache_version} --logfiledir=$BASE_DIR/logs --enable-so #--bindir=/usr/bin #--sbindir=/usr/sbin #--libdir=/usr/lib/httpd/lib #--libexecdir=/usr/lib/httpd/modules #--installbuilddir=/usr/lib/httpd/build #--htmldir=$BASE_DIR/www make make install #configuration cd $BASE_DIR groupadd httpd >/dev/null 2>&1 #create group and user if not exitsts useradd -s /bin/false -g httpd httpd >/dev/null 2>&1 cd apache-${apache_version} mv htdocs/index.html $BASE_DIR/www/index.html cp conf/httpd.conf conf/httpd.conf.bak #backup original conf file sed -i -e "s/User daemon/User httpd/" -e "s/Group daemon/Group httpd/" conf/httpd.conf sed -i -e "s/apache-${apache_version}/htdocs/www/" conf/httpd.conf sed -i -e "s/#ServerName www.example.com:80/ServerName www.example.com:80/" conf/httpd.conf sed -i -e "s/ErrorLog "logs/error_log"/ErrorLog "${BASE_DIR/////}/logs/httpd_error_log"/" conf/httpd.conf sed -i -e "s/CustomLog "logs/access_log" common/CustomLog "${BASE_DIR/////}/logs/httpd_access_log" common/" conf/httpd.conf #make files for later-reading cd $BASE_DIR touch {logs/httpd_access_log,logs/httpd_error_log} #cleanup cp apache-${apache_version}/bin/httpd apache-${apache_version}/bin/httpd.bak strip apache-${apache_version}/bin/httpd } #install php install_php(){ cd $BASE_DIR #check previous installation if [ -d php* ];then confirm "You'v installed `ls|grep php` already,uninstall first" "rm -r php*" "php_version=`ls|grep php|grep -oE '((([0-9]){1,}){1}'` ; return 0" if [ $? != "1" ];then return 0 fi fi #install dependencies #make directory [[ -d php-${php_version} ]] || mkdir php-${php_version} [[ -d logs ]] || mkdir logs [[ -d conf ]] || mkdir conf #prepare files extract_source "php-${php_version}" "${BASE_DIR}/install/temp/" cd $BASE_DIR #install cd install/temp/php-${php_version} ./configure --prefix=$BASE_DIR/php-${php_version} --with-apxs2=$BASE_DIR/apache-${apache_version}/bin/apxs --with-config-file-path=$BASE_DIR/conf --with-mysql --with-pdo-mysql --enable-pdo --with-openssl --with-zlib --with-curl --with-gd --with-mcrypt #phpmyadmin need it make make install #configuration cd $BASE_DIR mv php/etc php-${php_version}/ rm -r php cp install/temp/php-${php_version}/php.ini-development conf/php.ini sed -i -e "s/;date.timezone =/date.timezone = Asia/Shanghai/" conf/php.ini sed -i -e "s/;extension=php_mysql.dll/extension=php_mysql.dll/" conf/php.ini sed -i -e "s/;extension=php_pdo_mysql.dll/extension=php_pdo_mysql.dll/" conf/php.ini sed -i -e "s/mysql.default_socket =/mysql.default_socket =${BASE_DIR/////}/mysql-${mysql_version}/mysql.sock/" conf/php.ini sed -i -e "s/pdo_mysql.default_socket=/pdo_mysql.default_socket=${BASE_DIR/////}/mysql-${mysql_version}/mysql.sock/" conf/php.ini cp install/resource/php5_module.conf apache-${apache_version}/conf/extra/php5_module.conf sed -i -e "s/PHPIniDir/PHPIniDir '${BASE_DIR/////}/conf/php.ini'/" apache-${apache_version}/conf/extra/php5_module.conf echo "Include conf/extra/php5_module.conf" >> apache-${apache_version}/conf/httpd.conf #do stuff for apache cp apache-${apache_version}/conf/httpd.conf conf/httpd.conf } #install mysql install_mysql(){ cd $BASE_DIR #check previous installation if [ -d mysql* ];then confirm "You'v installed `ls|grep mysql` already,uninstall first" "rm -r mysql*" "mysql_version=`ls|grep mysql|grep -oE '((([0-9]){1,}){1}'` ; return 0" if [ $? != "1" ];then return 0 fi fi #install dependencies #make directory cd $BASE_DIR [[ -d mysql-${mysql_version}/data ]] || mkdir -p mysql-${mysql_version}/data [[ -d logs ]] || mkdir logs [[ -d conf ]] || mkdir conf #prepare files extract_source "mysql-${mysql_version}" "${BASE_DIR}/install/temp/" cd $BASE_DIR #install cd install/temp/mysql-${mysql_version} cmake -DCMAKE_INSTALL_PREFIX=$BASE_DIR/mysql-${mysql_version} -DMYSQL_DATADIR=$BASE_DIR/mysql-${mysql_version}/data -DMYSQL_UNIX_ADDR=$BASE_DIR/mysql-${mysql_version}/mysql.sock -DEFAULT_CHARSET=utf8 -DEFAULT_COLLATION=utf8_general_ci #add a user line for coomon user to use mysql #./configure # --prefix=$BASE_DIR/mysql-${mysql_version} make make install #configuration cd $BASE_DIR groupadd mysql #create group and user if not exitstsapache-${apache_version} useradd -s /bin/false -g mysql mysql mysql-${mysql_version}/scripts/mysql_install_db --basedir=$BASE_DIR/mysql-${mysql_version} --datadir=$BASE_DIR/mysql-${mysql_version}/data --user=mysql cp install/temp/mysql-${mysql_version}/support-files/mysql.server mysql-${mysql_version}/bin/mysql.server chmod +x mysql-${mysql_version}/bin/mysql.server cp install/temp/mysql-${mysql_version}/support-files/my-default.cnf mysql-${mysql_version}/my.cnf cd mysql-${mysql_version} echo "basedir = $BASE_DIR/mysql-${mysql_version}/" >> my.cnf echo "datadir = $BASE_DIR/mysql-${mysql_version}/data" >> my.cnf echo "port = 3306" >> my.cnf echo "socket = $BASE_DIR/mysql-${mysql_version}/mysql.sock" >> my.cnf echo "log-error = $BASE_DIR/logs/mysql_error.log" >> my.cnf echo "pid-file = $BASE_DIR/mysql-${mysql_version}/mysql.pid" >> my.cnf echo "user = mysql" >> my.cnf cd $BASE_DIR #make files for later-reading touch logs/mysql_error.log #adjust permissions chown -R mysql.mysql mysql-${mysql_version} } gen_scripts(){ cd $BASE_DIR [[ -f ezlamp-st ]] && rm ezlamp-st [[ -f ezlamp-ki ]] && rm ezlamp-ki [[ -f ezlamp-ki ]] && rm greenfy cp install/resource/ezlamp-st ezlamp-st cp install/resource/ezlamp-ki ezlamp-ki cp install/resource/greenfy greenfy chmod +x ezlamp-st ezlamp-ki greenfy chown $USER ez* green* } run(){ cd $BASE_DIR apache-${apache_version}/bin/apachectl -k start -f ${BASE_DIR}/conf/httpd.conf #start apache mysql-${mysql_version}/bin/mysql.server start --explicit_defaults_for_timestamp & #start mysql daemon } #doing some post configuration work post_configuration(){ cd $BASE_DIR mysql-${mysql_version}/bin/mysql_secure_installation } eazylamp(){ echo echo echo "#############################################################################" echo echo "You are welcome to use this script to deploy your lamp,hope you like it." echo "If you have any question,please submit your issues to following address" echo "https://github.com/latel/EasyLamp" echo echo "#############################################################################" echo #user confirmation read -p "Are you sure you want to install lamp in $BASE_DIR(y/n)?" confirm cd $BASE_DIR if [ $confirm = y ];then get_root #install_tools touch /tmp/eazylamp_log #create file to log install information chattr +a /tmp/eazylamp_log #not allowed to delete,only add is alllowed detect_os if [ "`check_command_exists "dialog"`" == "1" ];then read -p "Dialog not detected,which can supply great installation experience,install(y/n)?: " confirm if [ $confirm == y ];then install_dialog [[ $? == 0 ]] && has_dialog = 1 fi fi [[ -d install/temp ]] || mkdir install/temp echo "[1/7]installing apache..." install_apache echo "*apache2 installed" echo "[2/7]installing php..." install_php echo "*php5 installed" echo "[3/7]installing mysql..." install_mysql echo "*mysql installed" cd $BASE_DIR echo "[4/7]removing tempotary files" #rm -r install/temp echo "[5/7]do some peformance enhancements,please wait..." chown -R $USER www echo "[6/7]generating maintain scripts..." gen_scripts echo echo "install complete" echo "#======================================" echo "# apache: ${apache_version}" echo "# php : ${php_version}" echo "# mysql : ${mysql_version}" echo "#======================================" echo echo "[7/7]All done. (??ω?)?" echo echo "you may now delete the install folder now " run echo "http://localhost/" else echo "please manually move your folder to your desire position" fi } eazylamp 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |