去公司boss叫写个LNMP自动安装的脚本折腾了三天写完 体积有点臃肿 但是能自动安装的。现在就把三个脚本贡献给博友们。。。
安装脚本分为3段sql.sh php.sh 和 nginx.sh
安装过程也请按照这个顺序安装就行
SQL.SH
- #!/bin/bash
- SOFT=/data2/software
- B=/dev/null
- SQL=/usr/local/webserver/mysql
- SQLDIR=/data0/mysql/3306
- PATHROOT=/usr/local/webserver
- ! [ -e $SQLDIR ] && mkdir -p $SQLDIR/{data,binlog,relaylog}
- ! [ -e $PATHROOT ] && mkdir -p $PATHROOT
- echo "downloading msyql-5.5...please wait a moment..."
- cd $SOFT
- wget http://mirror.trouble-free.net/mysql_mirror/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz
- wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
- ! id mysql && groupadd -r mysql && useradd -r -g mysql -M -s /sbin/nologin mysql &> $B
- tar xf cmake-2.8.6.tar.gz
- 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
- cd cmake-2.8.6
- ./configure
- make
- make install
- cd ..
- tar xf mysql-5.5.25a.tar.gz
- cd mysql-5.5.25a
- 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
- make
- make install
- cd $ SQL
- cp support-files/my-medium.cnf /data0/mysql/3306/data/my.cnf
- cp /usr/local/webserver/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
- chmod +x /etc/rc.d/init.d/mysqld
- ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
- chown -R mysql:mysql ./* $SQLDIR
- chmod +w $SQL
- $SQL/scripts/mysql_install_db --basedir=$SQL --datadir=$SQLDIR/data --user=mysql
- cat >>$SQLDIR/my.cnf<<EOF
- [client]
- character-set-server = utf8
- port = 3306
- socket = /tmp/mysql.sock
- [mysqld]
- character-set-server = utf8
- replicate-ignore-db = mysql
- replicate-ignore-db = test
- replicate-ignore-db = information_schema
- user = mysql
- port = 3306
- socket = /tmp/mysql.sock
- basedir = /usr/local/webserver/mysql
- datadir = /data0/mysql/3306/data
- log-error = /data0/mysql/3306/mysql_error.log
- pid-file = /data0/mysql/3306/mysql.pid
- open_files_limit = 10240
- back_log = 600
- max_connections = 5000
- max_connect_errors = 6000
- table_cache = 614
- external-locking = FALSE
- max_allowed_packet = 32M
- sort_buffer_size = 1M
- join_buffer_size = 1M
- thread_cache_size = 300
- #thread_concurrency = 8
- query_cache_size = 512M
- query_cache_limit = 2M
- query_cache_min_res_unit = 2k
- default-storage-engine = MyISAM
- thread_stack = 192K
- transaction_isolation = READ-COMMITTED
- tmp_table_size = 246M
- max_heap_table_size = 246M
- long_query_time = 3
- log-slave-updates
- log-bin = /data0/mysql/3306/binlog/binlog
- binlog_cache_size = 4M
- binlog_format = MIXED
- max_binlog_cache_size = 8M
- max_binlog_size = 1G
- relay-log-index = /data0/mysql/3306/relaylog/relaylog
- relay-log-info-file = /data0/mysql/3306/relaylog/relaylog
- relay-log = /data0/mysql/3306/relaylog/relaylog
- expire_logs_days = 30
- key_buffer_size = 256M
- read_buffer_size = 1M
- read_rnd_buffer_size = 16M
- bulk_insert_buffer_size = 64M
- myisam_sort_buffer_size = 128M
- myisam_max_sort_file_size = 10G
- myisam_repair_threads = 1
- myisam_recover
- interactive_timeout = 120
- wait_timeout = 120
- skip-name-resolve
- #master-connect-retry = 10
- slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
- #master-host = 192.168.1.2
- #master-user = username
- #master-password = password
- #master-port = 3306
- server-id = 1
- innodb_additional_mem_pool_size = 16M
- innodb_buffer_pool_size = 512M
- innodb_data_file_path = ibdata1:256M:autoextend
- innodb_file_io_threads = 4
- innodb_thread_concurrency = 8
- innodb_flush_log_at_trx_commit = 2
- innodb_log_buffer_size = 16M
- innodb_log_file_size = 128M
- innodb_log_files_in_group = 3
- innodb_max_dirty_pages_pct = 90
- innodb_lock_wait_timeout = 120
- innodb_file_per_table = 0
- #log-slow-queries = /data0/mysql/3306/slow.log
- #long_query_time = 10
- [mysqldump]
- quick
- max_allowed_packet = 32M
- EOF
- mkdir -pv /usr/local/mysql/bin
- chmod +x $SQLDIR/mysql
- ln -sv $SQL/bin/* /usr/local/mysql/bin &> $B
- ln -sv $SQL/include /usr/include/mysql
- ldconfig
- service mysqld start
- if netstat -tnlp|grep mysqld &> /dev/null ;then
- echo "mysql-5.5 install success..."
- fi
PHP.SH
- #!/bin/bash
- PHPDIR=/usr/local/webserver/php
- SOFT=/data2/software
- B=/dev/null
- SQL=/usr/local/webserver/mysql
- ! [ -e $SOFT ] && mkdir -p $SOFT
- cd $SOFT
- echo "downloading some software of php,please wait a moment..."
- wget http://cn2.php.net/get/php-5.4.4.tar.bz2/from/this/mirror
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-2.5.8-4.el5.centos.x86_64.rpm
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-devel-2.5.8-4.el5.centos.x86_64.rpm
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-0.9.9-1.el5.centos.x86_64.rpm
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-devel-0.9.9-1.el5.centos.x86_64.rpm
- wget http://www.jasonlitka.com/media/EL5/i386/libmcrypt-2.5.8-4.el5.centos.i386.rpm
- wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-0.9.9-1.el5.centos.i386.rpm
- wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-devel-0.9.9-1.el5.centos.i386.rpm
- #!/bin/bash
- PHPDIR=/usr/local/webserver/php
- SOFT=/data2/software
- B=/dev/null
- SQL=/usr/local/webserver/mysql
- ! [ -e $SOFT ] && mkdir -p $SOFT
- cd $SOFT
- echo "downloading some software of php,please wait a moment..."
- wget http://cn2.php.net/get/php-5.4.4.tar.bz2/from/this/mirror
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-2.5.8-4.el5.centos.x86_64.rpm
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/libmcrypt-devel-2.5.8-4.el5.centos.x86_64.rpm
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-0.9.9-1.el5.centos.x86_64.rpm
- #wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/mhash-devel-0.9.9-1.el5.centos.x86_64.rpm
- wget http://www.jasonlitka.com/media/EL5/i386/libmcrypt-2.5.8-4.el5.centos.i386.rpm
- wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-0.9.9-1.el5.centos.i386.rpm
- wget http://mirror.centos.org/centos/5/extras/i386/RPMS/mhash-devel-0.9.9-1.el5.centos.i386.rpm
- wget http://mirror.centos.org/centos/5/extras/i386/RPMS/libmcrypt-devel-2.5.8-4.el5.centos.i386.rpm
- rpm -ivh ./*.rpm
- tar xf php-5.4.4.tar.bz2
- cd php-5.4.4
- ./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
- ln -s $SQL/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
- if [ -d /usr/lib64 ];then
- ln -s $SQL/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
- fi
- make ZEND_EXTRA_LIBS='-liconv'
- make install
- cp php.ini-production $PHPDIR/etc/php.ini
- cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
- chmod +x /etc/rc.d/init.d/php-fpm
- cp $PHPDIR/etc/php-fpm.conf.default $PHPDIR/etc/php-fpm.conf
- 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
- ehco "add memcache modules..."
- wget wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
- tar xf memcache-2.2.5.tgz
- cd memcache-2.2.5
- /usr/local/webserver/php/bin/phpize
- ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config
- make
- make install
- cd ..
- 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
- sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/webserver/php/etc/php.ini
- sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/webserver/php/etc/php.ini
- sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/webserver/php/etc/php.ini
NGINX.SH
- #!/bin/bash
- NGINX=/usr/local/webserver/nginx
- SOFT=/data2/software
- B=/dev/null
- LOG=/data1/logs/
- WEBDIR1=/data0/htdocs/blog
- WEBDIR2=/data0/htdocs/www
- ! [ -e $SOFT ] && mkdir -p $SOFT
- ! [ -e $WEBDIR1 ] && mkdir -p $WEBDIR1
- ! [ -e $WEBDIR2 ] && mkdir $WEBDIR2
- ! [ -e $LOG ] && mkdir -p $LOG
- cd $SOFT
- echo "downloading nginx ..."
- wget http://nginx.org/download/nginx-1.2.2.tar.gz ;
- /usr/bin/yum install pcre-devel
- tar xf nginx-1.2.2.tar.gz
- cd nginx-1.2.2
- echo "begin to install nginx .."
- if id www ;then echo "www exist.."
- else groupadd www
- useradd -g www www
- fi
- chmod +w $WEBDIR1 $WEBDIR2
- chown -R www:www $WEBDIR1 $WEBDIR2
- ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
- make
- make install
- echo "config the nginx please wait.."
- mv $NGINX/conf/nginx.conf $NGINX/conf/nginx.conf.bak
- cat >> $NGINX/conf/nginx.conf << “EOF”
- user www www;
- worker_processes 8;
- error_log /data1/logs/nginx_error.log crit;
- pid /usr/local/webserver/nginx/nginx.pid;
- #Specifies the value for maximum file descriptors that can be opened by this process.
- worker_rlimit_nofile 65535;
- events
- {
- use epoll;
- worker_connections 65535;
- }
- http
- {
- include mime.types;
- default_type application/octet-stream;
- #charset gb2312;
- server_names_hash_bucket_size 128;
- client_header_buffer_size 32k;
- large_client_header_buffers 4 32k;
- client_max_body_size 8m;
- sendfile on;
- tcp_nopush on;
- keepalive_timeout 60;
- tcp_nodelay on;
- fastcgi_connect_timeout 300;
- fastcgi_send_timeout 300;
- fastcgi_read_timeout 300;
- fastcgi_buffer_size 64k;
- fastcgi_buffers 4 64k;
- fastcgi_busy_buffers_size 128k;
- fastcgi_temp_file_write_size 128k;
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 4 16k;
- gzip_http_version 1.0;
- gzip_comp_level 2;
- gzip_types text/plain application/x-javascript text/css application/xml;
- gzip_vary on;
- #limit_zone crawler $binary_remote_addr 10m;
- server
- {
- listen 80;
- server_name blog.s135.com;
- index index.html index.htm index.php;
- root /data0/htdocs/blog;
- #limit_conn crawler 20;
- location ~ .*\.(php|php5)?$
- {
- #fastcgi_pass unix:/tmp/php-cgi.sock;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- include fcgi.conf;
- }
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
- {
- expires 30d;
- }
- location ~ .*\.(js|css)?$
- {
- expires 1h;
- }
- log_format access '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" $http_x_forwarded_for';
- access_log /data1/logs/access.log access;
- }
- server
- {
- listen 80;
- server_name www.s135.com;
- index index.html index.htm index.php;
- root /data0/htdocs/www;
- location ~ .*\.(php|php5)?$
- {
- #fastcgi_pass unix:/tmp/php-cgi.sock;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- include fcgi.conf;
- }
- log_format wwwlogs '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" $http_x_forwarded_for';
- access_log /data1/logs/wwwlogs.log wwwlogs;
- }
- server
- {
- listen 80;
- server_name status.blog.s135.com;
- location / {
- stub_status on;
- access_log off;
- }
- }
- }
- EOF
- cat > $NGINX/conf/fcgi.conf << "EOF"
- 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;
- EOF
- ulimit -SHn 65535
- if $NGINX/sbin/nginx; then echo "nginx running"
- fi
- /sbin/service php-fpm start
- if netstat -tnlp|grep 9000;then echo "php-fpm running"
- fi
如果感觉复制粘贴麻烦 我把脚本上传了 可以下载附件