对于最简单的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.cnf
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf #输出/usr/local/mysql/lib重定向到/etc/ld.so.conf
ldconfig
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.cnf
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf #输出/usr/local/mysql/lib重定向到/etc/ld.so.conf
ldconfig
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/lib
if #if判断结束
ldconfig
else #如果上面命令没有执行成功的话就执行下面命令
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/lib
fi #if判断结束
ldconfig
else #上面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.conf
else #如果上面命令没有执行成功那么就执行以下命令
echo "没有php源码包文件" #输出"没有php源码包文件"
exit #结束执行此脚本
fi #if判断结束
}
while : #利用while循环
do
menu #执行函数menu
choice #执行函数choice
case $select in #利用case判断使用开始定义的变量变量select
1) #如果变量匹配1那么就执行下面函数install_nginx
install_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脚本的部署方式的好处就是可能你写完一个脚本,下次再遇到同样的情况可能你就只需要修改其中一些变量或者命令就可实现,可以大大的节省工作时间,和增高工作效率。