玩转Linux系统之shell脚本轻松搭建LNMP平台架构

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Linux系统之shell脚本轻松搭建LNMP平台架构相关的知识,希望对你有一定的参考价值。

释义

在这里插入图片描述
提示:了解LNMP架构组成
L:表示Linux系统
N:表示nginx服务
M:表示mysql数据库
P:表示php、python、perl等等编程语言


工作原理

在这里插入图片描述

提示:要达到什么效果,一般流程,优化为最匹配当前场景的流程,做成脚本

  1. 环境部署:把源码服务安装包和依赖包,放在一个文件夹,若虚拟机则做成镜像挂载到/mnt目录下,如果之前安装mariadb-5.5.52-1.el7.x86_64等与之相冲突软件需要先卸载,否则,会导致失败!
    注意:为防止报错,请认真阅读注意事项!
    一、所有软件版本必须和教程一致,安装路径、设置数据存放路径也要一致。否则,需要调整脚本内容,才能运行成功!本例mysql设置密码123456验证,您可设置其他但必须要有,php测试文件里填写也要一致!!!
    二、mysql后面做了修改,所以要重启两个文件,一个是把它放到系统默认搜索路径之后用. /etc/profile命令刷新配置,注意.和后面文件路径之间要空格;再启动mysql才能用。
  2. 编辑脚本:镜像挂载到目录,vim编辑以下几个脚本文件(虚拟机环境为例,挂载的是centos7系统镜像,真实环境可以在线下载所需依赖包)
#!/bin/bash
#(一)安装依赖包
#环境检测
echo "帅哥!安装依赖包,请稍等..."
#检查有没有rpm安装的冲突软件
rpm  -q nginx &>/dev/null
if [ $? -eq 0 ];then rpm -e nginx--nodeps  ;fi
#安装Nginx依赖包
#挂载系统盘
mount /dev/cdrom /mnt/
#清理yum仓库缓存,并创建仓库文件
cd /etc/yum.repos.d/
rm -f  *
echo [yum]  > yum.repo 
echo name=yum  >> yum.repo 
echo baseurl=file:///mnt  >> yum.repo 
echo gpgcheck=0  >> yum.repo 
#先检查依赖包是否安装
rpm -qi pcre-devel &> /dev/null
if [ $? -ne 0 ]
then
yum -y install pcre-devel
else
echo "依赖包pcre-devel已安装"
fi

rpm -qi zlib-devel &> /dev/null
if [ $? -ne 0 ]
then
yum -y install zlib-devel
else
echo "依赖包zlib-devel已安装"
fi

#安装PHP软件依赖包
yum -y install gd libxml2-devel libjpeg-devel libpng-devel

安装依赖包如图:
在这里插入图片描述
在本地服务器用脚本设置ip地址

#!/bin/bash
sed -i '2c BOOTPROTO=static'   /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17c ONBOOT=yes'   /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17a IPADDR=192.168.1.2'  /etc/sysconfig/network-scripts/ifcfg-ens33
ifdown ens33;ifup ens33

使用x-shell上传Nginx安装包(也可在线下载安装)
在这里插入图片描述
编辑安装Nginx脚本:vim nginx.sh

#安装Nginx
#添加防火墙规则允许http、DNS服务流量通过
#!/bin/bash
systemctl start firewalld.service 
firewall-cmd  --add-service=http 
firewall-cmd --add-service=dns	
#创建nginx管理用户
useradd -M -s /sbin/nologin nginx
#解压
tar -zxf  nginx-1.12.0.tar.gz -C /usr/src/
cd /usr/src/nginx-1.12.0/	
#配置安装目录	
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
#编译并安装
make&&make install

#创建nginx符号链接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

执行安装Nginx脚本过程如图:
在这里插入图片描述
安装完成如下图:
在这里插入图片描述
安装mysql
演示,虚拟机环境,依赖包、安装包是在本地挂载光盘安装,真实环境,x-shell上床,脚本可做更改,当然路径也要做变化上传方法同上,mysql耗时很长,可以约妹去了,回来再看

#(二)安装MySql
#(1)解压安装cmake
echo "老铁!部署Cmake,请稍等..."
rpm -ivh /mnt/ncurses-devel-5.9-13.20130511.el7.x86_64.rpm &>/dev/null
tar zxf /mnt/cmake-2.8.6.tar.gz -C /usr/src
cd /usr/src/cmake-2.8.6/
./configure &>/dev/null
gmake  &>/dev/null
gmake install  &>/dev/null
echo "老铁!Cmake安装完毕"
#源码编译及安装mysql
#创建运行用户
groupadd mysql
useradd -M -s /sbin/nologin  mysql -g mysql
#部署MySql
#(2)安装MySql
echo "老铁!部署MySql,请稍等..."
tar zxf /mnt/mysql-5.6.36.tar.gz -C /usr/src
cd /usr/src/mysql-5.6.36/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all &>/dev/null
make  &>/dev/null
make install    &>/dev/null
 #(3)优化服务
 chown -R mysql:mysql /usr/local/mysql
rm -rf /etc/my.cnf
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cd /usr/local/mysql/scripts/
#注意:下面这行必须输入在同一行,否则报错!!!
/usr/local/mysql/scripts/mysql_install_db  --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ &>/dev/null
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile
#添加系统服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x  /etc/init.d/mysqld
chkconfig --add mysqld
echo "==========老铁!mysql干完了!==========="

约妹归来,看到提示,老铁!mysql干完了!证明成功。

安装PHP编辑脚本内容如下:

#安装PHP
tar zxf php-5.5.38.tar.gz -C /usr/src/
#切换到php源码包目录下          
cd /usr/src/php-5.5.38/ 
#配置php安装设置    
./configure --prefix=/usr/local/php5 \\
--with-gd \\
--with-zlib \\
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config \\
--with-config-file-path=/usr/local/php5 \\
--enable-mbstring \\
--enable-fpm \\
--with-jpeg-dir=/usr/lib  

#编译安装
make&&make install

#php配置文件            
cp php.ini-development /usr/local/php5/php.ini

#路径优化                                                                                                               
ln -s /usr/local/php5/bin/* /usr/local/bin
ln -s /usr/local/php5/sbin/* /usr/local/sbin
#创建php用户
useradd -M -s /sbin/nologin php	

#配置Nginx支持PHP环境
cp /usr/local/php5/etc/php-fpm.conf.default  /usr/local/php5/etc/php-fpm.conf
#编辑php-fpm配置文件
sed -i '25c pid = run/php-fpm.pid'  /usr/local/php5/etc/php-fpm.conf
sed -i '149c user = php'    /usr/local/php5/etc/php-fpm.conf
sed -i '150c group = php'   /usr/local/php5/etc/php-fpm.conf
#配置Nginx支持PHP解析
sed -i '44c root  /var/www/benet;'     /usr/local/nginx/conf/nginx.conf
sed -i '45c  index test.php index.html index.htm;'  /usr/local/nginx/conf/nginx.conf
#添加PHP-fpm支持
sed -i '46a location  ~ \\.php$ {'  /usr/local/nginx/conf/nginx.conf
sed -i '47a  root  /var/www/benet;'   /usr/local/nginx/conf/nginx.conf
sed -i '48a fastcgi_pass 127.0.0.1:9000;'  /usr/local/nginx/conf/nginx.conf
sed -i '49a fastcgi_index  index.php;'   /usr/local/nginx/conf/nginx.conf
sed -i '50a include  fastcgi.conf;'   /usr/local/nginx/conf/nginx.conf
sed -i '51a }'   /usr/local/nginx/conf/nginx.conf

#创建测试页面
mkdir -p /var/www/benet/
echo "<?php" >>/var/www/benet/test.php
text2='$link=mysqli_connect'
text3="('localhost','root','123456');"
echo "${text2}$text3" >>/var/www/benet/test.php
echo 'if($link) echo "mysql is ok";' >>/var/www/benet/test.php
echo 'mysqli_close($link);' >>/var/www/benet/test.php
echo "?>" >>/var/www/benet/test.php
#启动php-fpm模块
/usr/local/sbin/php-fpm
#启动Nginx服务
nginx
echo  恭喜!未来的比尔盖茨LNMP搭建成功

执行成功如下图:
在这里插入图片描述

  1. 约妹归来,看到以下提示,部署LNMP成功
    在这里插入图片描述
  2. 最后,别忘了手工给mysql设置密码
    mysqladmin -u root password
    mysql后面做了修改,需要重新加载配置文件,命令.和/etc/profile之间要空开
    . /etc/profile
  3. 测试PHP网页能访问MYSQL数据库,轻松搞定
    测试成功如图:
    在这里插入图片描述

注意事项

提示:企业环境不同,具体的管理体系有所差异,但是为安全,必须注意如下。
1、为提高安全性,Nginx默认的端口可以修改,也可以启用SSL模块,使其支持https协议。
2、方便管理,可以将存放数据的目录设置到统一的一块硬盘,并做结构化管理,以及备份,如果出现问题,能最快时间恢复。

3、重新加载配置文件 如果,有问题先重载配文件,再检查版本对不对,报错提示指向那个方面,轻松排除故障。


以上是关于玩转Linux系统之shell脚本轻松搭建LNMP平台架构的主要内容,如果未能解决你的问题,请参考以下文章

玩转Linux系统之轻松搭建Mysql读写分离集群

玩转Linux系统之轻松搭建Redis集群

玩转Linux系统之轻松搭建Mysql主从复制集群

[Linux] PHP程序员玩转Linux系列-lnmp环境的搭建

玩转Linux之Haproxy搭建群集

LNMP环境搭建以及配置