去公司boss叫写个LNMP自动安装的脚本折腾了三天写完 体积有点臃肿 但是能自动安装的。现在就把三个脚本贡献给博友们。。。

安装脚本分为3段sql.sh   php.sh  和 nginx.sh

安装过程也请按照这个顺序安装就行

SQL.SH

 
  
  1. #!/bin/bash
  2. SOFT=/data2/software
  3. B=/dev/null
  4. SQL=/usr/local/webserver/mysql
  5. SQLDIR=/data0/mysql/3306
  6. PATHROOT=/usr/local/webserver
  7. ! [ -e $SQLDIR ] && mkdir -p $SQLDIR/{data,binlog,relaylog}
  8. ! [ -e $PATHROOT ] && mkdir -p $PATHROOT
  9. echo "downloading msyql-5.5...please wait a moment..."
  10. cd $SOFT
  11. wget http://mirror.trouble-free.net/mysql_mirror/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz
  12. wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
  13. ! id mysql && groupadd -r mysql && useradd -r -g mysql -M -s /sbin/nologin mysql &> $B
  14. tar xf cmake-2.8.6.tar.gz
  15. yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
  16. cd cmake-2.8.6
  17. ./configure
  18. make
  19. make install
  20. cd ..
  21. tar xf mysql-5.5.25a.tar.gz
  22. cd mysql-5.5.25a
  23. cmake -DCMAKE_INSTALL_PREFIX=$SQL -DMYSQL_DATADIR=/data0/mysql/3306/data/ -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=OFF -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock
  24. make
  25. make install
  26. cd $ SQL
  27. cp support-files/my-medium.cnf /data0/mysql/3306/data/my.cnf
  28. cp /usr/local/webserver/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
  29. chmod +x /etc/rc.d/init.d/mysqld
  30. ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
  31. chown -R mysql:mysql ./* $SQLDIR
  32. chmod +w $SQL
  33. $SQL/scripts/mysql_install_db --basedir=$SQL --datadir=$SQLDIR/data --user=mysql
  34. cat >>$SQLDIR/my.cnf<<EOF
  35. [client]
  36. character-set-server = utf8
  37. port = 3306
  38. socket = /tmp/mysql.sock
  39. [mysqld]
  40. character-set-server = utf8
  41. replicate-ignore-db = mysql
  42. replicate-ignore-db = test
  43. replicate-ignore-db = information_schema
  44. user = mysql
  45. port = 3306
  46. socket = /tmp/mysql.sock
  47. basedir = /usr/local/webserver/mysql
  48. datadir = /data0/mysql/3306/data
  49. log-error = /data0/mysql/3306/mysql_error.log
  50. pid-file = /data0/mysql/3306/mysql.pid
  51. open_files_limit = 10240
  52. back_log = 600
  53. max_connections = 5000
  54. max_connect_errors = 6000
  55. table_cache = 614
  56. external-locking = FALSE
  57. max_allowed_packet = 32M
  58. sort_buffer_size = 1M
  59. join_buffer_size = 1M
  60. thread_cache_size = 300
  61. #thread_concurrency = 8
  62. query_cache_size = 512M
  63. query_cache_limit = 2M
  64. query_cache_min_res_unit = 2k
  65. default-storage-engine = MyISAM
  66. thread_stack = 192K
  67. transaction_isolation = READ-COMMITTED
  68. tmp_table_size = 246M
  69. max_heap_table_size = 246M
  70. long_query_time = 3
  71. log-slave-updates
  72. log-bin = /data0/mysql/3306/binlog/binlog
  73. binlog_cache_size = 4M
  74. binlog_format = MIXED
  75. max_binlog_cache_size = 8M
  76. max_binlog_size = 1G
  77. relay-log-index = /data0/mysql/3306/relaylog/relaylog
  78. relay-log-info-file = /data0/mysql/3306/relaylog/relaylog
  79. relay-log = /data0/mysql/3306/relaylog/relaylog
  80. expire_logs_days = 30
  81. key_buffer_size = 256M
  82. read_buffer_size = 1M
  83. read_rnd_buffer_size = 16M
  84. bulk_insert_buffer_size = 64M
  85. myisam_sort_buffer_size = 128M
  86. myisam_max_sort_file_size = 10G
  87. myisam_repair_threads = 1
  88. myisam_recover
  89. interactive_timeout = 120
  90. wait_timeout = 120
  91. skip-name-resolve
  92. #master-connect-retry = 10
  93. slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
  94. #master-host = 192.168.1.2
  95. #master-user = username
  96. #master-password = password
  97. #master-port = 3306
  98. server-id = 1
  99. innodb_additional_mem_pool_size = 16M
  100. innodb_buffer_pool_size = 512M
  101. innodb_data_file_path = ibdata1:256M:autoextend
  102. innodb_file_io_threads = 4
  103. innodb_thread_concurrency = 8
  104. innodb_flush_log_at_trx_commit = 2
  105. innodb_log_buffer_size = 16M
  106. innodb_log_file_size = 128M
  107. innodb_log_files_in_group = 3
  108. innodb_max_dirty_pages_pct = 90
  109. innodb_lock_wait_timeout = 120
  110. innodb_file_per_table = 0
  111. #log-slow-queries = /data0/mysql/3306/slow.log
  112. #long_query_time = 10
  113. [mysqldump]
  114. quick
  115. max_allowed_packet = 32M
  116. EOF
  117. mkdir -pv /usr/local/mysql/bin
  118. chmod +x $SQLDIR/mysql
  119. ln -sv $SQL/bin/* /usr/local/mysql/bin &> $B
  120. ln -sv $SQL/include /usr/include/mysql
  121. ldconfig
  122. service mysqld start
  123. if netstat -tnlp|grep mysqld &> /dev/null ;then
  124. echo "mysql-5.5 install success..."
  125. fi

PHP.SH

 

 
  
  1. #!/bin/bash  
  2. PHPDIR=/usr/local/webserver/php  
  3. SOFT=/data2/software  
  4. B=/dev/null 
  5. SQL=/usr/local/webserver/mysql  
  6. ! [ -e $SOFT ] && mkdir -p $SOFT  
  7. cd $SOFT  
  8. echo "downloading some software of php,please wait a moment..." 
  9. wget http://cn2.php.net/get/php-5.4.4.tar.bz2/from/this/mirror  
  10. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-2.5.8-4.el5.centos.x86_64.rpm  
  11. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-devel-2.5.8-4.el5.centos.x86_64.rpm  
  12. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-0.9.9-1.el5.centos.x86_64.rpm  
  13. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-devel-0.9.9-1.el5.centos.x86_64.rpm  
  14. wget http://www.jasonlitka.com/media/EL5/i386/libmcrypt-2.5.8-4.el5.centos.i386.rpm  
  15. wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-0.9.9-1.el5.centos.i386.rpm  
  16. wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-devel-0.9.9-1.el5.centos.i386.rpm  
  17. #!/bin/bash  
  18. PHPDIR=/usr/local/webserver/php  
  19. SOFT=/data2/software  
  20. B=/dev/null 
  21. SQL=/usr/local/webserver/mysql  
  22. ! [ -e $SOFT ] && mkdir -p $SOFT  
  23. cd $SOFT  
  24. echo "downloading some software of php,please wait a moment..." 
  25. wget http://cn2.php.net/get/php-5.4.4.tar.bz2/from/this/mirror  
  26. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-2.5.8-4.el5.centos.x86_64.rpm  
  27. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-devel-2.5.8-4.el5.centos.x86_64.rpm  
  28. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-0.9.9-1.el5.centos.x86_64.rpm  
  29. #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-devel-0.9.9-1.el5.centos.x86_64.rpm  
  30. wget http://www.jasonlitka.com/media/EL5/i386/libmcrypt-2.5.8-4.el5.centos.i386.rpm  
  31. wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-0.9.9-1.el5.centos.i386.rpm  
  32. wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-devel-0.9.9-1.el5.centos.i386.rpm  
  33. wget http://mirror.centos.org/centos/5/extras/i386/RPMS/libmcrypt-devel-2.5.8-4.el5.centos.i386.rpm  
  34. rpm -ivh ./*.rpm  
  35. tar xf php-5.4.4.tar.bz2  
  36. cd php-5.4.4  
  37. ./configure --prefix=$PHPDIR --with-config-file-path=$PHPDIR/etc --with-mysql=$SQL --with-mysqli=$SQL/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-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --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  
  38. ln -s $SQL/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18  
  39. if [ -d /usr/lib64 ];then 
  40. ln -s $SQL/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18  
  41. fi  
  42. make ZEND_EXTRA_LIBS='-liconv' 
  43. make install  
  44. cp php.ini-production $PHPDIR/etc/php.ini  
  45. cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm  
  46. chmod +x /etc/rc.d/init.d/php-fpm  
  47. cp $PHPDIR/etc/php-fpm.conf.default $PHPDIR/etc/php-fpm.conf  
  48. sed -i -e "s#pm.max_children = 5#pm.max_children = 50#" -e "s#pm.start_servers = 2#pm.start_servers = 5#" -e "s#pm.min_spare_servers = 1#pm.min_spare_servers = 2#" -e "s#pm.max_spare_servers = 3#pm.max_spare_servers = 8#" -e "s#;pid = run/php-fpm.pid#pid = run/php-fpm.pid#" $PHPDIR/etc/php-fpm.conf  
  49.  
  50. ehco "add memcache modules..." 
  51.  
  52. wget wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz  
  53. tar xf memcache-2.2.5.tgz  
  54. cd memcache-2.2.5  
  55. /usr/local/webserver/php/bin/phpize  
  56. ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config  
  57. make  
  58. make install  
  59. cd ..  
  60. sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/"\nextension = "memcache.so"#' /usr/local/webserver/php/etc/php.ini  
  61. sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/webserver/php/etc/php.ini  
  62. sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/webserver/php/etc/php.ini  
  63. sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/webserver/php/etc/php.ini  

NGINX.SH

 

 
  
  1. #!/bin/bash  
  2. NGINX=/usr/local/webserver/nginx  
  3. SOFT=/data2/software  
  4. B=/dev/null 
  5. LOG=/data1/logs/  
  6. WEBDIR1=/data0/htdocs/blog  
  7. WEBDIR2=/data0/htdocs/www  
  8. ! [ -e $SOFT ] && mkdir -p $SOFT  
  9. ! [ -e $WEBDIR1 ] && mkdir -p $WEBDIR1  
  10. ! [ -e $WEBDIR2 ] && mkdir $WEBDIR2  
  11. ! [ -e $LOG ] && mkdir -p $LOG  
  12. cd $SOFT  
  13. echo "downloading nginx ..." 
  14.  
  15. wget http://nginx.org/download/nginx-1.2.2.tar.gz ;  
  16. /usr/bin/yum install pcre-devel  
  17. tar xf nginx-1.2.2.tar.gz  
  18. cd nginx-1.2.2  
  19. echo "begin to install nginx .." 
  20. if id www ;then echo "www exist.." 
  21. else groupadd www  
  22.      useradd -g www www  
  23. fi  
  24.  
  25. chmod +w $WEBDIR1 $WEBDIR2  
  26. chown -R www:www $WEBDIR1 $WEBDIR2  
  27. ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module  
  28. make  
  29. make install  
  30. echo "config the nginx please wait.." 
  31. mv $NGINX/conf/nginx.conf $NGINX/conf/nginx.conf.bak  
  32. cat >> $NGINX/conf/nginx.conf << “EOF”  
  33. user  www www;  
  34. worker_processes 8;  
  35. error_log  /data1/logs/nginx_error.log  crit;  
  36. pid        /usr/local/webserver/nginx/nginx.pid;  
  37. #Specifies the value for maximum file descriptors that can be opened by this process.  
  38. worker_rlimit_nofile 65535;  
  39.  
  40. events  
  41. {  
  42.   use epoll;  
  43.   worker_connections 65535;  
  44. }  
  45.  
  46. http  
  47. {  
  48.   include       mime.types;  
  49.   default_type  application/octet-stream;  
  50.  
  51.   #charset  gb2312;  
  52.  
  53.   server_names_hash_bucket_size 128;  
  54.   client_header_buffer_size 32k;  
  55.   large_client_header_buffers 4 32k;  
  56.   client_max_body_size 8m;  
  57.  
  58.   sendfile on;  
  59.   tcp_nopush     on;  
  60.  
  61.   keepalive_timeout 60;  
  62.  
  63.   tcp_nodelay on;  
  64.  
  65.   fastcgi_connect_timeout 300;  
  66.   fastcgi_send_timeout 300;  
  67.   fastcgi_read_timeout 300;  
  68.   fastcgi_buffer_size 64k;  
  69.   fastcgi_buffers 4 64k;  
  70.   fastcgi_busy_buffers_size 128k;  
  71.   fastcgi_temp_file_write_size 128k;  
  72.  
  73.   gzip on;  
  74.   gzip_min_length  1k;  
  75.   gzip_buffers     4 16k;  
  76.   gzip_http_version 1.0;  
  77.   gzip_comp_level 2;  
  78.   gzip_types       text/plain application/x-javascript text/css application/xml;  
  79.   gzip_vary on;  
  80.  
  81.   #limit_zone  crawler  $binary_remote_addr  10m;  
  82.  
  83.   server  
  84.   {  
  85.     listen       80;  
  86.     server_name  blog.s135.com;  
  87.     index index.html index.htm index.php;  
  88.     root  /data0/htdocs/blog;  
  89.  
  90.     #limit_conn   crawler  20;  
  91.  
  92.     location ~ .*\.(php|php5)?$  
  93.     {  
  94.       #fastcgi_pass  unix:/tmp/php-cgi.sock;  
  95.       fastcgi_pass  127.0.0.1:9000;  
  96.       fastcgi_index index.php;  
  97.       include fcgi.conf;  
  98.     }  
  99.  
  100.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
  101.     {  
  102.       expires      30d;  
  103.     }  
  104.  
  105.     location ~ .*\.(js|css)?$  
  106.     {  
  107.       expires      1h;  
  108.     }  
  109.  
  110.     log_format  access  '$remote_addr - $remote_user [$time_local] "$request" ' 
  111.               '$status $body_bytes_sent "$http_referer" ' 
  112.               '"$http_user_agent" $http_x_forwarded_for';  
  113.     access_log  /data1/logs/access.log  access;  
  114.       }  
  115.  
  116.   server  
  117.   {  
  118.     listen       80;  
  119.     server_name  www.s135.com;  
  120.     index index.html index.htm index.php;  
  121.     root  /data0/htdocs/www;  
  122.  
  123.     location ~ .*\.(php|php5)?$  
  124.     {  
  125.       #fastcgi_pass  unix:/tmp/php-cgi.sock;  
  126.       fastcgi_pass  127.0.0.1:9000;  
  127.       fastcgi_index index.php;  
  128.       include fcgi.conf;  
  129.     }  
  130.  
  131.     log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] "$request" ' 
  132.                '$status $body_bytes_sent "$http_referer" ' 
  133.                '"$http_user_agent" $http_x_forwarded_for';  
  134.     access_log  /data1/logs/wwwlogs.log  wwwlogs;  
  135.   }  
  136.  
  137.   server  
  138.   {  
  139.     listen  80;  
  140.     server_name  status.blog.s135.com;  
  141.  
  142.     location / {  
  143.     stub_status on;  
  144.     access_log   off;  
  145.     }  
  146.   }  
  147. }  
  148. EOF  
  149.  
  150. cat > $NGINX/conf/fcgi.conf << "EOF" 
  151. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;fastcgi_param  SERVER_SOFTWARE    nginx;fastcgi_param  QUERY_STRING       $query_string;fastcgi_param  REQUEST_METHOD     $request_method;fastcgi_param  CONTENT_TYPE       $content_type;fastcgi_param  CONTENT_LENGTH     $content_length;fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;fastcgi_param  REQUEST_URI        $request_uri;fastcgi_param  DOCUMENT_URI       $document_uri;fastcgi_param  DOCUMENT_ROOT      $document_root;fastcgi_param  SERVER_PROTOCOL    $server_protocol;fastcgi_param  REMOTE_ADDR        $remote_addr;fastcgi_param  REMOTE_PORT        $remote_port;fastcgi_param  SERVER_ADDR        $server_addr;fastcgi_param  SERVER_PORT        $server_port;fastcgi_param  SERVER_NAME        $server_name;# PHP only, required if PHP was built with --enable-force-cgi-redirectfastcgi_param  REDIRECT_STATUS    200;  
  152. EOF  
  153.  
  154. ulimit -SHn 65535  
  155. if $NGINX/sbin/nginx; then echo "nginx running" 
  156. fi  
  157. /sbin/service php-fpm start  
  158. if netstat -tnlp|grep 9000;then echo "php-fpm running" 
  159. fi  

如果感觉复制粘贴麻烦 我把脚本上传了 可以下载附件