文档章节

脚本部署lnmp环境

我爱吃葱花
 我爱吃葱花
发布于 2014/08/11 14:24
字数 1048
阅读 79
收藏 0


#!/bin/sh
#date: 2014.8
#author: leeypp@gmail.com
#system: red hat enterprise 6.0
#software message:
#        mysql-5.5.12.tar.gz
#        nginx-1.2.1.tar.gz
#        php-5.3.6.tar.bz2
#function: compile and install mysql,php,nginx on linux
#/tmp/lnmp.log trace the running of script
#after run script,can check error via /tmp/lnmp.log
#if all success,can use directly,default directory is /usr/local/lnmp/
##[root@server60 lnmp]# ls
#   a key to lnmp            mcrypt-2.6.8.tar.gz    nginx-1.2.1.tar.gz
#   libiconv-1.13.1.tar.gz   mhash-0.9.9.9.tar.bz2  php-5.3.6.tar.bz2
#   libmcrypt-2.5.8.tar.bz2  mysql-5.5.12.tar.gz
  
  
#function: remove all old httpd,mysql,php packets
RemoveOldSoftware ()
{
  
#--------< check httpd packet,stop service,remove packet >---------
rpm -q httpd > /dev/null
if [ $? == "0" ]
    then
      pgrep httpd > /dev/null
       if [ $? == "1" ]
          then
            rpm -e httpd > /dev/null
        echo "remove httpd packets ..." >> /tmp/lnmp.log
          else
            /etc/init.d/httpd stop > /dev/null
            rpm -e httpd > /dev/null
            echo "stop httpd service ..." >> /tmp/lnmp.log
            echo "remove httpd packets ..." >> /tmp/lnmp.log
       fi
fi
  
#--------< check mysqld packet,stop service,remove packet >---------
rpm -q mysql > /dev/null
if [ $? == "0" ]
    then
      pgrep mysqld > /dev/null
       if [ $? == "1" ]
          then
            rpm -e mysql --nodeps > /dev/null
        echo "remove mysql packets ..." >> /tmp/lnmp.log
          else
            /etc/init.d/mysqld stop > /dev/null
            rpm -e mysql-server --nodeps > /dev/null
            echo "stop mysqld service ..." >> /tmp/lnmp.log
            echo "remove mysql packets ..." >> /tmp/lnmp.log
       fi
fi
  
#--------< check php packet, remove packet >---------
rpm -q php > /dev/null
if [ $? == "0" ]
    then
       rpm -e php --nodeps > /dev/null 
       echo "remove php packets ..." >> /tmp/lnmp.log
fi
  
}
  
#function: install all tools during compile and install,and install libs
InstallToolsAndLib ()
{
   yum install cmake gcc gcc-c++ make ncurses-devel bison openssl-devel zlib-devel -y > /dev/null
   echo "all tools and libs needed during compile and install" >> /tmp/lnmp.log
}
  
  
#function: compile and install mysql, and start mysqld service
#notice: mysql-5.5.12.tar.gz on /lnmp
MysqlPart()
{
#-----------< compile and install mysql >-------------------
    cd /lnmp/
    tar zxf mysql-5.5.12.tar.gz
    cd mysql-5.5.12/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock
 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=all 
          
    make  && make install
    echo "compile and install mysql finished ..." >> /tmp/lnmp.log
  
#-----------< config mysql and start mysqld >------------------
    cd /usr/local/lnmp/mysql/
#add user mysql with nologin shell
    useradd -M -s /sbin/nologin mysql
#copy mysql module file
    cp support-files/my-medium.cnf /etc/my.cnf
    chown mysql.mysql . -R
#init mysql
    scripts/mysql_install_db --user=mysql --basedir=/usr/local/lnmp/mysql/ --datadir=/usr/local/lnmp/mysql/data/ > /dev/null
#change dir pemission
    chown -R root .
    chown -R mysql data
#copy mysql script to /etc/init.d/
    cp support-files/mysql.server /etc/init.d/mysqld
#start mysqld service
    /etc/init.d/mysqld start > /dev/null
  
    if [ $? == "0"]
      then
        echo "mysqld started"
    fi
#不然php编译的时候找不到mysql的库文件
    ln -s /usr/local/lnmp/mysql/lib /usr/local/lnmp/mysql/lib64
    echo "mysql finished ..." >> /tmp/lnmp.log
  
#change ~/.bash_profile file
cat > .bash_profile << end
# .bash_profile
  
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
  
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
export PATH
end
  
  
}
  
#function: compile and install nginx
NginxPart()
{
# install libs needed to compile nginx
    yum install openssl-devel pcre-devel -y > /dev/null
    cd /lnmp/
  
#compile and install
    tar zxf nginx-1.2.1.tar.gz
    cd nginx-1.2.1/
    useradd -M -s /sbin/nologin nginx
    ./configure --user=nginx --group=nginx --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module > /dev/null
    make > /dev/null && make install > /dev/null
    echo "nginx compile and install seccess!" >> /tmp/lnmp.log
  
#start nginx
    cd /usr/local/lnmp/nginx/conf/
    cp nginx.conf nginx.conf.bak
    sed '2a user  nginx nginx;' nginx.conf > /dev/null
    cd /usr/local/lnmp/nginx/sbin/
    ./nginx
    echo "start nginx service ...." >> /tmp/lnmp.log
  
#test nginx
    echo "wait to test ..." >> /tmp/lnmp.log
    curl http://127.0.0.1
     if [ $? == "0" ]
        then
         echo "nginx test ok!" >> /tmp/lnmp.log
        else
         echo "nginx test not ok! please check ..." >> /tmp/lnmp.log
     fi
  
}
  
PhpPart()
{
# install libs
    cd /lnmp/
    yum install net-snmp-devel curl-devel libxml2-devel libpng-devel libjpeg-devel freetype-devel gmp-devel openldap-devel -y > /dev/null
  
#compile and install modules
    tar zxf libiconv-1.13.1.tar.gz
    cd libiconv-1.13.1
    ./configure --libdir=/usr/local/lib64/ > /dev/null
    make > /dev/null && make install > /dev/null
  
    cd ..
    tar jxf libmcrypt-2.5.8.tar.bz2
    cd libmcrypt-2.5.8
    ./configure --libdir=/usr/local/lib64/ > /dev/null
    make > /dev/null && make install > /dev/null
    cd libltdl/
    ./configure --libdir=/usr/local/lib64 --enable-ltdl-install > /dev/null
    make > /dev/null && make install > /dev/null
  
    cd ../../
    tar jxf mhash-0.9.9.9.tar.bz2
    cd mhash-0.9.9.9
    ./configure --libdir=/usr/local/lib64/ > /dev/null
    make > /dev/null && make install > /dev/null
  
    cd ..
    ldconfig /usr/local/lib64/
    tar zxf mcrypt-2.6.8.tar.gz
    cd mcrypt-2.6.8
    ./configure --libdir=/usr/local/lib64/ > /dev/null
    #注意:./configure 时可能会报这个错:/bin/rm: cannot remove `libtoolT’: No such file or directory 直接忽略
    make > /dev/null && make install > /dev/null
    echo "all modules have been installed" >> /tmp/lnmp.log
  
    echo "installing php" >> /tmp/lnmp.log
  
    cd ..
    tar jxf php-5.3.6.tar.bz2
    cd php-5.3.6
    ./configure --prefix=/usr/local/lnmp/php \
--with-config-file-path=/usr/local/lnmp/php/etc \
--with-mysql=/usr/local/lnmp/mysql/ \
--with-openssl --with-snmp --with-gd \
--with-zlib --with-curl --with-libxml-dir \
--with-png-dir --with-jpeg-dir \
--with-freetype-dir --without-pear \
--with-gettext --with-gmp --enable-inline-optimization \
--enable-soap --enable-ftp --enable-sockets \
--enable-mbstring --with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config \
--enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx \
--with-libdir=lib64 --with-ldap --with-ldap-sasl \
--with-mcrypt --with-mhash > /dev/null
    make ZEND_EXTRA_LIBS='-liconv' > /dev/null
    make install > /dev/null
    echo "php install finished ..." >> /tmp/lnmp.log
  
  
    echo "config php and start php service" >> /tmp/lnmp.log
          
      
        cd /usr/local/lnmp/php/bin/
    wget http://pear.php.net/go-pear.phar > /dev/null
      
    echo "input you chioce:"
        yes "" | ./php go-pear.phar 
  
        cd /lnmp/php-5.3.6/
    cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    chmod +x /etc/init.d/php-fpm
    cp php.ini-production /usr/local/lnmp/php/etc/php.ini
    cd /usr/local/lnmp/php/etc/
  
    mv php-fpm.conf.default php-fpm.conf
    cat >> php-fpm.conf << end
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 5
end
   
    echo "starting php...." >> /tmp/lnmp.log
  
    echo "test php service ..."
    /etc/init.d/php-fpm start > /dev/null
    lsof -i:9000
    if [ $? == "0"]
         then
         echo "php service ok!"
    else
        echo "php service not ok,please check...."
    fi
  
}
  
#   RemoveOldSoftware           test successful
#   InstallToolsAndLib          test successful
#   MysqlPart                   test successful
#   NginxPart                   test successful
#   PhpPart                     test successful
    echo "compile and install mysql,nginx,and php on RHEL6.0 finished" >>/tmp/lnmp.log
    echo "please check logfile /tmp/lnmp.log" >> /tmp/lnmp.log
        echo "use it after config services's configfile"



本文转载自:http://my.oschina.net/sharelinux/blog/118473

共有 人打赏支持
我爱吃葱花
粉丝 29
博文 129
码字总数 34703
作品 0
海淀
数据库管理员
私信 提问
拓展版的LNMP安装包(适合批量部署)

最近的一个任务是写个一键安装LNMP的脚本,运行的平台是Ubuntu12.04,命令那些跟之前的RHEL和Centos 有一点点区别,这里做个记录。 #!/bin/bash Configuration Arguments workpath="/usr/loc...

10730
06/29
0
0
自动部署LNMP脚本

最近抽时间写了一份LNMP部署脚本,使用源码安装所需软件,源码软件包网络上很容易获取,这里仅贴出脚本内容,大家可以自行在网络上下载对应的软件放在脚本当前目录即可,实际下载的软件包如果...

丁丁历险
2015/12/12
0
0
CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境

什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/Perl/Python组合成的动态Web应用程序和服务器,它是一组Web应用程序的基础软件包,在这个基础环境上我们可以搭建任何使...

HMLinux
2017/06/05
0
0
一键安装包 lanmp_v3.1 版本发布

lanmp一键安装包是集成了lamp,lnmp,lnamp三种模式的开源软件WEB应用部署安装软件包,能方便快速部署WEB应用环境lanmp一键安装包是wdlinux官网2010年底开始推出的web应用环境的快速简易安装包...

wdlinuxcn
2016/05/12
732
1
Python实现一键安装部署LNMP环境

最近一直在学Python,东西比较多,时间持续的也比较长,为了能够学以致用,想到了原来写过的shell一键安装部署LNMP脚本,既然shell能写,Python也一定能写,就用学到的知识写了下面这个版本,...

奋斗的寒霜
2017/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
今天
1
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
2
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部