当前位置: 首页 > news >正文

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.

相关文章:

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…...

算法复习之二分【备战蓝桥杯】

二分模板一共有两个,分别适用于不同情况。 算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l r时,我们就找到了目标值。 版本一 当我们将区间[l, r]划分成[l, mid]和[mid 1, r]时,其更…...

如何做代币分析:以 SHIB 币为例

作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:SHIB Token Dashboard (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关…...

Springboot+vue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层…...

https://htmlunit.sourceforge.io/

https://htmlunit.sourceforge.io/ 爬虫 HtmlUnit – Welcome to HtmlUnit HtmlUnit 3.11.0 API https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.70.0 https://s01.oss.sonatype.org/service/local/repositories/releases/content/org/htmlunit…...

回文链表(leetcode)

我自己第一个写的代码: bool isPalindrome(struct ListNode* head){struct ListNode* tail NULL;struct ListNode* pos NULL;if( head->next NULL){return true;}while( 1 ){if( head->next NULL || (head->next->next NULL && head->…...

大语言模型(LLM)技术名词表(一)

LLMs on a Phone:指在手机设备上运行的大型语言模型。 Scalable Personal AI:指用户可以在个人设备上对AI模型进行微调的技术。 Responsible Release:发布AI模型时考虑社会、法律和伦理影响的做法。 Multimodality:AI模型能处理…...

C++ 快速排序快速选择

目录 1、75. 颜色分类 2、912. 排序数组 3、 215. 数组中的第K个最大元素 4、LCR 159. 库存管理 III 1、75. 颜色分类 思路:利用快速排序思路,使用三指针分块进行优化。 [0,left]——小于key[left1,right-1]——等于key[right,nums.size()]——大于k…...

雅马哈伺服器TS-S系列说明具体详情内容可参看PDF目录内容

雅马哈伺服器TS-S系列说明具体详情内容可参看PDF目录内容...

SpringBoot底层原理

SpringBoot底层原理 一 配置优先级 1.配置方式 Springboot中支持三种配置方式,分别为: application.propertiesapplication.ymlapplication.yaml 2.配置优先级 当存在多份配置文件时,配置文件会按照它们的优先级生效。 优先级从高到底…...

【golang】25、图片操作

用 “github.com/fogleman/gg” 可以画线, 框 用 “github.com/disintegration/imaging” 可以变换颜色 一、渲染 1.1 框和字 import "github.com/fogleman/gg"func DrawRectangles(inPath string, cRects []ColorTextRect, fnImgNameChange FnImgNameChange) (st…...

kswapd0挖矿病毒攻击记录

文章目录 一、起因与病毒分析1、起因2、阿里云告警2.1 恶意脚本代码执行12.2 恶意脚本代码执行22.3恶意脚本代码执行32.4 恶意脚本代码执行4 3、病毒简单分析3.1 病毒的初始化3.2 病毒本体执行 4、总结 二、ubuntu自救指南1、病毒清理2、如何防御 一、起因与病毒分析 1、起因 …...

如何使用 takeUntil RxJS 操作符来声明性地管理订阅

简介 Angular 处理取消订阅可观察对象的操作,比如从 HTTP 服务返回的可观察对象或者使用 async 管道时。然而,对于其他情况,管理所有订阅并确保取消长期存在的订阅可能会变得困难。而且,取消大部分订阅的策略也会带来自己的问题。…...

在Centos中用Docker部署oracle-12c

一、介绍 Oracle 12c是Oracle 11g的后续版本。12c代表云计算(Cloud Computing),这是Oracle在该版本中强调的一个关键概念。它具有多租户架构、数据库内存、安全增强、大数据管理和自动化管理等功能。它被广泛应用于企业级应用程序和大型数据…...

JS进阶——高级技巧

版权声明 本文章来源于B站上的某马课程,由本人整理,仅供学习交流使用。如涉及侵权问题,请立即与本人联系,本人将积极配合删除相关内容。感谢理解和支持,本人致力于维护原创作品的权益,共同营造一个尊重知识…...

TG-ADMIN 权限管理系统

项目简介 该项目是一款基于 SpringBoot + Vue2 + Jwt + ElementUi的 RBAC模型管理系统。 主要以自定义拦截器和jwt结合进行权限验证 通过自定义指令实现按钮级别权限,使用经典的RBAC模型 什么是RBAC? 1、RBAC模型概述 RBAC模型(Role-Based Access Control:基于角色的…...

十五届蓝桥杯第三期模拟赛题单(C++、java、Python)

备战2024年蓝桥杯 省赛第三期模拟赛题单 备战Python大学A组 第一题 【问题描述】 请问 2023 有多少个约数?即有多少个正整数,使得 2023 是这个正整数的整数倍。 【问题描述】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果…...

嵌入式驱动学习第一周——git的使用

前言 本文主要介绍git的使用,包括介绍git,gitee,以及使用gitee创建仓库并托管代码 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏&#xf…...

界面控件DevExpress .NET MAUI v23.2新版亮点 - 拥有全新的彩色主题

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布,该版本拥有众多…...

大语言模型LLM Pro+中Pro+(Prompting)的意义

—— Pro ,即Prompting,构造提示 1.LLM Pro中Pro(Prompting)的意义 Prompting不仅是大语言模型交互和调用的一种高效手段,而且已成为推动模型泛化能力和应用灵活性的关键技术路径,它不仅极大地拓展了模型功…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...