shell编程之【一键安装 lanmp】

脚本说明



本脚本可以实现一键安装 lamp 或者 lnmp,具体要求如下:

1、要求是一台可以上外网的新机器

2、支持 centos6 系统,不区分32位,64位

3、支持 lamp 和 lnmp

4、mysql 支持 5.1 和 5.6 两个版本

5、php 支持 5.4 和 5.6 两个版本

6、支持 apache2.2

7、支持 nginx1.8

脚本实现



[[email protected] ~]# cd /usr/local/sbin/

[[email protected] sbin]# vim lanmp.sh


#!/bin/bash

echo "It will install lamp or lnmp."

sleep 1

##check last command is OK or not.

check_ok() {

if [ $? != 0 ]

then

echo "Error, Check the error log."

exit 1

fi

}

##get the archive of the system,i686 or x86_64.

ar=`arch`

##close seliux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config

selinux_s=`getenforce`

if [ $selinux_s == "Enforcing"  -o $selinux_s == "enforcing" ]

then

setenforce 0

fi

##close iptables

iptables-save > /etc/sysconfig/iptables_`date +%s`

iptables -F

service iptables save

##if the packge installed ,then omit.

myum() {

if ! rpm -qa|grep -q "^$1"

then

yum install -y $1

check_ok

else

echo $1 already installed.

fi

}

## install some packges.

for p in gcc wget perl perl-devel libaio libaio-devel pcre-devel zlib-devel

do

myum $p

done

##install epel.

if rpm -qa epel-release >/dev/null

then

rpm -e epel-release

fi

if ls /etc/yum.repos.d/epel-6.repo* >/dev/null 2>&1

then

rm -f /etc/yum.repos.d/epel-6.repo*

fi

wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo

##function of installing mysqld.

install_mysqld() {

echo "Chose the version of mysql."

select mysql_v in 5.1 5.6

do

case $mysql_v in

5.1)

cd /usr/local/src

[ -f mysql-5.1.72-linux-$ar-glibc23.tar.gz ] || wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72-linux-$ar-glibc23.tar.gz

tar zxvf mysql-5.1.72-linux-$ar-glibc23.tar.gz

check_ok

[ -d /usr/local/mysql ] && /bin/mv /usr/local/mysql /usr/local/mysql_`date +%s`

check_ok

mv mysql-5.1.72-linux-$ar-glibc23 /usr/local/mysql

check_ok

if ! grep ‘^mysql:‘ /etc/passwd

then

useradd -M mysql -s /sbin/nologin

check_ok

fi

myum compat-libstdc++-33

[ -d /data/mysql ] && /bin/mv /data/mysql /data/mysql_`date +%s`

check_ok

mkdir -p /data/mysql

chown -R mysql:mysql /data/mysql

cd /usr/local/mysql

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

check_ok

/bin/cp support-files/my-huge.cnf /etc/my.cnf

check_ok

sed -i ‘/^\[mysqld\]$/a\datadir = /data/mysql‘ /etc/my.cnf

/bin/cp support-files/mysql.server /etc/init.d/mysqld

sed -i ‘s#^datadir=#datadir=/data/mysql#‘ /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

service mysqld start

check_ok

break

;;

5.6)

cd /usr/local/src

[ -f mysql-5.6.26-linux-glibc2.5-$ar.tar.gz ] || wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.26-linux-glibc2.5-$ar.tar.gz

tar zxvf mysql-5.6.26-linux-glibc2.5-$ar.tar.gz

check_ok

[ -d /usr/local/mysql ] && /bin/mv /usr/local/mysql /usr/local/mysql_`date +%s`

check_ok

mv mysql-5.6.26-linux-glibc2.5-$ar /usr/local/mysql

if ! grep ‘^mysql:‘ /etc/passwd

then

useradd -M mysql -s /sbin/nologin

fi

myum compat-libstdc++-33

[ -d /data/mysql ] && /bin/mv /data/mysql /data/mysql_`date +%s`

check_ok

mkdir -p /data/mysql

chown -R mysql:mysql /data/mysql

cd /usr/local/mysql

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

check_ok

/bin/cp support-files/my-default.cnf /etc/my.cnf

check_ok

sed -i ‘/^\[mysqld\]$/a\datadir = /data/mysql‘ /etc/my.cnf

/bin/cp support-files/mysql.server /etc/init.d/mysqld

sed -i ‘s#^datadir=#datadir=/data/mysql#‘ /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

service mysqld start

check_ok

break

;;

*)

echo "only 1(5.1) or 2(5.6)"

exit 1

;;

esac

done

}

##function of install httpd.

install_httpd() {

echo "Install apache version 2.2."

cd /usr/local/src

[ -f httpd-2.2.16.tar.gz ] || wget  http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz

tar zxvf  httpd-2.2.16.tar.gz && cd httpd-2.2.16

check_ok

./configure \

--prefix=/usr/local/apache2 \

--with-included-apr \

--enable-so \

--enable-deflate=shared \

--enable-expires=shared \

--enable-rewrite=shared \

--with-pcre

check_ok

make && make install

check_ok

}

##function of install lamp‘s php.

install_php() {

echo -e "Install php.\nPlease chose the version of php."

select php_v in 5.4 5.6

do

case $php_v in

5.4)

cd /usr/local/src/

[ -f php-5.4.45.tar.bz2 ] || wget ‘http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror‘ -O php-5.4.45.tar.bz2

tar jxvf php-5.4.45.tar.bz2 && cd php-5.4.45

for p in openssl-devel bzip2-devel \

libxml2-devel curl-devel libpng-devel \

libjpeg-devel freetype-devel libmcrypt-devel\

libtool-ltdl-devel perl-devel

do

myum $p

done

check_ok

./configure \

--prefix=/usr/local/php \

--with-apxs2=/usr/local/apache2/bin/apxs \

--with-config-file-path=/usr/local/php/etc  \

--with-mysql=/usr/local/mysql \

--with-libxml-dir \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-zlib-dir \

--with-bz2 \

--with-openssl \

--with-mcrypt \

--enable-soap \

--enable-gd-native-ttf \

--enable-mbstring \

--enable-sockets \

--enable-exif \

--disable-ipv6

check_ok

make && make install

check_ok

[ -f /usr/local/php/etc/php.ini ] || /bin/cp php.ini-production  /usr/local/php/etc/php.ini

break

;;

5.6)

cd /usr/local/src/

[ -f php-5.6.6.tar.gz ] || wget http://mirrors.sohu.com/php/php-5.6.6.tar.gz

tar zxvf php-5.6.6.tar.gz &&   cd php-5.6.6

for p in openssl-devel bzip2-devel \

libxml2-devel curl-devel libpng-devel \

libjpeg-devel freetype-devel libmcrypt-devel\

libtool-ltdl-devel perl-devel

do

myum $p

done

./configure \

--prefix=/usr/local/php \

--with-apxs2=/usr/local/apache2/bin/apxs \

--with-config-file-path=/usr/local/php/etc  \

--with-mysql=/usr/local/mysql \

--with-libxml-dir \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-zlib-dir \

--with-bz2 \

--with-openssl \

--with-mcrypt \

--enable-soap \

--enable-gd-native-ttf \

--enable-mbstring \

--enable-sockets \

--enable-exif \

--disable-ipv6

check_ok

make && make install

check_ok

[ -f /usr/local/php/etc/php.ini ] || /bin/cp php.ini-production  /usr/local/php/etc/php.ini

break

;;

*)

echo "only 1(5.4) or 2(5.6)"

;;

esac

done

}

##function of apache and php configue.

join_apa_php() {

sed -i ‘/AddType .*.gz .tgz$/a\AddType application\/x-httpd-php .php‘ /usr/local/apache2/conf/httpd.conf

check_ok

sed -i ‘s/DirectoryIndex index.html/DirectoryIndex index.php index.html index.htm/‘ /usr/local/apache2/conf/httpd.conf

check_ok

cat > /usr/local/apache2/htdocs/index.php <<EOF

<?php

phpinfo();

?>

EOF

if /usr/local/php/bin/php -i |grep -iq ‘date.timezone => no value‘

then

sed -i ‘/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"‘  /usr/local/php/etc/php.ini

fi

/usr/local/apache2/bin/apachectl restart

check_ok

}

##function of check service is running or not, example nginx, httpd, php-fpm.

check_service() {

if [ "$1" == "phpfpm" ]

then

s="php-fpm"

else

s=$1

fi

n=`ps aux |grep "$s"|wc -l`

if [ $n -gt 1 ]

then

echo "$1 service is already started."

else

if [ -f /etc/init.d/$1 ]

then

/etc/init.d/$1 start

check_ok

else

install_$1

fi

fi

}

##function of install lamp

lamp() {

check_service mysqld

check_service httpd

install_php

join_apa_php

echo "LAMP done,Please use ‘http://your ip/index.php‘ to access."

}

##function of install nginx

install_nginx() {

cd /usr/local/src

[ -f nginx-1.8.0.tar.gz ] || wget http://nginx.org/download/nginx-1.8.0.tar.gz

tar zxvf nginx-1.8.0.tar.gz

cd nginx-1.8.0

myum pcre-devel

./configure --prefix=/usr/local/nginx

check_ok

make && make install

check_ok

if [ -f /etc/init.d/nginx ]

then

/bin/mv /etc/init.d/nginx  /etc/init.d/nginx_`date +%s`

fi

curl http://www.apelearn.com/study_v2/.nginx_init  -o /etc/init.d/nginx

check_ok

chmod 755 /etc/init.d/nginx

chkconfig --add nginx

chkconfig nginx on

curl http://www.apelearn.com/study_v2/.nginx_conf -o /usr/local/nginx/conf/nginx.conf

check_ok

service nginx start

check_ok

echo -e "<?php\n    phpinfo();\n?>" > /usr/local/nginx/html/index.php

check_ok

}

##function of install php-fpm

install_phpfpm() {

echo -e "Install php.\nPlease chose the version of php."

select php_v in 5.4 5.6

do

case $php_v in

5.4)

cd /usr/local/src/

[ -f php-5.4.45.tar.bz2 ] || wget ‘http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror‘ -O php-5.4.45.tar.bz2

tar jxvf php-5.4.45.tar.bz2 && cd php-5.4.45

for p in  openssl-devel bzip2-devel \

libxml2-devel curl-devel libpng-devel \

libjpeg-devel freetype-devel libmcrypt-devel\

libtool-ltdl-devel perl-devel

do

myum $p

done

if ! grep -q ‘^php-fpm:‘ /etc/passwd

then

useradd -M -s /sbin/nologin php-fpm

check_ok

fi

./configure \

--prefix=/usr/local/php-fpm \

--with-config-file-path=/usr/local/php-fpm/etc \

--enable-fpm \

--with-fpm-user=php-fpm \

--with-fpm-group=php-fpm \

--with-mysql=/usr/local/mysql \

--with-mysql-sock=/tmp/mysql.sock \

--with-libxml-dir \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-zlib-dir \

--with-mcrypt \

--enable-soap \

--enable-gd-native-ttf \

--enable-ftp \

--enable-mbstring \

--enable-exif \

--enable-zend-multibyte \

--disable-ipv6 \

--with-pear \

--with-curl \

--with-openssl

check_ok

make && make install

check_ok

[ -f /usr/local/php-fpm/etc/php.ini ] || /bin/cp php.ini-production  /usr/local/php-fpm/etc/php.ini

if /usr/local/php-fpm/bin/php -i |grep -iq ‘date.timezone => no value‘

then

sed -i ‘/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"‘  /usr/local/php-fpm/etc/php.ini

check_ok

fi

[ -f /usr/local/php-fpm/etc/php-fpm.conf ] || curl http://www.apelearn.com/study_v2/.phpfpm_conf -o /usr/local/php-fpm/etc/php-fpm.conf

[ -f /etc/init.d/phpfpm ] || /bin/cp sapi/fpm/init.d.php-fpm /etc/init.d/phpfpm

chmod 755 /etc/init.d/phpfpm

chkconfig phpfpm on

service phpfpm start

check_ok

break

;;

5.6)

cd /usr/local/src/

[ -f php-5.6.6.tar.gz ] || wget http://mirrors.sohu.com/php/php-5.6.6.tar.gz

tar zxvf php-5.6.6.tar.gz &&   cd php-5.6.6

for p in  openssl-devel bzip2-devel \

libxml2-devel curl-devel libpng-devel \

libjpeg-devel freetype-devel libmcrypt-devel\

libtool-ltdl-devel perl-devel

do

myum $p

done

if ! grep -q ‘^php-fpm:‘ /etc/passwd

then

useradd -M -s /sbin/nologin php-fpm

fi

check_ok

./configure \

--prefix=/usr/local/php-fpm \

--with-config-file-path=/usr/local/php-fpm/etc \

--enable-fpm \

--with-fpm-user=php-fpm \

--with-fpm-group=php-fpm \

--with-mysql=/usr/local/mysql \

--with-mysql-sock=/tmp/mysql.sock \

--with-libxml-dir \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-zlib-dir \

--with-mcrypt \

--enable-soap \

--enable-gd-native-ttf \

--enable-ftp \

--enable-mbstring \

--enable-exif \

--disable-ipv6 \

--with-pear \

--with-curl \

--with-openssl

check_ok

make && make install

check_ok

[ -f /usr/local/php-fpm/etc/php.ini ] || /bin/cp php.ini-production  /usr/local/php-fpm/etc/php.ini

if /usr/local/php-fpm/bin/php -i |grep -iq ‘date.timezone => no value‘

then

sed -i ‘/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"‘  /usr/local/php-fpm/etc/php.ini

check_ok

fi

[ -f /usr/local/php-fpm/etc/php-fpm.conf ] || curl http://www.apelearn.com/study_v2/.phpfpm_conf -o /usr/local/php-fpm/etc/php-fpm.conf

check_ok

[ -f /etc/init.d/phpfpm ] || /bin/cp sapi/fpm/init.d.php-fpm /etc/init.d/phpfpm

chmod 755 /etc/init.d/phpfpm

chkconfig phpfpm on

service phpfpm start

check_ok

break

;;

*)

echo ‘only 1(5.4) or 2(5.6)‘

;;

esac

done

}

##function of install lnmp

lnmp() {

check_service mysqld

check_service nginx

check_service phpfpm

echo "The lnmp done, Please use ‘http://your ip/index.php‘ to access."

}

read -p "Please chose which type env you install, (lamp|lnmp)? " t

case $t in

lamp)

lamp

;;

lnmp)

lnmp

;;

*)

echo "Only ‘lamp‘ or ‘lnmp‘ your can input."

;;

esac

[[email protected] sbin]# sh lanmp.sh

执行脚本后先选择 lamp 还是 lnmp,然后再选择mysql,php版本。

附件里面有个另外一个版本的脚本,先选择mysql,php版本,然后再安装 lamp 或者 lnmp。

时间: 2024-07-31 14:20:20

shell编程之【一键安装 lanmp】的相关文章

centos shell编程5LANMP一键安装脚本 第三十九节课

centos shell编程5LANMP一键安装脚本  第三十九节课 上半节课 下半节课 f

Shell编程之批量安装服务脚本实例剖析

今天分享一下昨天写过的一个小脚本运行的整个过程运行结果如下:   剖析如下: #!/bin/bash # Date: 4:42 2018-2-10 # Mail: [email protected]163.com # Founder: <YanKai> # Describe: This is a one - button installation service script # 提示:使用此脚本时,尽量先选择第一项配置Yum源! red_col="\e[1;31m" #定

Centos下Nginx源码安装与配置并附shell编程实现自动化安装

一.首先安装必要的库 nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库.选定/usr/local为安装目录,以下具体版本号根据实际改变. 1.安装PCRE库 $ cd /usr/local/ $ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz $ tar -zxvf pcre-8.36.tar.gz $ cd pcre-8.3

shell脚本:一键安装LAMP、LNMP脚本

历时三天边写边测试,终于完成目前最长代码的脚本,总共253行,在2台机器安装LAMP,LNMP都顺利通过,脚本可做为生产环境使用. 脚本需要注意的地方:1:脚本适用于centos系统6.5以上,干净系统:如安装过其他环境需要修改脚本内容:2:脚本适用于:apache 2.4.x 版本:mysql5.5.x以上版本:php5.5.x以上版本:3:mysql .php. apache. nginx 安装包事先要下载到/usr/local/src目录下,如名字不对需要更改脚本里的软件包名称: 脚本安装

使用 shell 脚本实现 LANMP 一键安装

使用 shell 脚本来实现 LANMP 系统的一键安装.使用的操作系统是 CentOS 6 ,不区分 32 位和 64 位,要求机器可以连通互联网.支持 LAMP 和 LNMP ,MySQL 支持 5.1 和 5.6 两个版本, php 支持 5.3 和 5.6 两个版本, apache 2.2 ,nginx 1.8. 代码如下: #!/bin/bash echo "It will install lamp or lnmp." sleep 1 # get the archive of

lanmp的一键安装脚本

创建lanmp一键安装的脚本 思路:1.设置自动安装lamp和lnmp 2.lamp脚本的编译安装 (mysql版本 5.1 或者5.6 二个版本) (apache 版本 2.2版本) (php 版本 5.4版本 5.6版本) 3.lnmp脚本的编译安装 (mysql版本 5.1 或者5.6 二个版本) (nginx 版本 1.6版本) (php 版本 5.4版本 5.6版本) 修改权限 chmod a+x lanmp.sh vim lanmp.sh #设置lamp 或 lnmp的脚本安装 #!

Centos 6.4上面用Shell脚本一键安装mysql 5.6.15

Centos 6.4上面用Shell脚本一键安装mysql 5.6.15  #!/bin/bash if [ `uname -m` == "x86_64" ];then machine=x86_64 else machine=i686 fi mysqlBasedir=/storage/server/mysql mysqlDatadir=${mysqlBasedir}/data/ mysqlLogdir=/storage/log/mysql mysqlUser=mysql mysqlGr

Shell脚本一键安装LNMP环境

https://sourceforge.net/projects/opensourcefile/files/ Nginx是一款高性能的HTTP和反向代理服务器.Nginx在反向代理,Rewrite规则,稳定性,静态文件处理,内存消耗等方面表现了很强的优势.因此公司线上和测试环境的WEB服务大多数采用的是LNMP环境,经常要进行LNMP环境的搭建,下面是用SHELL脚本写的一键安装LNMP环境的脚本.1)系统环境介绍Centos 5.8 64位 (已测试)Nginx: nginx-1.4.1.ta

一键安装shell脚本

一.一键安装nginx脚本 #!/bin/bash #################################### #Name:nginx_install.sh #Author:doublelinux #version:1.1 #Date:2017/08/19 #################################### yum -y install pcre pcre-devel yum -y install openssl openssl-devel mkdir -p