Linux系统——Shell脚本——一键安装LNMP

#!/bin/bash
#安装nginx
echo "安装nginx服务"
wget  http://nginx.org/download/nginx-1.11.4.tar.gz &>/dev/null
if [ $? -eq 0 ]
then
        echo "nginx-1.11.4安装包下载完成"
        echo "--开始安装必要的依赖文件--"
        yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel  pcre pcre-devel &>/dev/null
        if [ $? -eq 0 ]
        then
                echo "依赖文件安装完成"
                echo "解压nginx安装包到/usr/local目录下"
                tar -xf nginx-1.11.4.tar.gz -C /usr/local/src
                cd /usr/local/src/nginx-1.11.4/
                echo "创建nginx运行用户www"
                useradd www -s /sbin/nologin
                echo "预编译nginx"
                ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --user=www --group=www &>/dev/null
                if [ $? -eq 0 ]
                then
                        echo "预编译完成"
                        echo "编译安装"
                        make &>/dev/null && make install &>/dev/null
                        if [ $? -eq 0 ]
                        then
                                echo "编译安装完成"
                                echo "启动nginx服务"
                                 /usr/local/nginx/sbin/nginx &>/dev/null
                                ngx=`ps -ef | grep nginx | wc -l`
                                if [ $ngx -gt 1 ]
                                then
                                        echo "nginx启动成功"
                                else
                                        echo "nginx启动失败"
                                fi
                        else
                                echo "编译安装失败"
                        fi
 
                else
                        echo "预编译失败"
                fi
        else
                echo "安装依赖文件失败"
        fi
 
        else
                echo "nginx-1.11.4安装包下载失败,请检查原因"
 
fi
cd
#安装PHP服务
wget http://cn2.php.net/distributions/php-5.6.6.tar.gz --no-check-certificate &>/dev/null
if [ $? -eq 0 ]
then
    echo "PHP安装包下载完成"
    echo "开始安装PHP依赖文件"
    yum -y install gcc autoconf  freetype gd libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel freetype-devel libjpeg-devel bzip2 bzip2-devel openssl openssl-devel &>/dev/null
    if [ $? -eq 0 ]
    then
        echo "依赖文件下载成功"
        echo "安装libmcrypt"
        wget  https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz --no-check-certificate &>/dev/null
        if [ $? -eq 0 ]
        then
            echo "安装libmcrypt成功"
            tar xf libmcrypt-2.5.8.tar.gz
            cd libmcrypt-2.5.8/
            ./configure --prefix=/usr/local/libmcrypt &>/dev/null && make &>/dev/null  && make install &>/dev/null
            cd
            tar xf php-5.6.6.tar.gz -C /usr/local/src
            echo "预编译PHP"
            cd /usr/local/src/php-5.6.6
            ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/usr/local/php5.6/etc/ --with-bz2 --enable-maintainer-zts &>/dev/null
            if [ $? -eq 0 ]
            then
                echo "PHP预编译成功"
                echo "编译安装PHP"
                make &>/dev/null && make install &>/dev/null
                if [ $? -eq 0 ]
                then
                    echo "编译安装PHP成功"
                    echo "生成php.ini配置文件"
                    cp /usr/local/src/php-5.6.6/php.ini-production  /usr/local/php5.6/etc/php.ini
                    echo "修改fpm配置文件"
                    cd /usr/local/php5.6/etc/
                    cp php-fpm.conf.default php-fpm.conf
                    sed -i 's/user = nobody/user = www/g' php-fpm.conf
                    sed -i 's/group = nobody/group = www/g' /usr/local/php5.6/etc/php-fpm.conf
                    sed -i 's/listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/g' php-fpm.conf
                    sed -i 's/pm.max_children = 5/pm.max_children =300/g' php-fpm.conf
                    sed -i 's/pm.start_servers = 2/pm.start_servers =20/g' php-fpm.conf
                    sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g' php-fpm.conf
                    sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g' php-fpm.conf
                    sed -i 's@;pid = run/php-fpm.pid@pid = run/php-fpm.pid@g' php-fpm.conf
                    #生成启动文件
                    cp /usr/local/src/php-5.6.6/sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm
                    chmod +x /etc/init.d/php-fpm
                    chkconfig --add php-fpm
                    chkconfig php-fpm on
                    /etc/init.d/php-fpm start &>/dev/null
                    php=`netstat -antpu | grep php-fpm | wc -l`
                    if [ $php -gt 0 ]
                    then
                        echo "php服务启动成功"
                        echo "查看PHP是否安装mysql模块"
                        mokuai=`/usr/local/php5.6/bin/php -m |grep mysqli  |wc -l`
                        if [ $mokuai -eq 1 ]
                        then
                            echo "PHP连接mysql模块已经安装"
                        else
                            echo "PHP连接mysql模块安装失败"
                        fi
                    else
                        echo "PHP服务启动失败"
                    fi
                else
                   echo "编译安装失败"
                fi
             else
                echo "PHP预编译失败"
             fi
         else
            echo "安装libmcrypt失败"
         fi
     else
        echo "依赖文件下载失败"
     fi
else
        echo "PHP安装包下载失败"
fi
#安装mysql服务
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.26-1.el7.src.rpm &>/dev/null
if [ $? -eq 0 ]
then
        echo "mysql安装包下载完毕"
        echo "卸载boost"
        yum -y remove boost-* &>/dev/null
        rpm -ivh mysql-community-5.7.26-1.el7.src.rpm &>/dev/null
        #下载解压工具
        yum install -y bzip2 &>/dev/null
        if [ $? -eq 0 ]
        then
                echo "bzip2解压缩工具下载完成"
                cd /root/rpmbuild/SOURCES/
                tar xf boost_1_59_0.tar.bz2  -C  /root/
                echo "卸载系统自带的mysql"
                yum -y remove mysql* &>/dev/null
                yum -y remove mariadb* &>/dev/null
                echo "安装mysql依赖包"
                yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel &>/dev/null
                if [ $? -eq 0 ]
                then
                        echo "mysql依赖包下载完成"
                        echo "创建mysql用户和用户组"
                        groupadd mysql && useradd -M -s /sbin/nologin -r -g mysql mysql
                        echo "创建mysql数据库存放位置并修改目录权限"
                        mkdir -p /data/mysql/{data,log} && chown -R mysql:mysql /data/mysql
                        echo "解压源码包"
                        cd /root/rpmbuild/SOURCES/
                        tar xf mysql-5.7.26.tar.gz  -C  /root/
                        cd
                        cd mysql-5.7.26
                        echo "预编译mysql"
                        cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
                        -DMYSQL_DATADIR=/data/mysql/data \
                        -DSYSCONFDIR=/etc \
                        -DWITH_MYISAM_STORAGE_ENGINE=1 \
                        -DWITH_INNOBASE_STORAGE_ENGINE=1 \
                        -DWITH_MEMORY_STORAGE_ENGINE=1 \
                        -DWITH_READLINE=1 \
                        -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
                        -DMYSQL_TCP_PORT=3306 \
                        -DENABLED_LOCAL_INFILE=1 \
                        -DWITH_PARTITION_STORAGE_ENGINE=1 \
                        -DEXTRA_CHARSETS=all \
                        -DDEFAULT_CHARSET=utf8 \
                        -DDEFAULT_COLLATION=utf8_general_ci \
                        -DDOWNLOAD_BOOST=1 \
                        -DWITH_BOOST=/root/boost_1_59_0 &>/dev/null
                        if [ $? -eq 0 ]
                        then
                                echo "mysql预编译成功"
                                echo "编译mysql"
                                make  -j  $( grep processor /proc/cpuinfo | wc -l) &>/dev/null
                                if [ $? -eq 0 ]
                                then
                                        echo "mysql编译完成"
                                        echo "安装mysql"
                                        make install &>/dev/null
                                        if [ $? -eq 0 ]
                                        then
                                                echo "mysql安装完成"
                                                echo "修改mysql目录权限"
                                                chown -R mysql:mysql /usr/local/mysql/
                                                echo "备份配置文件文件"
                                                mv /etc/my.cnf{,.bak}
                                                echo "自行创建my.cnf配置文件"
                                                echo "
[mysqld]
basedir=/usr/local/mysql         #mysql安装目录
datadir=/data/mysql/data     #mysql数据存放目录
port=3306                   #mysql监听端口
socket=/usr/local/mysql/mysql.sock #mysql.sock文件存放目录
symbolic-links=0               #关闭mysql的符号链接
character-set-server=utf8        #指定mysql的字符集为utf8
log-error=/data/mysql/log/mysqld.log     #指定mysql的错误日志存放路径
pid-file=/usr/local/mysql/mysqld.pid #mysql的pid文件存放目录" >/etc/my.cnf
                                                echo "生成服务启动脚本"
                                                cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
                                                chmod +x /etc/init.d/mysqld   #给脚本添加执行权限
                                                echo "添加mysqld开机自启动"
                                                chkconfig --add mysqld      #把mysql添加到系统服务
                                                chkconfig mysqld on        #把mysql添加到开机自启动
                                                echo "初始化数据库"
                                                /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql  --basedir=/usr/local/mysql --datadir=/data/mysql/data
                                                echo "启动数据库"
                                                /etc/init.d/mysqld  start
                                                echo "添加path路径"
                                                ln -s /usr/local/mysql/bin/* /usr/local/bin/
                                                read -s -p  "请修改mysql密码:" passwd
                                                 mysqladmin -u root password "$passwd"
 
 
                                        else
                                                echo "mysql安装失败"
                                        fi
                                else
                                        echo "mysql编译失败"
                                fi
 
                        else
                                echo "mysql预编译失败"
                        fi
                else
                        echo "mysql依赖包下载失败"
                fi
        else
                echo "解压缩工具安装失败"
        fi
else
        echo "mysql安装包下载失败"
fi

注意修改自己要下载的服务版本噢!

[root@node2 ~]#vim LNMP.sh
[root@node2 ~]#bash LNMP.sh 
安装nginx服务
nginx-1.11.4安装包下载完成
--开始安装必要的依赖文件--
依赖文件安装完成
解压nginx安装包到/usr/local目录下
创建nginx运行用户www
预编译nginx
预编译完成
编译安装
编译安装完成
启动nginx服务
nginx启动成功
PHP安装包下载完成
开始安装PHP依赖文件
依赖文件下载成功
安装libmcrypt
安装libmcrypt成功
预编译PHP
PHP预编译成功
编译安装PHP
编译安装PHP成功
生成php.ini配置文件
修改fpm配置文件
php服务启动成功
查看PHP是否安装mysql模块
PHP连接mysql模块已经安装
mysql安装包下载完毕
卸载boost
bzip2解压缩工具下载完成
卸载系统自带的mysql
安装mysql依赖包
mysql依赖包下载完成
创建mysql用户和用户组
创建mysql数据库存放位置并修改目录权限
解压源码包
预编译mysql
mysql预编译成功
编译mysql
mysql编译完成
安装mysql
mysql安装完成
修改mysql目录权限
备份配置文件文件
mv: cannot stat ‘/etc/my.cnf’: No such file or directory
自行创建my.cnf配置文件
生成服务启动脚本
添加mysqld开机自启动
初始化数据库
启动数据库
Starting MySQL. SUCCESS! 
添加path路径
请修改mysql密码:mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/421224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习--神经网络基础(2)

损失函数 在深度学习中, 损失函数是用来衡量模型参数的质量的函数 , 衡量的方式是比较网络输出和真实输 出的差异: 分类 1.多分类损失函数 在多分类任务通常使用 softmax 将 logits 转换为概率的形式,所以多分类的交叉熵损失也叫做 softmax 损失 &…

嵌入式中有关软件开发的错误观念

从学生转变为职业人的过程是很艰难的,因为我们要与自己积累了多年的“老毛病”作斗争,这些“老毛病”包括:做事拖拉、不守时、不遵守规则、怕吃苦等。 就像发射火箭卫星一样,摆脱重力的束缚所花费的燃料是最多的,一旦…

springcloud:3.1介绍雪崩和Resilience4j

灾难性雪崩效应 简介 服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。 原因 1.服务提供者不可用(硬件故障、程序bug、缓存击穿、用户大量请求) 2.重试加大流量(用户重试,代码逻辑重试) 3.服…

STM32标准库开发——BKP备份RTC时钟

备份寄存器BKP(Backup Registers) 由于RTC与BKP关联性较高,所以RTC的时钟校准寄存器以及一些功能都放在了BKP中。TAMPER引脚主要用于防止芯片数据泄露,可以设计一个机关当TAMPER引脚发生电平跳变时自动清除寄存器内数据不同芯片BKP区别,主要体…

【python开发】网络编程(上)

这里写目录标题 一、必备基础(一)网络架构1、交换机2、路由器3、三层交换机4、小型企业基础网络架构5、家庭网络架构6、互联网 (二)网络核心词汇1、子网掩码和IP2、DHCP3、内网和公网IP4、云服务器5、端口6、域名 一、必备基础 &…

小程序配置服务器域名的操作步骤(入门级)

将详细列出小程序配置服务器域名的操作步骤: 服务器选购推荐:腾讯云轻量服务器 点击以下任一云产品链接,跳转后登录,自动享有所有云产品优惠权益: 经过笔者亲测,强烈推荐腾讯云轻量应用服务器作为游戏服…

益生菌不一定全是“益”,也存在一定的安全风险

谷禾健康 益生菌被世界卫生组织定义为“当摄入足够量时,可为宿主带来健康益处的活微生物”。近年来,随着人们发现其可用于预防、减轻或治疗特定疾病以及改善健康,益生菌在食品和临床治疗中的应用越来越广泛。 大量研究表明,益生菌有助于维持肠道菌群的平衡,促进消化和吸收…

【图说】电脑发展史

免责声明:文中有一些图片来源自网络,如有版权请通知我删除,谢谢! “结绳记事”是计算的开端 如果说“结绳记事”仅是计数,那么“算筹”就是真正的计算工具 算盘也是我们老祖宗的杰出发明,最擅长“加减乘除”,包括但不限于乘方、开方、对数等。还能进行开发智力的“珠心算…

MongoDB聚合运算符:$count

文章目录 语法使用举例在$group阶段中使用在$setWindowFields阶段使用 $count聚合运算符返回分组中文档的数量。从5.0开始支持。 语法 { $count: { } }$count不需要参数 使用 $count可以用于下列聚合阶段: $bucket$bucket$group$setWindowFields 在$group阶段中…

Apache Flink连载(三十五):Flink基于Kubernetes部署(5)-Kubernetes 集群搭建-1

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 ​编辑

List 集合遍历过程中删除元素避坑指南。

文章目录 1. 遍历2. 遍历过程中删除元素2.1 for 简单循环正向遍历方式2.2 for 简单循环反向遍历方式2.3 foreach 方式遍历删除2.4 Iterator的remove()方法2.5 <font color green> removeIf() &#xff08;推荐&#xff09;<green>2.6 Strem 方式 作为一名后端开发…

S1---FPGA硬件板级原理图实战导学

视频链接 FPGA板级实战导学01_哔哩哔哩_bilibili FPGA硬件板级原理图实战导学 【硬件电路设计的方法和技巧-哔哩哔哩】硬件电路设计的方法和技巧01_哔哩哔哩_bilibili&#xff08;40min&#xff09; 【高速板级硬件电路设计-哔哩哔哩】 高速板级硬件电路设计1_哔哩哔哩_bil…

网安播报|开源Xeno RAT特洛伊木马在GitHub上成为潜在威胁

1、开源Xeno RAT特洛伊木马在GitHub上成为潜在威胁 一种“设计复杂”的远程访问特洛伊木马&#xff08;RAT&#xff09;&#xff0c;称为Xeno RAT已在GitHub上提供&#xff0c;使其他参与者可以轻松访问&#xff0c;无需额外费用。开源RAT是用C#编写的&#xff0c;与Windows 10…

【Flutter 面试题】解释 Flutter的热重载(Hot Reload)功能

【Flutter 面试题】解释 Flutter的热重载&#xff08;Hot Reload&#xff09;功能 文章目录 写在前面解答补充说明 写在前面 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云社区专家博主&#xff0c;51CTO专家博主。2…

JVM运行时数据区——虚拟机栈

文章目录 1、虚拟机栈概述1.1、StackOverflowError1.2、OOM异常 2、栈的存储单位3、局部变量表3.1、局部变量表简介3.2、Slot 4、操作数栈5、栈顶缓存技术6、动态链接7、方法的调用7.1、方法调用的分类7.2、虚方法与非虚方法7.3、关于invokedynamic指令7.4、方法重写的本质7.5、…

StarRocks——中信建投基于StarRocks构建统一查询服务平台

目录 一、需求背景 1.1 数据加工链路复杂 1.2 大数据量下性能不足&#xff0c;查询响应慢 1.3 大量实时数据分散在各个业务系统&#xff0c;无法进行联合分析 1.4 缺少与预计算能力加速一些固定查询 二、构建统一查询服务平台 三、落地后的效果与价值 四、项目经验总结…

laravel ApiResponse接口统一响应封装

一&#xff0c;新增接口返回码配置文件 在config中新增配置文件apicode.php <?phpreturn [ apicodes>[/*** Message("OK")* 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上*/HTTP_OK > 200,/*** Message(&qu…

C#,K中心问题(K-centers Problem)的算法与源代码

1 K中心问题&#xff08;K-centers Problem&#xff09; k-centers problem: 寻找k个半径越小越好的center以覆盖所有的点。 比如&#xff1a;给定n个城市和每对城市之间的距离&#xff0c;选择k个城市放置仓库&#xff08;或ATM或云服务器&#xff09;&#xff0c;以使城市…

python实现ElGamal算法

ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法&#xff0c;基于公钥密码体制和椭圆曲线加密体系&#xff0c;其安全性是基于有限域上离散对数学问题的难解性。至今仍是一个安全性良好的公钥密码算法。既可用于加密又可用于数字签名的公钥密码体制。 数字签…

2.2_2 进程调度的时机、切换与过程、调度方式

文章目录 2.2_2 进程调度的时机、切换与过程、调度方式&#xff08;一&#xff09;进程调度的时机&#xff08;二&#xff09;进程调度的方式&#xff08;三&#xff09;进程的切换与过程 总结 2.2_2 进程调度的时机、切换与过程、调度方式 &#xff08;一&#xff09;进程调度…