一键部署LNMP服务

一键部署LNMP服务

对于最简单的LNMP架构部署其实可以使用的方法有很多,如果你的仓库里面有一些插件或者中间件的rpm包那么你就完全可以不使用源码进行部署,但是大多数时候你还是需要利用源码进行nginx或者mysql的一些源码安装,而拿一些不需要的就是php之类的一些插件,下面我也为搭建写出了大概的部署过程,并且都加了注释,可能有些地方跟你的机器配置,版本之类并不匹配,具体实施还是要看实际情况。

仓库有一些资源较为简单的LNMP架构部署:

#!/bin/bash
id nginx $> /dev/null        #利用id命令来检测nginx这个用户是否存在并把输出内容重定向到null中
if [ $? -ne 0 ]; then        #利用if判断来判断上一条命令是否执行成功,如果不成功了就执行下面这条命令
    useradd nginx -s /bin/nologin     #创建用户nginx并指定解释器为/bin/nologin
fi                                   #if判断的结束符
if [-f nginx-1.8.0.tar.gz];then      #利用nginx判断nginx的源码包是否存在,如果存在就执行以下命令
     tar -xf nginx-1.8.0.tar.gz     #将nginx的tar包进行解包
     cd nginx-1.8.0          #进入到nginx-1.8.0这个目录之中
     yum install -y gcc pcre-devel openssl-devel zlib-devel make  #下载gcc源码安装工具和一些依赖件
     ./configure --prefix=/usr/local/nginx --with-http_ssl_module  #利用./configure进行解码
     make && make install    #利用make进行源码解析,利用make install 进行源码安装
     ln -s /usr/local/nginx/sbin/nginx /usr/sbin/   #利用ln命令创建软连接放到/usr/sbin/下
  yum -y install gcc gcc-c++ cmake ncures-devel perl   #下载源码安装工具和依赖件
  id mysql &> /dev/null     #利用id来检测mysql用户是否存在,并将结果输入到null黑洞中
  if [ &? -ne 0 ] ;then     #利用if来判断上述命令是否执行成功
      tar -xf mysql-5.6.25.tar.gz     #利用tar命令将mysql-5.6.25.tar.gz的包解压
      cd mysql-5.6.25          #cd到mysql-5.6.25这个目录里面
      cmake                    #利用cmake进行源码解析
      make                     #利用make进行源码解析
      make install             #利用make install进行源码安装
      /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/  --basedir=/usr/local/mysql    #安装mysql数据库指定用户和数据文件执行文件所在路径
      chown -R root.mysql /usr/local/mysql   #将/usr/local/mysql的属主和属组递增进行更改
      chown -R mysql /usr/local/mysql/data   #将/usr/local/mysql/data的属主进行递增更改
      /bin/cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql  #利用cp命令将mysql.server复制到/etc/init.d/mysql下
      chmod +x /etc/local/mysql/support-files/my-default.cnf /etc/my.cnf    #将my-default.cnf和my.cnf加上可执行权限
      /bin/cp -f /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf  #利用cp命令将my-default.cnf文件复制为/etc/my.cnf
      echo "/usr/local/mysql/lib" >> /etc/ld.so.conf   #输出/usr/local/mysql/lib重定向到/etc/ld.so.conf
      ldconfig            
      echo 'PATH=\$PATH:/usr/local/mysql/bin' >> /etc/profile   #输出PATH=/$PATH:/usr/local/mysql/bin重定向到/etc/profile文件中
      export PATH  #设置为全局变量
        else    #如果上面命令没有执行成功的话就执行下面命令
             echo "没有mysql源码包"    #输出"没有mysql源码包"
    exit    #退出
fi       #if判断结束
yum install -y php php-fpm php-devel

基本都是源码包,利用脚本进行源码一键部署:

#!/bin/bash      #shell脚本指定解释器使用的/bin/bash
menu(){       #定义函数,menu
clear           #利用clear命令进行清屏
echo " ##############--Menu--######"      #输出 ##############--Menu--######
echo "# 1.install nginx"                  #输出安装nginx
echo "# 2.install mysql"                  #输出安装mysql
echo "# 3.install php"                     #输出安装php
echo "# 4.exit program"                    #输出结束program
echo "#########################"           #输出########################
}
choice(){                                  #定义函数choice
read -p "please choice a menu[1-9]: " select #利用read命令让你输入一个数字1-9 利用select进行接收
}
install_nginx(){         #定义函数install_nginx
id nginx $> /dev/null        #利用id命令来检测nginx这个用户是否存在并把输出内容重定向到null中
if [ $? -ne 0 ]; then        #利用if判断来判断上一条命令是否执行成功,如果不成功了就执行下面这条命令
    useradd nginx -s /bin/nologin     #创建用户nginx并指定解释器为/bin/nologin
fi                                   #if判断的结束符
if [-f nginx-1.8.0.tar.gz];then      #利用nginx判断nginx的源码包是否存在,如果存在就执行以下命令
     tar -xf nginx-1.8.0.tar.gz     #将nginx的tar包进行解包
     cd nginx-1.8.0          #进入到nginx-1.8.0这个目录之中
     yum install -y gcc pcre-devel openssl-devel zlib-devel make  #下载gcc源码安装工具和一些依赖件
     ./configure --prefix=/usr/local/nginx --with-http_ssl_module  #利用./configure进行解码
     make && make install    #利用make进行源码解析,利用make install 进行源码安装
     ln -s /usr/local/nginx/sbin/nginx /usr/sbin/   #利用ln命令创建软连接放到/usr/sbin/下
     cd ..       #cd .. 返回上一级
 else          #如果上面判断不成立的话就执行下面的命令
     echo "没有nginx源码包"   #输出没有nginx源码包
 fi          #if判断结束
}

install_mysql(){            #定义函数安装mysql数据库
  yum -y install gcc gcc-c++ cmake ncures-devel perl   #下载源码安装工具和依赖件
  id mysql &> /dev/null     #利用id来检测mysql用户是否存在,并将结果输入到null黑洞中
  if [ &? -ne 0 ] ;then     #利用if来判断上述命令是否执行成功
      tar -xf mysql-5.6.25.tar.gz     #利用tar命令将mysql-5.6.25.tar.gz的包解压
      cd mysql-5.6.25          #cd到mysql-5.6.25这个目录里面
      cmake                    #利用cmake进行源码解析
      make                     #利用make进行源码解析
      make install             #利用make install进行源码安装
      /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/  --basedir=/usr/local/mysql    #安装mysql数据库指定用户和数据文件执行文件所在路径
      chown -R root.mysql /usr/local/mysql   #将/usr/local/mysql的属主和属组递增进行更改
      chown -R mysql /usr/local/mysql/data   #将/usr/local/mysql/data的属主进行递增更改
      /bin/cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql  #利用cp命令将mysql.server复制到/etc/init.d/mysql下
      chmod +x /etc/local/mysql/support-files/my-default.cnf /etc/my.cnf    #将my-default.cnf和my.cnf加上可执行权限
      /bin/cp -f /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf  #利用cp命令将my-default.cnf文件复制为/etc/my.cnf
      echo "/usr/local/mysql/lib" >> /etc/ld.so.conf   #输出/usr/local/mysql/lib重定向到/etc/ld.so.conf
      ldconfig            
      echo 'PATH=\$PATH:/usr/local/mysql/bin' >> /etc/profile   #输出PATH=/$PATH:/usr/local/mysql/bin重定向到/etc/profile文件中
      export PATH  #设置为全局变量
        else    #如果上面命令没有执行成功的话就执行下面命令
             echo "没有mysql源码包"    #输出"没有mysql源码包"
    exit    #退出
fi       #if判断结束
}
install_php(){                   #定义一个install_php的函数
#安装php时没有指定启动哪些模块功能,如果的用户可以根据实际情况自行添加额外功能如--with-gd等
    yum install -y gcc libxml2-devel   #安装gcc源码解译工具和依赖包
    if [-f mhash-0.9.9.9.tar.gz]; then     #利用if判断是否有mhash的tar包
        tar -xf mhash-0.9.9.9.tar.gz          #如果文件存在就利用tar xf解tar包
        cd mhash-0.9.9.9          #cd到mhash-0.9.9.9文件中
        ./configure               #利用./configure文件解码
        make && make install       #利用make和make install进行源码包的安装
        cd ..                      #cd..返回上一级目录
        if [ ! -f /usr/lib/libmhash.so ]; then    #利用if判断libmhash文件是否不存在
            ln -s /usr/local/lib/libmhash.so /usr/lib/     #利用ln创建一个libmhash.so软连接到/usr/lib
        if     #if判断结束
        ldconfig
    else       #如果上面命令没有执行成功的话就执行下面命令
        echo "没有mhash源码包文件"      #输出"没有mhash源码包"
        exit     #结束执行此脚本
    fi      #结束if判断
    
    if [ -f libmcrypt-2.5.8.tar.gz]; then    #利用if判断检查tar包libmcrypt-2.5.8.tar.gz是否存在
        tar -xf libmcrypt-2.5.8.tar.gz   #利用tar命令解libmcrypt的tar包
        cd libmcrypt-2.5.8       #cd进入libmcrypt-2.5.8的文件中
        ./configure       #利用./configure进行源码解析
        make && make install  #利用make和make install 进行源码文件安装
        cd ..      #返回上一级目录
        if [ ! -f /usr/lib/libmcrypt.so ]; then  #利用if判断libmcrypt.so文件是否存在如果不存在就执行以下命令
             ln -s /usr/local/lib/libmcrypt.so /usr/lib  #利用ln命令将libmcrypt.so创建软连接到/usr/lib
        fi       #if判断结束
        ldconfig
    else   #上面if判断不符合的话就执行下面命令
        echo "没有libmcrypt源码包文件"    #输出"没有libmcrypt源码包文件"
        exit             #结束执行此脚本
    fi          #if判断结束
    
    if [ -f php-5.4.24.tar.gz ]; then   #利用if判断php的tar包是否存在如果存在就执行以下命令
         tar -xf php-5.4.24.tar.gz     #利用tar命令将php-5.4.24.tar.gz解包
         cd php-5.4.24   #cd到php-5.4.24文件中
         ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --enable-fpm enable-mbstring --with-mcrypt --with-mhash --with-config-file-path=/usr/local/php5/etc --with-mysqli=/usr/local/mysql/bin/mysql_config  #利用./configure进行源码解析并且安装一些需要的模块,例如mysql,php之类
         make && make install  #利用make和make install 进行源码安装
         /bin/cp -f php.ini-production /usr/local/php5/etc/php.ini #利用cp命令将文件php.ini-production复制到/usr/local/php5/etc/php.ini
         /bin/cp -f /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf       #利用cp命令将php-fpm.conf.default复制到/usr/local/php5/etc/php-fpm.conf
     else       #如果上面命令没有执行成功那么就执行以下命令
         echo "没有php源码包文件"    #输出"没有php源码包文件"
         exit       #结束执行此脚本
     fi   #if判断结束
     
}

while :     #利用while循环
do           
menu         #执行函数menu
choice        #执行函数choice
case $select in      #利用case判断使用开始定义的变量变量select
1)                    #如果变量匹配1那么就执行下面函数install_nginx
 install_nginx     
;;           #case结束符号必须是;;
2)           #果变量匹配1那么就执行下面函数install_mysql
install_mysql
;;
3)        #如果变量匹配1那么就执行下面函数install_php
install_php
;;
4)     #如果变量匹配是4那么就执行退出
exit
;;
*)          #如果变量匹配不是上面几项数字那么就执行下面命令
echo sorry!      #输出sorry
esac        #case结束语
done     #while循环结束语

利用shell脚本的部署方式的好处就是可能你写完一个脚本,下次再遇到同样的情况可能你就只需要修改其中一些变量或者命令就可实现,可以大大的节省工作时间,和增高工作效率。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值