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

#!/bin/bash
#安装nginx
echo "安装nginx服务"
wget  http://nginx.org/download/nginx-1.11.4.tar.gz &>/dev/null
if [ $? -eq 0 ]
thenecho "nginx-1.11.4安装包下载完成"echo "--开始安装必要的依赖文件--"yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel  pcre pcre-devel &>/dev/nullif [ $? -eq 0 ]thenecho "依赖文件安装完成"echo "解压nginx安装包到/usr/local目录下"tar -xf nginx-1.11.4.tar.gz -C /usr/local/srccd /usr/local/src/nginx-1.11.4/echo "创建nginx运行用户www"useradd www -s /sbin/nologinecho "预编译nginx"./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --user=www --group=www &>/dev/nullif [ $? -eq 0 ]thenecho "预编译完成"echo "编译安装"make &>/dev/null && make install &>/dev/nullif [ $? -eq 0 ]thenecho "编译安装完成"echo "启动nginx服务"/usr/local/nginx/sbin/nginx &>/dev/nullngx=`ps -ef | grep nginx | wc -l`if [ $ngx -gt 1 ]thenecho "nginx启动成功"elseecho "nginx启动失败"fielseecho "编译安装失败"fielseecho "预编译失败"fielseecho "安装依赖文件失败"fielseecho "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 ]
thenecho "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/nullif [ $? -eq 0 ]thenecho "依赖文件下载成功"echo "安装libmcrypt"wget  https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz --no-check-certificate &>/dev/nullif [ $? -eq 0 ]thenecho "安装libmcrypt成功"tar xf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configure --prefix=/usr/local/libmcrypt &>/dev/null && make &>/dev/null  && make install &>/dev/nullcdtar xf php-5.6.6.tar.gz -C /usr/local/srcecho "预编译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/nullif [ $? -eq 0 ]thenecho "PHP预编译成功"echo "编译安装PHP"make &>/dev/null && make install &>/dev/nullif [ $? -eq 0 ]thenecho "编译安装PHP成功"echo "生成php.ini配置文件"cp /usr/local/src/php-5.6.6/php.ini-production  /usr/local/php5.6/etc/php.iniecho "修改fpm配置文件"cd /usr/local/php5.6/etc/cp php-fpm.conf.default php-fpm.confsed -i 's/user = nobody/user = www/g' php-fpm.confsed -i 's/group = nobody/group = www/g' /usr/local/php5.6/etc/php-fpm.confsed -i 's/listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/g' php-fpm.confsed -i 's/pm.max_children = 5/pm.max_children =300/g' php-fpm.confsed -i 's/pm.start_servers = 2/pm.start_servers =20/g' php-fpm.confsed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g' php-fpm.confsed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g' php-fpm.confsed -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-fpmchmod +x /etc/init.d/php-fpmchkconfig --add php-fpmchkconfig php-fpm on/etc/init.d/php-fpm start &>/dev/nullphp=`netstat -antpu | grep php-fpm | wc -l`if [ $php -gt 0 ]thenecho "php服务启动成功"echo "查看PHP是否安装mysql模块"mokuai=`/usr/local/php5.6/bin/php -m |grep mysqli  |wc -l`if [ $mokuai -eq 1 ]thenecho "PHP连接mysql模块已经安装"elseecho "PHP连接mysql模块安装失败"fielseecho "PHP服务启动失败"fielseecho "编译安装失败"fielseecho "PHP预编译失败"fielseecho "安装libmcrypt失败"fielseecho "依赖文件下载失败"fi
elseecho "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 ]
thenecho "mysql安装包下载完毕"echo "卸载boost"yum -y remove boost-* &>/dev/nullrpm -ivh mysql-community-5.7.26-1.el7.src.rpm &>/dev/null#下载解压工具yum install -y bzip2 &>/dev/nullif [ $? -eq 0 ]thenecho "bzip2解压缩工具下载完成"cd /root/rpmbuild/SOURCES/tar xf boost_1_59_0.tar.bz2  -C  /root/echo "卸载系统自带的mysql"yum -y remove mysql* &>/dev/nullyum -y remove mariadb* &>/dev/nullecho "安装mysql依赖包"yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel &>/dev/nullif [ $? -eq 0 ]thenecho "mysql依赖包下载完成"echo "创建mysql用户和用户组"groupadd mysql && useradd -M -s /sbin/nologin -r -g mysql mysqlecho "创建mysql数据库存放位置并修改目录权限"mkdir -p /data/mysql/{data,log} && chown -R mysql:mysql /data/mysqlecho "解压源码包"cd /root/rpmbuild/SOURCES/tar xf mysql-5.7.26.tar.gz  -C  /root/cdcd mysql-5.7.26echo "预编译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/nullif [ $? -eq 0 ]thenecho "mysql预编译成功"echo "编译mysql"make  -j  $( grep processor /proc/cpuinfo | wc -l) &>/dev/nullif [ $? -eq 0 ]thenecho "mysql编译完成"echo "安装mysql"make install &>/dev/nullif [ $? -eq 0 ]thenecho "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.cnfecho "生成服务启动脚本"cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchmod +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/dataecho "启动数据库"/etc/init.d/mysqld  startecho "添加path路径"ln -s /usr/local/mysql/bin/* /usr/local/bin/read -s -p  "请修改mysql密码:" passwdmysqladmin -u root password "$passwd"elseecho "mysql安装失败"fielseecho "mysql编译失败"fielseecho "mysql预编译失败"fielseecho "mysql依赖包下载失败"fielseecho "解压缩工具安装失败"fi
elseecho "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.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中map函数

map(str, path): map函数会将path中的每一个元素传递给str函数,从而将它们转换为字符串。 如果path是一个数字列表,例如[1, 2, 3],那么map(str, path)将返回[1, 2, 3]。 在写二叉树时用到map给树节点进行str转换是错的。 map(s…

xsslabs第五关

看一下源码 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script> window.alert function() { confirm("完成的不错&#xff01…

MATLAB知识点:条件判断 if-elseif-else-end语句

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 if、elseif、…

webstorm 创建运行纯Typescript项目

创建一个空项目&#xff0c;在项目根目录创建一个tsconfig.json文件自动配置&#xff1a; 打开终端输入tsc --init&#xff0c;即可自动生成tsconfig.json文件手动配置&#xff1a; 在项目根目录下新建一个tsconfig.json文件,并配置如下内容 具体配置可以直接使用下面的配置&am…

【JavaEE】_Spring MVC项目之建立连接

目录 1. Spring MVC程序编写流程 2. 建立连接 2.1 RequestMapping注解介绍 2.2 RequestMapping注解使用 2.2.1 仅修饰方法 2.2.2 修饰类与方法 2.3 关于POST请求与GET请求 2.3.1 GET请求 2.3.2 POST请求 2.3.3 限制请求方法 1. Spring MVC程序编写流程 1. 建立连接&…

如何开好一家汽车美容店,汽车美容保养与装饰教学

一、教程描述 本套教程共由17张VCD组合而成&#xff0c;教程内容主要包括&#xff1a;美容店的设立和管理&#xff0c;汽车系统与内部结构&#xff0c;汽车美容工具与美容设备&#xff0c;美容用品的选择与使用&#xff0c;车身打蜡镀膜与内外清洁&#xff0c;车身抛光与漆面处…

Debezium发布历史162

原文地址&#xff1a; https://debezium.io/blog/2023/09/22/debezium-2-4-cr1-released/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Debezium 2.4.0.CR1 Released September 22, 2023 by Chris Cranford r…

(介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)

前言 本文详细介绍了如何利用物联网技术,通过NodeMCU ESP8266(ESP-12F)模块连接到新版的OneNet平台,使用MQTT协议实现数据的上传与指令的下发。文中首先对NodeMCU ESP8266模块及其特性进行了简介,随后详细阐述了如何配置和使用MQTT协议连接到OneNet平台,实现温湿度数据的…

Azkaban 大数据 任务调度

参考视频&#xff1a;尚硅谷大数据Azkaban 3.x教程&#xff08;全新发布&#xff09;_哔哩哔哩_bilibili Azkaban&#xff1a; 是一个定时、批量工作流任务调度器(工作流程调度&#xff0c;定时调度) 常见的开源调度系统&#xff1a; 简单单一的任务调度&#xff1a; Linux的…

嵌入式驱动学习第一周——Linux错误码以及 IS_ERR、ERR_PTR、PTR_ERR

前言 本节来学习Linux错误码&#xff0c;因为内核中的函数常常返回指针&#xff0c;如果出错&#xff0c;也希望能够通过返回的指针体现出来。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可以关注本博…

【正点原子STM32】RNG硬件随机数(随机数发生器、真随机和伪随机、应用场景、RNG结构和原理、RNG相关寄存器和HAL库驱动、RNG基本驱动步骤)

一、RNG简介 二、RNG框图介绍 三、RNG相关寄存器介绍 四、RNG相关HAL库驱动介绍 五、RNG基本驱动步骤 六、编程实战 七、总结 一、RNG简介 随机数发生器&#xff08;RNG&#xff09;在计算机科学和密码学中具有广泛的应用场景&#xff0c;包括但不限于以下几个方面&#xff1a…

QML中动态表格修改数据

1.qml文件中的实现代码 import QtQuick 2.15 import QtQuick.Window 2.15import QtQuick.Controls 2.0 import Qt.labs.qmlmodels 1.0 import QtQuick.Layouts 1.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")TableModel{id:table_model…

Python内置函数11——globals()、locals()

文章目录 概要基础用法 概要 globals()和locals()都是内置函数&#xff0c;用于获取当前命名空间中的变量。 globals()函数返回全局命名空间的字典&#xff0c;包括全局变量、函数和模块。它返回一个表示全局命名空间的字典。你可以使用该函数来查看和修改全局命名空间中的变量…

深入剖析k8s-控制器思想

引言 本文是《深入剖析Kubernetes》学习笔记——《深入剖析Kubernetes》 正文 控制器都遵循K8s的项目中一个通用的编排模式——控制循环 for {实际状态 : 获取集群中对象X的实际状态期望状态 : 获取集群中对象X的期望状态if 实际状态 期望状态 {// do nothing} else {执行…

buuctf misc做题笔记

喵喵喵 使用stegsolve.jar&#xff0c;按BGR顺序提取出一个png图片&#xff0c;是一个一半得二维码&#xff0c;修改图片高度后&#xff0c;解析出一个百度网盘地址&#xff0c;https://pan.baidu.com/s/1pLT2J4f 下载得到压缩包flag.rar。解压成功&#xff0c;但是报一个出错…

4 在QEMU硬件模拟器中运行开源鸿蒙OpenHarmony4.1的操作系统,无需实体开发板

在QEMU硬件模拟器中运行开源鸿蒙OpenHarmony4.1的操作系统&#xff0c;无需实体开发板 作者将狼才鲸日期2024-03-01 先下载源码和编译程序&#xff1a; 查看 开源鸿蒙OpenHarmony4.1源码下载、编译&#xff0c;生成OHOS_Image可执行文件的最简易流程 我准备在QEMU模拟器中运行…

LangChain---大型语言模型(LLM)的标准接口和编程框架

1.背景说明 公司在新的一年规划中突然提出要搞生成式AI(GenAI)的相关东西&#xff0c;在公司分享的参考资料中了解到了一些相关的信息&#xff0c;之所以想到使用LangChain&#xff0c;是因为在应用中遇到了瓶颈问题&#xff0c;除了已经了解和研究过的OpenAI的ChatGpt&#xf…

蓝桥杯Java B组历年真题(2013年-2019年)

一、2013年真题 1、世纪末的星期 使用日期类判断就行&#xff0c;这里使用LocalDate&#xff0c;也可以使用Calendar类 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:无需package // 2: 类名必须Main, 不可修改p…

1小时网络安全事件报告要求,持安零信任如何帮助用户应急响应?

12月8日&#xff0c;国家网信办起草发布了《网络安全事件报告管理办法&#xff08;征求意见稿&#xff09;》&#xff08;以下简称“办法”&#xff09;。拟规定运营者在发生网络安全事件时应当及时启动应急预案进行处置。 1小时报告 按照《网络安全事件分级指南》&#xff0c…

速盾:动态网站用cdn更慢吗

当谈到网站速度时&#xff0c;内容传递网络&#xff08;Content Delivery Network&#xff0c;CDN&#xff09;是不可忽视的一个因素。很多人可能有疑惑&#xff0c;动态网站使用CDN是否会导致加载速度变慢。为了解决这个问题&#xff0c;我们需要了解动态网站和CDN的工作原理&…