一鍵安裝LNMP系統腳本


#!/bin/bashphp

#安裝時請將全部安裝包已經配置文件放在/dist/dist,請認真核對所需安裝包,以避免安裝失敗mysql

#此腳本用於安裝LNMP環境linux


set -unginx

#########檢測目錄#######c++


[ -d /dist/dist ] || mkdir -p /dist/distweb

[ -d /dist/src ]  || mkdir -p /dist/srcsql

[ -d /data/sh ]   || mkdir -p /data/shvim


############複製文件#########bash


cd `dirname $0`app

cp `pwd`/* /dist/dist

echo `pwd`


MYSQL_INSTALL(){


###########檢測文件###########


cd /dist/dist

my=Percona-Server-5.5.27.tar.gz

myc=my.cnf

if [[ -e $my ]];then

   echo "${my}存在"

else

   echo "${my}不存在"

   read -p "---- 文件不存在,請檢查,檢查完成可按任意鍵繼續---" ANYKEY

fi

if [[ -e $myc ]];then

   echo "${myc}存在"

else

   echo "${myc}不存在"

   read -p "---- 文件不存在,請檢查,檢查完成可按任意鍵繼續---" ANYKEY

fi


#########安裝編譯環境##########


yum install gcc gcc-c++ ncurses-devel bison cmake automake autoconf libtool gzip-devel bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel gettext-devel pcre-devel curl-devel -y

yum -y install vim wget lrzsz



if [[ $?=0 ]];then

    echo "-----------------------編譯環境安裝成功--------------------"

else

    echo "-----------------------編譯環境安裝失敗--------------------"

    exit 0

fi


#########添加mysql用戶和組##########


if [[ -z $(grep mysql /etc/group) ]];then

     groupadd -g 88 mysql

fi

if

   [[ -z $(grep mysql /etc/passwd) ]];then

     useradd -g mysql mysql -s /sbin/nologin

fi


##########編譯安裝##########


cd /dist/src

tar zxf /dist/dist/Percona-Server-5.5.27.tar.gz

cd Percona-Server-5.5.27/

CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=nocona -O2 -pipe" CXXFLAGS="-march=nocona -O2 -pipe" cmake \

-DMYSQL_USER=mysql \

-DCMAKE_BUILD_TYPE:STRING=Release \

-DSYSCONFDIR:PATH=/usr/local/mysql \

-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DENABLED_PROFILING:BOOL=ON \

-DENABLE_DEBUG_SYNC:BOOL=OFF \

-DMYSQL_DATADIR:PATH=/data/database/mysql \

-DMYSQL_MAINTAINER_MODE:BOOL=OFF \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_BIG_TABLES:BOOL=ON \

-DWITH_FAST_MUTEXES:BOOL=ON \

-DENABLE-PROFILING:BOOL=ON \

-DWITH_SSL:STRING=bundled \

-DWITH_UNIT_TESTS:BOOL=OFF \

-DWITH_ZLIB:STRING=bundled \

-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \

-DWITH_SERVER_SUFFIX=YH_GAME_DB \

-DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam \

-DEFAULT_COLLATION=utf8_general_ci \

-DEFAULT_CHARSET=utf8 \

-DENABLED_ASSEMBLER:BOOL=ON \

-DENABLED_LOCAL_INFILE:BOOL=ON \

-DENABLED_THREAD_SAFE_CLIENT:BOOL=ON \

-DENABLED_EMBEDDED_SERVER:BOOL=OFF \

-DWITH_CLIENT_LDFLAGS:STRING=all-static \

-DINSTALL_LAYOUT:STRING=STANDALONE \

-DCOMMUNITY_BUILD:BOOL=ON


make && make install



##############檢測是否安裝成功############


/usr/local/mysql/bin/mysql -V

if [[ $? -eq 0 ]];then

    echo "--------mysql 安裝成功--------"

else

    echo "------- mysql 安裝失敗--------"

    exit 0 

fi


############### MYSQL初始化 ############################


echo "---------MYSQL 正在進行初始化----------"

mkdir -p /data/database/mysql/

ln -s /data/database/mysql/ /usr/local/mysql/var

if [[ -f /etc/my.cnf ]]; then

    mv /etc/my.cnf /etc/my.cnf.bak

fi

cp /dist/dist/my.cnf /etc/my.cnf

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --defaults-file=/etc/my.cnf --ldata=/usr/local/mysql/var/ --user=mysql


##############


cd /usr/local/mysql/ ; /usr/local/mysql//bin/mysqld_safe &

sleep 10

ps -ef |grep -v grep |grep "/usr/local/mysql/bin/mysqld"

if [[ $? -eq 0 ]];then

   echo "--------------------------MYSQL 啓動成功------------------------"

else

   echo "--------------------------MYSQL 啓動失敗------------------------"

read -p "---- 因爲mysql啓動失敗,腳本暫停,請手動啓動mysql,正確啓動mysql以後,按任意鍵繼續安裝腳本---" ANYKEY

fi


##############  建立連接 #########################


mkdir -p /var/lib/mysql

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

ln -s /usr/local/mysql/bin/mysqlimport /usr/local/bin/mysqlimport

ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin/mysqldump


############## 密碼 ##########


test -d /data/save/ || mkdir /data/save/

echo yh1234! >> /data/save/mysql_root

chmod 600 /data/save/mysql_root

/usr/local/mysql/bin/mysqladmin -uroot password yh1234!

if [[ $? -eq 0 ]];then

   echo "--------------------------MYSQL 密碼設置成功------------------------"

else

   echo "--------------------------MYSQL 密碼設置失敗------------------------"

read -p "---- 因爲mysql密碼設置失敗,腳本暫停,按任意鍵繼續安裝腳本---" ANYKEY

fi


#############建立啓動方式和加入開機啓動項##############


echo '/usr/local/mysql/bin/mysqld_safe &' > /root/mysql_start

echo '/usr/local/mysql/bin/mysqladmin -u root -p`cat /data/save/mysql_root` shutdown' > /root/mysql_stop

chmod -R 700 /root/mysql_*

echo "/root/mysql_start" >> /etc/rc.local


}

MYSQL_PORT(){


########### 開啓防火牆端口 ###########################


cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

sed -i '$ i\# mysql' /etc/sysconfig/iptables

sed -i '$ i\-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT' /etc/sysconfig/iptables

iptables-restore /etc/sysconfig/iptables


}


############ 開始安裝PHP #####################


PHP_INSTALL(){


#########添加www用戶和組##########


if [[ -z $(grep www /etc/group) ]];then

     groupadd -g 80 www

fi

if

   [[ -z $(grep www /etc/passwd) ]];then

     useradd -g www www -s /sbin/nologin

fi


################### 安裝編譯環境 ################


echo "-------------------正在安裝編譯環境---------------"

yum -y install gd-devel curl-devel libxml2-devel bzip2-devel \

libxpm-devel libXpm mbstring exif libicu-devel libmcrypt-devel \

php-mcrypt bzip2* libjpeg* libpng* freetype*

if [[ $? -eq 0 ]];then

   echo "--------------編譯環境安裝成功------------------"

else

   echo "--------------編譯環境安裝失敗------------------"

   read -p "---- 編譯環境失敗,若是要繼續安裝,請按任意鍵---" ANYKEY

fi


#################### 檢測文件是否存在  ##############


cd /dist/dist/

#wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz

if ` -e libmcrypt-2`.`5`.`7`.`tar`.`gz `;then

   echo "bmcrypt-2.5.7.tar.gz 存在"

else

   echo "bmcrypt-2.5.7.tar.gz 不存在"

   read -p "---- 文件不存在,請檢查,檢查完成可按任意鍵繼續---" ANYKEY

fi


################## 編譯安裝 ####################


cd /dist/src/

tar zxf ../dist/libmcrypt-2.5.7.tar.gz

cd libmcrypt-2.5.7/

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

make && make install


#################檢測文件是否存在 ###################


cd /dist/dist/

#wget http://cn2.php.net/distributions/php-5.4.38.tar.gz

if ` -e php-5`.`4`.`38`.`tar`.`gz `;then

   echo "php-5.4.38.tar.gz 存在"

else

   echo "php-5.4.38.tar.gz 不存在"

   read -p "---- 文件不存在,請檢查,檢查完成可按任意鍵繼續---" ANYKEY

fi


################ 編譯安裝 ######################


cd /dist/src/

tar zxf ../dist/php-5.4.38.tar.gz

if [[ -e /usr/local/mysql/lib/libmysqlclient.so.18 ]];then

   echo "libmysqlclient.so.18 存在"

else

   echo "libmysqlclient.so.18 不存在"

   read -p "---- 文件不存在,請檢查,檢查完成可按任意鍵繼續---" ANYKEY

fi

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib

ldconfig

cd php-5.4.38/

./configure --prefix=/usr/local/php/ \

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

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

--with-pdo-mysql=/usr/local/mysql/bin/mysql_config \

--with-mysqli=/usr/local/mysql/bin/mysql_config \

--with-iconv-dir=/usr/local \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir --enable-zip \

--with-zlib \

--with-gd --disable-rpath \

--enable-bcmath --enable-shmop \

--enable-sysvsem --with-curl \

--with-curlwrappers --enable-mbstring \

--with-mcrypt --enable-fpm \

--disable-ipv6 --enable-static \

--enable-sockets --enable-soap \

--with-openssl

make && make install


########## 建立連接 #################


ln -s /usr/local/php/bin/ /bin/

ln -s /usr/local/php/bin/ /usr/bin/

ln -s /usr/local/php/bin/ /usr/local/bin/

ln -s /usr/local/php/bin/php /usr/bin/php


############# 更改配置文件 ###################


if [[ -e /usr/local/php/etc/php.ini ]]; then

    mv /usr/local/php/etc/php.ini /usr/local/php/etc/php.ini.bak

fi

cp /dist/src/php-5.4.38/php.ini-production /usr/local/php/etc/php.ini

ln -s  /usr/local/php/etc/php.ini /etc/php.ini


if [[ -e /usr/local/php/etc/php-fpm.conf ]]; then

    mv /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf.bak

fi


############ 檢測文件是否存在 ############################


cd /dist/dist


if ` -e php-fpm`.`conf `;then

  echo "php-fpm.conf存在"

else

  echo "php-fpm.conf不存在"

  read -p "---- 文件不存在,請檢查,檢查完成可按任意鍵繼續---" ANYKEY

fi


#############  修改配置文件內容和開機啓動項 #######################


cp /dist/dist/php-fpm.conf /usr/local/php/etc/php-fpm.conf

cat > /root/fastcgi_start << EOF

ulimit -SHn 65535

/usr/local/php/sbin/php-fpm

EOF

cat > /root/fastcgi_stop << EOF

kill -INT \`cat /usr/local/php/var/run/php-fpm.pid\`

EOF

cat > /root/fastcgi_restart << EOF

kill -USR2 \`cat /usr/local/php/var/run/php-fpm.pid\`

EOF

chmod 755 /root/fastcgi_*

echo "/root/fastcgi_start" >> /etc/rc.d/rc.local


######################### 啓動PHP ########################


sh /root/fastcgi_start

ps -ef |grep -v grep |grep "php-fpm"

if [[ $? -eq 0 ]];then

   echo "php-fpm 啓動成功"

else 

   echo "php-fpm 啓動失敗"

read -p "---- php-frm 啓動失敗,請檢查,啓動成功後,按任意鍵繼續---" ANYKEY

fi


}


############# 安裝NGIXN #############################


NGIXN_INSTALL(){


############## 檢測文件是否存在 #################


cd /dist/dist/

for i in nginx-1.4.4.tar.gz pcre-8.35.tar.gz zlib-1.2.8.tar.gz libunwind-1.1.tar.gz gperftools-2.1.tar.gz

do

   if [[ -e $i ]];then

       echo "$i存在"

   else

       echo "$i不存在"

   read -p "---- 文件不存在,請檢查,檢查完成可按任意鍵繼續---" ANYKEY

   fi

done


############### 開始編譯安裝 ##############################


cd /dist/src/

tar zxf ../dist/pcre-8.35.tar.gz

cd pcre-8.35

./configure

make && make install


cd /dist/src/

tar -zxf ../dist/zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure

make && make install


cd /dist/src/

tar -zxf ../dist/libunwind-1.1.tar.gz

cd libunwind-1.1/

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

make && make install


cd /dist/src/

tar zxf ../dist/gperftools-2.1.tar.gz

cd gperftools-2.1/

./configure --prefix=/usr/local/gperftools --enable-frame-pointers

make && make install


cd /dist/src/

tar zxf ../dist/nginx-1.4.4.tar.gz

ln -s /usr/local/gperftools/lib/* /usr/local/lib

cd nginx-1.4.4/

./configure --user=www --group=www --prefix=/usr/local/nginx \

--with-http_stub_status_module \

--with-google_perftools_module \

--with-http_realip_module \

--with-http_sub_module \

--with-http_ssl_module \

--with-pcre=/dist/src/pcre-8.35 \

--with-zlib=/dist/src/zlib-1.2.8

make && make install


############ 更改配置文件 #############################


mkdir -p /data/logs

chown -R www:www /data/logs/

mkdir -p /data/web/webclose/

if [ -e /usr/local/nginx/conf/nginx.conf ]; then

    mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

fi

cp /dist/dist/nginx.conf /usr/local/nginx/conf/nginx.conf


########## 建立快捷方式和加入開機啓動項 #####################################


echo 'ulimit -SHn 51200' >> /root/nginx_start

echo '/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf' >> /root/nginx_start

echo '/usr/local/nginx/sbin/nginx -t' >> /root/nginx_reload

echo 'kill -HUP `cat /usr/local/nginx/logs/nginx.pid` ' >> /root/nginx_reload

chmod 755 /root/nginx_*

cp /usr/local/gperftools/lib/libprofiler.so.0 /usr/lib64/

echo "/root/nginx_start" >> /etc/rc.d/rc.local

echo '### deny ###' >> /usr/local/nginx/conf/block_ips.conf

sh /root/nginx_start

ps -ef |grep -v grep |grep "nginx"

if [[ $? -eq 0 ]];then

   echo "-------------NGIXG 啓動成功-----------"

else

   echo "-------------NGIXG 啓動失敗-----------"

   read -p "---- 啓動失敗,請檢查,啓動完成可按任意鍵繼續---" ANYKEY

fi

}


NGINX_PORT(){


##################開啓防火牆端口#############


sed -i '$ i\# nginx' /etc/sysconfig/iptables

sed -i '$ i\-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT' /etc/sysconfig/iptables

iptables-restore /etc/sysconfig/iptables


}


######################

echo "-----------------LNMP環境開始搭建------------------"

echo "-----------------MYSQL 開始安裝---------------------"

MYSQL_INSTALL

MYSQL_PORT

echo "------------------PHP 開始安裝-------------------"

PHP_INSTALL

echo "------------------NGIXG 開始安裝------------------"

NGIXN_INSTALL

NGINX_PORT

echo "------------------LNMP環境搭建完成-----------------"

相關文章
相關標籤/搜索