一个简洁的全自动安装LNMP服务器环境的Shell脚本分享
此脚本在生产服务器上使用了一年多,本脚本崇尚简单唯美,只需要一个脚本就可以在任何一台有网络的服务器上自动配置LNMP。
本脚本会在脚本执行目录下,建packages目录用于存放LNMP所需要的软件。大家安装完可以删除该目录。
使用方法:
1、把shell脚本的内容保存为nginx_php
2、root权限下运行:
chmodu+xnginx_php;./nginx_phpinit;./nginx_phpins_mysql-server;./nginx_phpins_mysql-client;./nginx_phpins_php52;./nginx_phpins_php52-ext;./nginx_phpins_mysql
在脚本运行过程中需要输入一次y确认。
Shell脚本内容如下:
#/bash #author:coralzdpoweredbywww.freebsdsystem.org #writtenbycoralzd2011.05.05 #version0.1.3build20110505 nginx_dir="/usr/local/nginx" php52_dir="/usr/local/php52" mysql_dir="/usr/local/mysql"
functioninit() {
LANG=C yum-yinstallwgetgccgcc-c++autoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-developenldapopenldap-develnss_ldapopenldap-clientsopenldap-servers
read-p"Now,willdownloadnginxphpsoftware...Y|y:"nginxphp
case"$nginxphp"in
Y|y)
echo-n"startingdownloadnginx_php..." cat>list<<"EOF"&& nginx-1.0.0.tar.gz php-5.2.17.tar.gz php-5.2.17-fpm-0.5.14.diff.gz libiconv-1.13.1.tar.gz libmcrypt-2.5.8.tar.gz mcrypt-2.6.8.tar.gz memcache-2.2.5.tgz mhash-0.9.9.9.tar.gz mysql-5.1.52.tar.gz pcre-8.10.tar.gz eaccelerator-0.9.6.1.tar.bz2 PDO_MYSQL-1.0.2.tgz libunwind-0.99.tar.gz ImageMagick.tar.gz imagick-2.3.0.tgz google-perftools-1.6.tar.gz fcgi.conf php.ini nginx.conf php-fpm.conf EOF mkdirpackages foriin`catlist` do if[-spackages/$i];then echo"$i[found]" else echo"Error:$inotfound!!!downloadnow......" wgethttp://www.freebsdsystem.org/linux/nginx-php/$i-Ppackages/ fi done ;;
*)
echo-n"exitinstallscript" exit0 ;;
esac
groupaddwww&&useraddwww-s/sbin/nologin-gwww groupaddmysql&&useraddmysql-s/sbin/nologin-gmysql echo"wwwandmysqluser&&groupcreate!"
/bin/rm-rflist
echo-e"Allofinstalledsucussful!" } functionis_version()
{ if[`uname-m`=="x86_64"];then tarzxflibunwind-0.99.tar.gz tarzxvflibunwind-0.99.tar.gz cdlibunwind-0.99/ CFLAGS=-fPIC./configure makeCFLAGS=-fPIC makeCFLAGS=-fPICinstall cd../ else
echo"yoursystemis32bit,notinstalllibunwindlib!" fi }
functionins_nginx()
{
cdpackages
is_version tarzxfgoogle-perftools-1.6.tar.gz cdgoogle-perftools-1.6 ./configure make makeinstall
cd.. tarzxfpcre-8.10.tar.gz cdpcre-* ./configure make makeinstall cd.. tarzxfnginx-1.0.0.tar.gz cdnginx-1.0.0 ./configure--prefix=${nginx_dir}--with-google_perftools_module--user=www--group=www--with-http_stub_status_module--with-http_flv_module--with-http_ssl_module
make&&makeinstall cd.. rm-rf/usr/local/nginx/conf/nginx.conf echo"/usr/local/lib">/etc/ld.so.conf.d/usr_local_lib.conf cpnginx.conf/usr/local/nginx/conf/ cpfcgi.conf/usr/local/nginx/conf/ echo"nginxinstalledsucussfully!"
} functionins_mysql-server() {
cdpackages/ tarzxfmysql-5.1.52.tar.gz cdmysql-5.1.52 CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=nocona-O2-pipe" CXXFLAGS="${CFLAGS}" ./configure"--prefix=${mysql_dir}""--with-server-suffix=-DZWWW""--with-mysqld-user=mysql""--without-debug""--with-charset=utf8""--with-extra-charsets=all""--with-pthread""--with-big-tables""--enable-thread-safe-client""--enable-assembler""--with-readline""--with-ssl""--enable-local-infile""--with-plugins=partition,myisammrg""--without-ndb-debug"
make&&makeinstall cpsupport-*/mysql.server/etc/init.d/mysqld cd/usr/local/mysql chown-Rmysql:mysql. rm-rfsql-benchmysql-test echo"mysqlserver5.1.52installedsuccessfully!" } functionins_mysql-client() {
cdpackages/ tarzxfmysql-5.1.52.tar.gz cdmysql-5.1.52 CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=nocona-O2-pipe" CXXFLAGS="${CFLAGS}" ./configure"--prefix=${mysql_dir}""--with-mysqld-user=mysql""--without-debug""--with-charset=utf8""--with-extra-charsets=all""--with-pthread""--with-big-tables""--enable-thread-safe-client""--enable-assembler""--with-readline""--with-ssl""--enable-local-infile""--without-server"
make&&makeinstall cd/usr/local/mysql chown-Rmysql:mysql. rm-rfsql-benchmysql-test echo"mysqlclient5.1.52installedsuccessfully!" } functionins_php52() { cdpackages/ tarzxflibiconv-1.13.1.tar.gz cdlibiconv-1.13.1/ ./configure--prefix=/usr/local make makeinstall cd../
tarzxflibmcrypt-2.5.8.tar.gz cdlibmcrypt-2.5.8/ ./configure make makeinstall /sbin/ldconfig cdlibltdl/ ./configure--enable-ltdl-install make makeinstall cd../../
tarzxfmhash-0.9.9.9.tar.gz cdmhash-0.9.9.9/ ./configure make makeinstall cd../
ln-s/usr/local/lib/libmcrypt.la/usr/lib/libmcrypt.la ln-s/usr/local/lib/libmcrypt.so/usr/lib/libmcrypt.so ln-s/usr/local/lib/libmcrypt.so.4/usr/lib/libmcrypt.so.4 ln-s/usr/local/lib/libmcrypt.so.4.4.8/usr/lib/libmcrypt.so.4.4.8 ln-s/usr/local/lib/libmhash.a/usr/lib/libmhash.a ln-s/usr/local/lib/libmhash.la/usr/lib/libmhash.la ln-s/usr/local/lib/libmhash.so/usr/lib/libmhash.so ln-s/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2 ln-s/usr/local/lib/libmhash.so.2.0.1/usr/lib/libmhash.so.2.0.1 ln-s/usr/local/bin/libmcrypt-config/usr/bin/libmcrypt-config
tarzxfmcrypt-2.6.8.tar.gz cdmcrypt-2.6.8/ /sbin/ldconfig ./configure make makeinstall cd../ tarzxfphp-5.2.17.tar.gz gzip-cdphp-5.2.17-fpm-0.5.14.diff.gz|patch-dphp-5.2.17-p1 cdphp-5.2.17/ ./configure--prefix=${php52_dir}--with-config-file-path=${php52_dir}/etc--with-mysql=${mysql_dir}--with-mysqli=${mysql_dir}/bin/mysql_config--with-iconv-dir=/usr/local--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--disable-rpath--enable-discard-path--enable-safe-mode--enable-bcmath--enable-shmop--enable-sysvsem--enable-inline-optimization--with-curl--with-curlwrappers--enable-mbregex--enable-fastcgi--enable-fpm--enable-force-cgi-redirect--enable-mbstring--with-mcrypt--with-gd--enable-gd-native-ttf--with-openssl--with-mhash--enable-pcntl--enable-sockets--with-ldap--with-ldap-sasl--with-xmlrpc--enable-zip--enable-soap makeZEND_EXTRA_LIBS='-liconv' makeinstall cd.. cpphp.ini/usr/local/php52/etc/ cpphp-fpm.conf/usr/local/php52/etc/
echo"/usr/local/mysql/lib/mysql">>/etc/ld.so.conf.d/mysql_lib.conf /sbin/ldconfig echo"php52installedsuccessfully!" }
functionins_php52-ext()
{ cdpackages/
tarzxfmemcache-2.2.5.tgz cdmemcache-2.2.5/ ${php52_dir}/bin/phpize ./configure--with-php-config=${php52_dir}/bin/php-config make makeinstall cd../
tarjxfeaccelerator-0.9.6.1.tar.bz2 cdeaccelerator-0.9.6.1/ ${php52_dir}/bin/phpize ./configure--enable-eaccelerator=shared--with-php-config=${php52_dir}/bin/php-config make makeinstall cd../
tarzxfPDO_MYSQL-1.0.2.tgz cdPDO_MYSQL-1.0.2/ ${php52_dir}/bin/phpize ./configure--with-php-config=${php52_dir}/bin/php-config--with-pdo-mysql=${mysql_dir} make makeinstall cd../
tarzxfImageMagick.tar.gz cdImageMagick-6.5.1-2/ ./configure make makeinstall cd../
tarzxfimagick-2.3.0.tgz cdimagick-2.3.0/ ${php52_dir}/bin/phpize ./configure--with-php-config=${php52_dir}/bin/php-config make makeinstall cd../ echo"php52extensioninstalledsuccessfully!" }
case$1in init)
init ;; ins_mysql-server)
ins_mysql-server
;; ins_mysql-client) ins_mysql-client ;; ins_nginx) ins_nginx ;; ins_php52) ins_php52 ;; ins_php52-ext) ins_php52-ext ;; *) echo"Usage:`basename$0`{init|ins_mysql-server|ins_mysql-client|ins_php52|ins_php52-ext|ins_mysql}" ;; esac