#!/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環境搭建完成-----------------"