在rh6.4 版本测试通过 在centos 只要更改库文件的链接位置就可以
#!/bin/bash
NGINXDIR=/usr/local/nginx 定义了安装nginx位置
MYSQLDIR=/usr/local/mysql 定义了安装mysql位置
PHPDIR=/usr/local/php 定义了安装php位置
STARTDIR=/usr/local/bin/memcached 定义饿了安装memcached命令的位置
NGINX=nginx-1.2.0 定义了nginx源码包的版本
MYSQL=mysql-5.1.34 定义了mysql源码包的版本
PHP=php-5.4.9 定义了php源码包的版本
LIB=libmcrypt-2.5.8 提供加密功能的库文件
MHASH=mhash-0.9.9.9 定义了哈希函数库的版本
LIBICONV=libiconv-1.13 处理中文各种编码之间的转换
STABLE=libevent-2.0.21-stable 事件库
MEMCACHED=memcached-1.4.5 memcached 版本
MEMCACHE=memcache-2.2.5
TAR=.tar.gz
NGINXMBER=81 nginx配置失败后返回的值
MYSQLMBER=82 mysql配置失败后返回的值
PHPBER=83 php配置失败后返回来的值
NGINXNU=84 nginx启动失败后返回来的值
MYSQLNU=85 mysql初始化失败后返回来的值
NGINXPID=86 nginx语法错误返回来的值
MEMCACHEMBER=87 memcached配置失败后返回来的值
PHPUNMBER=88 留着备用
for PORT in {80,3306} 利用for循环检查 80端口是否被占用
do
port1=`lsof -i :$PORT | awk 'NR==2{print $1}'`
netstat -nl | grep :$PORT &>/dev/null
if [ $? -eq 0 ];then
pkill -9 $port1
else
echo " $PORT port already by release"
fi
done
for WRAP in {freetype,freetype-devel,gcc,gcc-c++,openssl,openssl-devel,pcre,pcre-devel,zlib-devel,zlib,libxml2,libxml2-devel,curl,curl-devel,libpng,libpng-devel,openldap-devel,ncurses,ncurses-devel,openldap,openldap-clients,openldap-servers,pam_ldap,openjpeg-libs,libjpeg-turbo,libjpeg-turbo-devel}
do
rpm -q $WRAP &> /dev/null
if [ $? != 0 ];then
yum -y install $WRAP
else
echo "$WRAP already install "
fi
done
sleep 3
echo "--------------------------install nginx wrap--------------------------- "
for USER in {nginx,mysql}
do
id $USER &>/dev/null
if [ $? != 0 ];then
useradd $USER
else
echo "user $USER already be"
fi
done
cd /root
tar -zxf /root/$NGINX$TAR
cd /root/$NGINX
./configure --prefix=$NGINXDIR \
--pid-path=$NGINXDIR/nginx.pid \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=$NGINXDIR/client \
--http-proxy-temp-path=$NGINXDIR/proxy \
--http-fastcgi-temp-path=$NGINXDIR/fcgi \
--http-scgi-temp-path=$NGINXDIR/scgi \
--http-uwsgi-temp-path=$NGINXDIR/uwsgi \
--with-pcre
if [ $? -eq 0 ];then
make && make install
else
echo "nginx configure failed"
exit $NGINXMBER
fi
ln -s $NGINXDIR/sbin/nginx /usr/sbin
nginx -c $NGINXDIR/conf/nginx.conf
sleep 3
echo "----------------------install libmcrypt wrap---------------------"
cd /root
tar -zxf /root/$LIB$TAR
cd /root/$LIB
./configure && make && make install
cd libltdl
./configure --with-gmetad --enable-gexec --enable-ltdl-install && make && make install
sleep 3
echo "----------------------install mysql wrap------------------------"
cd /root
tar -zxf /root/$MYSQL$TAR
cd /root/$MYSQL
./configure --prefix=$MYSQLDIR --without-debug \
--with-innodb --with-plugins=partition \
--with-extra-charsets=all --enable-assembler \
--with-mysqld-ldflags=-all-static \
--with-client-ldflags=-all-static \
--with-unix-socket-path=/tmp/mysql.sock \
--with-ssl
if [ $? -eq 0 ];then
make && make install
else
echo " mysql configure failed "
exit $MYSQLMBER
fi
chown -R mysql.mysql $MYSQLDIR/*
test -f /etc/my.cnf
if [ $? != 0 ];then
cp /root/$MYSQL/support-files/my-medium.cnf /etc/my.cnf
else
mv /etc/my.cnf /etc/my.conf
cp /root/$MYSQL/support-files/my-medium.cnf /etc/my.cnf
fi
cp /root/$MYSQL/support-files/mysql.server /etc/init.d/mysql
ln -s $MYSQLDIR/bin/* /usr/bin
ln -s $MYSQLDIR/lib/mysql/* /usr/lib64/
ln -s $MYSQLDIR/include/mysql/* /usr/include/
sed -i 's/^skip-federated$/# skip-federated/' /etc/my.cnf
chmod +x /etc/init.d/mysql
mysql_install_db --user=mysql
if [ $? -eq 0 ];then
service mysql restart
chkconfig --add mysql
chkconfig mysql on
else
echo "mysql initialize failed"
exit $MYSQLNU
fi
sleep 3
echo "----------------------install mhash -------------------------------"
cd /root
tar -zxf /root/$MHASH$TAR
cd /root/$MHASH
./configure && make && make install
sleep 3
echo "----------------------install libiconv---------------------------"
cd /root
tar -zxf /root/$LIBICONV$TAR
cd /root/$LIBICONV
./configure && make && make install
sleep 3
echo"-------------------install php wrap ---------------------------------"
\cp -rfp /usr/lib64/libldap* /usr/lib/
ln -s /usr/local/lib/libmcrypt* /usr/lib/
ln -s /usr/local/lib/libmhash.* /usr/lib/
ldconfig -v &> /dev/null
cd /root
tar -zxf $PHP$TAR
cd $PHP
./configure --prefix=$PHPDIR --with-mysql=$MYSQLDIR \
--with-zlib --enable-xml --disable-rpath \
--enable-safe-mode --enable-bcmath \
--enable-shmod --enable-sysvsem \
--with-curl --with-curlwrappers \
--enable-fpm --enable-fastcgi \
--with-mcrypt --with-gd \
--with-openssl --with-mhash \
--with-mysqli=$MYSQLDIR/bin/mysql_config \
--with-iconv-dir=/usr/lcoal \
--with-png-dir --with-jpeg-dir \
--with-freetype-dir --enable-gd-native-ttf \
--with-libxml-dir=/usr \
--enable-sockets --with-ldap \
--with-ldap-sasl --with-xmlrpc --enable-zip \
--enable-soap
if [ $? -eq 0 ];then
make ZEND_EXTRA_LIBS='-liconv' && make install
# if [ $? != 0 ];then
#echo "php make install failed"
# exit $PHPUNMBER
else
echo "php configure failed"
exit $PHPMBER
fi
# fi
\cp /root/$PHP/php.ini-production $PHPDIR/php/php.ini
\cp $PHPDIR/etc/php-fpm.conf.default $PHPDIR/etc/php-fpm.conf
sed -i '/fpm.pid/s/;//' $PHPDIR/etc/php-fpm.conf
sed -i '26a error_log = log/php-fpm.log' $PHPDIR/etc/php-fpm.conf
sed -i '27a log_level = error' $PHPDIR/etc/php-fpm.conf
sed -i '/daemonize/s/;// ' $PHPDIR/etc/php-fpm.conf
sed -i '/user/s/nobody/nginx/' $PHPDIR/etc/php-fpm.conf
sed -i '/group/s/nobody/nginx/' $PHPDIR/etc/php-fpm.conf
# for FAST-CGI in {pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers}
# do
# for NUMBER in {32,15,5,32}
# do
# sed -i '/$FAST-CGI/s/[0-9]/$NUMBER/' $PHPDIR/etc/php-fpm.conf
# done
# done
cp -rf /root/$PHP/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
service php-fpm restart
chkconfig php-fpm on
sed -i '/index.php/s/#//' $NGINXDIR/conf/nginx.conf
sed -i '45c index index.php index.html index.html;' $NGINXDIR/conf/nginx.conf
sed -i '/fastcgi_pass/s/#//' $NGINXDIR/conf/nginx.conf
sed -i '/fastcgi_param/s/#//' $NGINXDIR/conf/nginx.conf
sed -i '/include/s/#//g' $NGINXDIR/conf/nginx.conf
sed -i '66a root html;' $NGINXDIR/conf/nginx.conf
sed -i '71a }' $NGINXDIR/conf/nginx.conf
sed -i '65a location ~ \.php$ { ' $NGINXDIR/conf/nginx.conf
sed -i '/nginx/s/$nginx_version//' $NGINXDIR/conf/fastcgi_params
sed -i '4a fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' $NGINXDIR/conf/fastcgi_params
pkill -9 nginx
nginx -t
if [ $? -eq 0 ];then
nginx
else
echo "configure file have failed"
exit $NGINXPID
fi
sleep 3
echo "-------------------install libevent--------------------------"
cd /root
tar -zxf /root/$STABLE$TAR
cd /root/$STABLE
./configure && make && make install
echo /usr/local/lib/ >> /etc/ld.so.conf.d/libevent.conf
# ldconfig $>/dev/null
sleep 3
echo "----------------------install memcached--------------------------"
cd /root
tar -zxf /root/$MEMCACHED$TAR
cd /root/$MEMCACHED
./configure && make && make install
$STARTDIR -u root -m 100 -c 200 -n 10 -f 2 -d
sleep 3
echo "----------------------install memcache----------------------------"
cd /root
tar -zxf /root/$MEMCACHE.tgz
cd /root/$MEMCACHE
$PHPDIR/bin/phpize
./configure --with-php-config=$PHPDIR/bin/php-config \
--enable-memcache
if [ $? -eq 0 ];then
make && make install
else
echo "memcache install failed"
exit $MEMCACHEMBER
fi
sed -i '728a extension_dir=�?usr/local/php5nginx/lib/php/extensions/no-debug-non-zts-20100525/�? $PHPDIR/php/php.ini
sed -i '729a extension=memcache.so'
service php-fpm reload
echo "http {" >> $NGINXDIR/conf/nginx.conf
echo " upstream web {" >> $NGINXDIR/conf/nginx.conf
echo " server 200.1.1.20:80;" >> $NGINXDIR/conf/nginx.conf
echo " server 200.1.1.30:80;" >> $NGINXDIR/conf/nginx.conf
echo " }" >> $NGINXDIR/conf/nginx.conf
echo " server {" >> $NGINXDIR/conf/nginx.conf
echo " listen 80;" >> $NGINXDIR/conf/nginx.conf
echo " server_name www.baidu.com;" >> $NGINXDIR/conf/nginx.conf
echo " location / {" >> $NGINXDIR/conf/nginx.conf
echo ' set $memcached_key $uri;' >> $NGINXDIR/conf/nginx.conf
echo ' memcached_pass 127.0.0.1:11211;' >> $NGINXDIR/conf/nginx.conf
echo " default_type text/html;" >> $NGINXDIR/conf/nginx.conf
echo " error_page 404 @fallback;" >> $NGINXDIR/conf/nginx.conf
echo " }" >> $NGINXDIR/conf/nginx.conf
echo " location @fallback {" >> $NGINXDIR/conf/nginx.conf
echo " proxy_pass http://web;" >> $NGINXDIR/conf/nginx.conf
echo " }" >> $NGINXDIR/conf/nginx.conf
echo " } " >> $NGINXDIR/conf/nginx.conf
echo " }" >> $NGINXDIR/conf/nginx.conf
pkill -9 nginx
nginx -t
if [ $? -eq 0 ];then
nginx
else
echo "because of memcached configure file failed "
fi