zoukankan      html  css  js  c++  java
  • 一键搭建LNMP脚本

    还有不足的地方,请谅解   2天时间刚做到安装mysql这里。。。。

    #  [root@localhost ~]# cat /etc/centos-release
    #  CentOS release 6.7 (Final)
    #  [root@localhost ~]# uname -a
    #  Linux localhost 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linu

     

    ############  以下是 一键安装脚本  ###############

    #!/bin/bash
    clear

    mount /dev/sr0 /mnt/usb1
    #yum -y install gcc*
    yum -y install httpd gcc* pcre-devel zlib-devel openssl openssl-devel perl-Digest-SHA1.x86_64 ncurses-devel
    useradd -M -s /sbin/nologin nginx
    for i in ./*.gz
    do
      tar -zxvf $i
    done
    for p in ./*.bz2
    do
      tar -jxvf $p
    done
    cd nginx-1.0.8
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
    make && make install
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    b=80
    k=`netstat -anpt|grep $b |awk -F ":" '{print $2}'|awk -F " " '{print $1}'`
      #echo "$k"

    if [[ $k -ne $b ]];then
      service Nginx start
    else
      chmod 755 /etc/init.d/Nginx
      chkconfig --add Nginx
    fi
    cd ..


    ############  安装mysql  ############3
    #yum install ncurses-devel
    cd mysql-5.1.55

    ./configure --prefix=/usr/local/mysql --with-collation=utf8_general_ci --with-charset=utf8 --with-extra-charsets=gbk,gb2312
    y
    make && make install
    cp support-files/my-medium.cnf /etc/my.cnf
    cp support-files/mysql.server /etc/init.d/mysqld
    rpm -ivh ~/*.rpm  #mysql自动输入账号和密码的rpm包
    chmod 755 /etc/init.d/mysqld
    chkconfig --add mysqld

    ############  做软连接  #############
    ln -s /usr/local/mysql/bin/* /usr/local/bin
    ln -s /usr/local/mysql/lib/mysql/* /usr/lib
    ln -s /usr/local/mysql/include/mysql/* /usr/include

    #添加mysql用户并初始化mysql
    useradd -M -s /sbin/nologin mysql
    cd /usr/local/mysql/bin
    ./mysql_install_db --user=mysql
    service mysqld start

    ########  下面是php的  #########
    yum -y install libxml2-devel libpng-devel libjpeg*
    cd ~/php-5.3.6
    #echo "ok"
    ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm
    cp -rp /usr/lib64/libpng* /usr/lib/ && cp -frp /usr/lib64/libjpeg* /usr/lib/
    mkdir -p /usr/local/man/man1
    make && make install
    cp php.ini-development /usr/local/php5/php.ini
    ln -s /usr/local/php5/bin/* /usr/local/bin
    ln -s /usr/local/php5/sbin/* /usr/local/sbin
    cd ../ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x
    cp ZendGuardLoader.so /usr/local/php5/lib/php/
    echo "zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so" >> /usr/local/php5/php.ini
    echo "zend_loader.enable=1" >> /usr/local/php5/php.ini
    cd /usr/local/php5/etc
    cp php-fpm.conf.default php-fpm.conf
    sed -i 's/^;pid/pid/' /usr/local/php5/etc/php-fpm.conf

    sed -i 's/^user = nobody/user = nginx/' /usr/local/php5/etc/php-fpm.conf
    sed -i 's/^group = nobody/group = nginx/' /usr/local/php5/etc/php-fpm.conf
    sed -i 's/^;pm.start_servers = 20/pm.start_servers = 20/' /usr/local/php5/etc/php-fpm.conf
    sed -i 's/^;pm.min_spare_servers = 5/pm.min_spare_servers = 10/' /usr/local/php5/etc/php-fpm.conf
    sed -i 's/^;pm.max_spare_servers = 35/pm.max_spare_servers = 35/' /usr/local/php5/etc/php-fpm.conf


    ############# 判断php-fpm是否启动 #################
    /usr/local/php5/sbin/php-fpm #php-fpm启动方式
    E=9000
    D=`netstat -anpt |grep :9000|awk -F ":" '{print $2}'|awk -F " " '{print $1}'`
    if [ $D -eq $E ];then
    echo "########## server php-fpm status ok ##########"
    else
    /usr/local/php5/sbin/php-fpm
    fi


    ############# 将php-fpm添加到Nginx脚本中,随nginx一起启动 #################

    sed -i '/nginx.conf/ac="/usr/local/php5/sbin/php-fpm"' /etc/init.d/Nginx
    sed -i '/php-fpm/ad="/usr/local/php5/var/run/php-fpm"' /etc/init.d/Nginx
    sed -i '/$a/a\t$c' /etc/init.d/Nginx
    sed -i '/killall/a\tkillall -9 $d' /etc/init.d/Nginx
    /usr/local/php5/sbin/php-fpm


    ################### 判断nginx是否为启动状态,php-fpm的启动已经放到了nginx的启动脚本里,会随nginx一起启动  #######################

    service Nginx start
    Q=`netstat -anpt |grep :80|awk -F ":" '{print $2}'|awk -F " " '{print $1}'
    `
    if [[ $Q -eq 80 ]];then
      echo "nginx running...."
    else
      echo "nginx not running...."
    fi

    Nginx启动脚本(脚本在/etc/init.d下名字为Nginx,这里的Nginx名字需要注意)

    #!/bin/bash
    #chkconfig:2345 99 20
    a="/usr/local/nginx/sbin/nginx"      #源地址
    conf=/usr/local/nginx/conf/nginx.conf

    case $1 in
    start)
        $a -c $conf
        echo"Nginx start"
    ;;
    stop)
        killall -9 nginx
        echo "Nginx stop"
    ;;
    restart)
        $0 stop &>/dev/null
        $0 start &>/dev/null
        echo "Nginx restart"
    ;;
    *)
        echo "pppp error"
        esac

    mysql免输账号和密码脚本:

    #!/usr/bin/expect
    date +%Y-%m-%d-%H:%M:%S
    set timeout 5
    set password "123456"   #设置密码是123456
    spawn mysql -u root -p  #登陆
    expect "123456"     #
    send "123456 "      #发送密码123456
    interact

    说明:
    第一行#!/usr/bin/expect表示使用expect的shell交互模式
    set是对变量password赋值
    set timeout 5:设置超时时间为5秒,如果要执行的shell命令很长可以设置超时时间长一些。expect超过超时时间没有监测到要找的字符串,则不执行,默认timeout为10秒
    spawn在expect下执行shell脚本
    expect对通过spawn执行的shell脚本的返回进行判断,是否包含“”中的字段
    send:如果expect监测到了包含的字符串,将输入send中的内容, 相当于回车
    interact:留在开的子进程内,可以继续输入,否则将退出子进程回到shell中(比如ssh登录到某台服务器上,只有加了interact才可以留在登录后的机器上进行操作)

    ############  测试脚本:sh -n test.sh  或者  sh -vx test.sh  ################

     待续未完。。。

    问题总结:

    编写后台进程的管理脚本,使用service deamon-name stop的时候,出现如下提示:
    /sbin/service: line 66: 23299 Terminated env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
    原因:
    把管理脚本的名称设为和后台进程名称一样,即:
    后台进程名称:deamon-name,
    脚本名称:/etc/init.d/deamon-name

    脚本中有一句:
    killall deamon-name
    执行service deamon-name stop,本意是调用deamon-name脚本,结束后台进程deamon-name,结果连“service deamon-name stop”这条进程也被结束了。
    解决方法:
    把后台进程与脚本设置不同名称即可。

  • 相关阅读:
    使用DevExpress 控件开发通用查询控件(Winform)
    SQL 排序函数
    SQL Server 消除科学计数法
    Excel VBA 的GetOpenFilename 方法
    分布式定时任务利用分布式定时任务框架xxljob实现任务动态发布
    java 同时启动多个项目
    Jooq配置与使用
    java 线上诊断工具arthas使用记录及k8s使用
    k8s脚本
    输入汉字获得拼音(VB.net)
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/7141407.html
Copyright © 2011-2022 走看看