一键部署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.cnfecho "/usr/local/mysql/lib" >> /etc/ld.so.conf #输出/usr/local/mysql/lib重定向到/etc/ld.so.confldconfig 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.cnfecho "/usr/local/mysql/lib" >> /etc/ld.so.conf #输出/usr/local/mysql/lib重定向到/etc/ld.so.confldconfig 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/libif #if判断结束ldconfigelse #如果上面命令没有执行成功的话就执行下面命令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/libfi #if判断结束ldconfigelse #上面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.confelse #如果上面命令没有执行成功那么就执行以下命令echo "没有php源码包文件" #输出"没有php源码包文件"exit #结束执行此脚本fi #if判断结束}while : #利用while循环
do
menu #执行函数menu
choice #执行函数choice
case $select in #利用case判断使用开始定义的变量变量select
1) #如果变量匹配1那么就执行下面函数install_nginxinstall_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脚本的部署方式的好处就是可能你写完一个脚本,下次再遇到同样的情况可能你就只需要修改其中一些变量或者命令就可实现,可以大大的节省工作时间,和增高工作效率。
一键部署LNMP服务相关推荐
- shell脚本 一键部署 Lnmp 及社区论坛 服务架构
shell脚本 一键部署 Lnmp 一键部署 Lnmp 一键部署 注:亲,记得把所需要的软件包,先放到/opt目录中:以及该机子的内存大小.核数先设置好! #!/bin/bash #先配置好yum e ...
- LNMP介绍及一键部署LNMP架构
目录 一.LNMP 1.LNMP介绍 ①LNMP工作原理 ②LAMP工作原理 2.LAMP和LNMP的区别 3.编译安装的优点 4.各组件的主要作用 二.脚本一键部署LNMP架构 一.LNMP 1.L ...
- shell脚本一键部署LNMP
前言 使用shell脚本一键部署LNMP需要的安装包 nginx-1.15.9.tar.gz mysql-boost-5.7.20.tar.gz php-7.1.10.tar.bz2 Discuz_X ...
- 一键部署LNMP平台脚本
分享一个一键部署LNMP平台脚本,设置通过systemd管理Nginx服务,好用! #!/bin/bash yum -y install gcc openssl-devel pcre-devel ta ...
- LNMP架构搭建和一键部署LNMP
文章目录 一.LNMP工作原理 1.LNMP工作原理 2.LAMP工作原理 3.LAMP和LNMP的区别 二.LNMP部署 1.安装nginx服务 1.1 安装nginx的依赖包 1.2 创建ngin ...
- LNMP源码编译安装及一键部署LNMP架构
目录 一.LNMP 1.LNMP介绍 1.1 LNMP工作原理 1.2.LAMP工作原理 2.LAMP和LNMP的区别 3.编译安装的优点 4.各组件的主要作用 三.LNMP架构的部署 1.安装ngi ...
- 终极实践:部署LNMP服务
部署LNMP服务 服务器系统:CentOS 7.7 准备工作 安装编译环境 首先要让安装主机具备编译程序源码的环境.这需要具备C语言.C++语言.Perl语言的编译器,以及各种常见的编译支持函数库程序 ...
- shell脚本一键部署lnmp架构
shell脚本一键部署lnmp架构 1. 创建存放脚本的目录 2. 创建脚本文件 3. 编写脚本 4. 通过IP地址直接访问PHP界面 1. 创建存放脚本的目录 [root@localhost ~]# ...
- 一键部署 LNMP(RPM 包版本)
#!/bin/bash # 一键部署 LNMP(RPM 包版本) # 使用 yum 安装部署 LNMP,需要提前配置好 yum 源,否则该脚本会失败 # 本脚本使用于 centos7.2 或 RHEL ...
最新文章
- TableLayout 表格布局,FrameLaout 帧布局 ,AbsoluteLayout绝对布局的分析
- matlab 将矩阵中的0置为Inf(邻接矩阵)
- python装饰器函数-python装饰器1:函数装饰器详解
- gym103117L. Spicy Restaurant
- 无法删除所有指定的值_SQL-插入、更新、删除、创建
- matlab找距离最近的元素,如何用MATLAB找到给定坐标的最近点?
- rxjava背压_Android Rxjava :最简单全面背压讲解 (Flowable)
- 图像语义分析--深度学习方法
- 常见字符与ASCII码值对照表
- gnu/stubs-32.h
- qt 表格中插入一行_Qt在表格中加入控件
- WordPress主题可视化建站The7 V8.7
- 网络信息安全——网络阶段笔记总结--jf
- oracle 判断节气,FullCalendar应用——整合农历节气和节日
- 半导体术语的中英文版本
- 【深度学习】深度学习模型
- 软件测试行业发展前景分析
- 计算机高考英语,高考英语优秀作文 Computer(计算机)
- 未来的全能保姆机器人作文_未来的保姆机器人
- 为何优秀的程序员不断离开?,中高级Java面试中你不得不会的知识点
热门文章
- 趣谈网络协议第8讲——世界这么大,我想出网关:欧洲十国游与玄奘西行
- 管理SQL Server AlwaysOn(1)——基础维护
- nginx反向代理二级目录 导致vue项目静态文件css js访问不到
- 赋能企业安全 H3C F1000-C8160云防火墙微评测
- 大数据和人工智能关系的基本介绍
- 大二项目实战:使用flutter开发的学生端app【云山印尼语学习辅助平台】
- JAVA redis缓存过期_失效java服务器
- CentOS下yum安装MySQL8.0
- 首发仿拼多多源码,程序完整版+安装教程+完美运营
- 电大计算机本科考试试题,电大计算机考试本科试题电大计算机考试本科试题.doc...