lnmp安装脚本

#!/bin/bash
 . /etc/init.d/functions 
 
 
function nginx_optimization(){
#nginx配置
     worker_cpu_list=(0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000)
     cpu_number=`lscpu |awk 'NR==4{print $NF}'`
     _worker_processes=$cpu_number
     
     [ $cpu_number -gt 16 ]&&cpu_number=16
     cpu_number=$((--cpu_number))
     [ $cpu_number -eq 0 ]&&cpu_number=''|| _worker_cpu_affinity=`for ((i=0;i<=cpu_number;i++));do echo  ${worker_cpu_list[$i]};done|cut -c $((16-cpu_number))|xargs -n $((++cpu_number))`
     
     mkdir /usr/local/nginx/conf/vhosts -p
     
     cp /usr/local/nginx/conf/nginx.conf{,.default.bak}
     cat>/usr/local/nginx/conf/nginx.conf<<'EOF'
user nginx nginx;    
worker_processes ; 
error_log /var/log/nginx/error.log info;
pid   /var/run/nginx.pid; 
worker_rlimit_nofile 65535;  
worker_cpu_affinity  ;
events {
    use epoll;   
    multi_accept on; 
    worker_connections 65535;  
}
http{
    include mime.types; 
    default_type application/octet-stream; 
    server_names_hash_bucket_size 128; 
    client_header_buffer_size 4k;  
    large_client_header_buffers 4 64k; 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"$gzip_ratio" $request_time $bytes_sent $request_length $upstream_addr';
 
    client_max_body_size   100m;  
    sendfile on;     
    server_tokens off;  
    tcp_nopush     on;   
    tcp_nodelay    on;  
    keepalive_timeout 60; 
    request_pool_size 4k; 
    connection_pool_size        256;  
    client_header_timeout  15; 
    send_timeout 15;  
    client_body_timeout 15;
    output_buffers  4 32k;  
    postpone_output  1460; 
    client_body_temp_path  /usr/local/nginx/client_body_temp;
    fastcgi_temp_path /usr/local/nginx/nginx_tmp ;
    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; 
    open_file_cache max=65535 inactive=20s;
    open_file_cache_min_uses 1;  
    open_file_cache_valid 30s;  
    proxy_connect_timeout 90;  
    proxy_read_timeout 180;   
    proxy_send_timeout  180;
    proxy_buffer_size 16K;
    proxy_buffers 4 256k; 
    proxy_temp_path  /usr/local/nginx/proxy_temp_dir;
    proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;
    fastcgi_intercept_errors on;
    gzip on; 
    gzip_min_length 1k; 
    gzip_buffers 4 32k; 
    gzip_comp_level 2;
    gzip_types  text/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml; 
    gzip_vary on; 
    gzip_proxied     any; 
    gzip_disable "MSIE [1-6].(?!.*SV1)"; 
    include vhosts/*.conf; 
}
EOF

     sed -i "s#worker_cpu_affinity #worker_cpu_affinity $_worker_cpu_affinity #"  /usr/local/nginx/conf/nginx.conf
     sed -i "s#worker_processes #worker_processes $_worker_processes #"  /usr/local/nginx/conf/nginx.conf
     
}
 

 
function nginx_install(){
     yum -y install zlib zlib-devel openssl openssl-devel pcre-devel gcc gcc-c++ autoconf automake
     cd /usr/local/src
     wget http://nginx.org/download/nginx-1.15.2.tar.gz
     tar xf nginx-1.15.2.tar.gz     
     cd nginx-1.15.2
     useradd  -s /sbin/nologin  -M nginx
     ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-pcre --with-stream
     make && make install
     /usr/local/nginx/sbin/nginx
     if [ `echo $?` -ne 0 ];then
         action "nginx 1.15.2 install False"  /bin/false
         exit 1
     else
         action "nginx 1.15.2 install Success"  /bin/true
         nginx_optimization
     fi
     
}


function mysql5_6_install(){
    cd /usr/local/src/
    wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.40.tar.gz
    tar xf  mysql-5.6.40.tar.gz
    cd mysql-5.6.40
    yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
    useradd  -s /sbin/nologin  -M  mysql
    mkdir  /data/mysqldata -p
    chown -R mysql.mysql  /data/mysqldata
    cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysqldata/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/data/mysqldata/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
    make && make install
    [ `echo $?` -ne 0 ]&& exit 1
    cp support-files/mysql.server /etc/init.d/mysqld
    chmod +x  /etc/init.d/mysqld 
    echo export PATH=`echo $PATH:/usr/local/mysql/bin` >> /etc/profile
    source /etc/profile
    /bin/cp /etc/my.cnf{,.default}
    
    
    _innodb_buffer_pool_size=`free -g|awk 'NR==2{print $2*0.7}'|awk -F"."  '{print $1}'`
    if [ $_innodb_buffer_pool_size -eq 0 ];then
        _innodb_buffer_pool_size=${_innodb_buffer_pool_size}G
    else
        _innodb_buffer_pool_size=120M
    fi
    
    /bin/cat>/etc/my.cnf<<EOF
    [client]                                         
port    = 3306                                      
socket  = /tmp/mysql.sock                      
[mysql]
default-character-set = utf8                        
[mysqld]
datadir = /data/                                     
pid-file = /data/mysqldata/mysql.pid                       
log_error = /data/mysqldata/mysql.err                      
port = 3306                                         
socket = /tmp/mysql.sock                            
character_set_server = utf8                         
slow_query_log = 1                                  
slow_query_log_file = /data/mysqldata/localhost-slow.log
long_query_time = 1                                 
                                                      
max_tmp_tables = 64                                 
max_heap_table_size = 64M                            
tmp_table_size = 512M                               
slave_load_tmpdir = /data/mysqldata                       
tmpdir = /data/mysqldata                                   
                                                      
back_log = 500                                     
skip-name-resolve                                   
max_allowed_packet = 32M                            
max_connections = 4000                            
max_connect_errors = 2000                          
wait_timeout = 300                                
binlog_cache_size = 1M                              
                                                      
table_open_cache = 1024                             
#thread_concurrency = 4                              
#thread_cache_size = 64                            
#thread_handling = pool-of-threads                   
#thread_pool_high_prio_mode = none                   
#thread_pool_idle_timeout = 28800                    
#thread_pool_oversubscribe = 20                      
query_cache_type = 1                                
query_cache_size = 128M                                
key_buffer_size = 256M                              
myisam_sort_buffer_size = 32M                       
read_buffer_size = 8M                               
read_rnd_buffer_size = 4M                           
sort_buffer_size = 16M                              
join_buffer_size = 16M                              
default_storage_engine = InnoDB                     
innodb_data_home_dir = /data/mysqldata               
innodb_data_file_path = ibdata1:256M:autoextend     
innodb_log_group_home_dir = /data/mysqldata               
innodb_log_files_in_group = 2                       
innodb_log_file_size = 512M                         
innodb_log_buffer_size = 8M                         
innodb_flush_log_at_trx_commit = 2                  
innodb_flush_method = O_DIRECT                      
innodb_lock_wait_timeout = 50                       
innodb_thread_concurrency = 16                     
innodb_buffer_pool_size = ${_innodb_buffer_pool_size}
innodb_additional_mem_pool_size = 20M               
innodb_io_capacity = 1500                           
innodb_use_native_aio = 1                           
innodb_file_per_table = 1                           
innodb_open_files = 3000                            
innodb_print_all_deadlocks = 1                      
memlock = 1                                         
server-id = 1137                                    
log-bin = /data/mysqldata/mysql-bin                 
binlog_format = mixed                               
expire_logs_days = 7                                
relay_log = /data/mysqldata/relay-bin               
skip-slave-start                                    
sync_binlog = 1                                     
[mysqldump]
default-character-set = utf8
EOF
    

    cd /usr/local/mysql
    scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysqldata --user=mysql 
    
    [ $? -eq 0 ]&&/etc/init.d/mysqld start
     if [ `echo $?` -ne 0 ];then
         action "mysql 5.6 install False"  /bin/false
     else
         action "mysql 5.6 install Success"  /bin/true
         exit 2

     fi
    ###初始化
    #mysql -e "DELETE FROM mysql.user WHERE User='';"
    #mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" 
    #mysql -e "DROP DATABASE IF EXISTS test;" 
    #mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
    #mysql -e "FLUSH PRIVILEGES;"
    
        
}

function php_optimization(){
      #常用扩展安装
     #openssl
     cd /usr/local/src/php-5.6.35
     cd /usr/local/src/php-5.6.35/ext/openssl/
     mv config0.m4 config.m4
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install
     
     #curl
     cd  /usr/local/src/php-5.6.35/ext/curl/
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install
     #zip
     cd /usr/local/src/php-5.6.35/ext/zip/
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install
     #redis4.1.1
     cd /usr/local/src/
     wget https://github.com/phpredis/phpredis/archive/4.1.1.tar.gz
     tar xf 4.1.1.tar.gz 
     cd phpredis-4.1.1/
     /usr/local/php/bin/phpize 
      ./configure --with-php-config=/usr/local/php/bin/php-config
      make && make install
     #mcrypt
     cd /usr/local/src/php-5.6.35/ext/mcrypt/
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install

#memcache

cd /usr/local/src/

wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar xf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install


##memcached
cd /usr/local/src/

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar xf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18/
./configure --prefix=/usr/local/libmemcached
make && make install

cd /usr/local/src/
wget https://pecl.php.net/get/memcached-2.1.0.tgz

tar xf memcached-2.1.0.tgz
cd memcached-2.1.0/
/usr/local/php/bin/phpize
./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make

make install


#gd cd /usr/local/src/php-5.6.35/ext/gd/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install cd /usr/local/php/lib/php/extensions/no-debug-non-zts-
*/ _extensions_dir=`pwd` cp /usr/local/php/php.ini{,.default} cat>/usr/local/php/php.ini<<EOF [PHP] engine = On short_open_tag = Off asp_tags = Off precision = 14 output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = 17 disable_functions = passthru,shell_exec,chroot,chgrp,chown,exec,system,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,readlink,symlink,popen,stream_socket_server,proc_open,syslog disable_classes = zend.enable_gc = On expose_php = On max_execution_time = 300 max_input_time = 300 memory_limit = 128M error_reporting = E_ALL display_errors = Off display_startup_errors = On log_errors = On log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On track_errors = On html_errors = On variables_order = "GPCS" request_order = "GP" register_argc_argv = Off auto_globals_jit = On post_max_size = 16M auto_prepend_file = auto_append_file = default_mimetype = "text/html" default_charset = "UTF-8" doc_root = user_dir = enable_dl = Off file_uploads = On upload_max_filesize = 2M max_file_uploads = 20 allow_url_fopen = On allow_url_include = Off default_socket_timeout = 60 [CLI Server] cli_server.color = On [Date] date.timezone = "Asia/Shanghai" [filter] [iconv] [intl] [sqlite3] [Pcre] [Pdo] [Pdo_mysql] pdo_mysql.cache_size = 2000 pdo_mysql.default_socket= [Phar] [mail function] SMTP = localhost smtp_port = 25 mail.add_x_header = On [SQL] sql.safe_mode = Off [ODBC] odbc.allow_persistent = On odbc.check_persistent = On odbc.max_persistent = -1 odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 [Interbase] ibase.allow_persistent = 1 ibase.max_persistent = -1 ibase.max_links = -1 ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ibase.dateformat = "%Y-%m-%d" ibase.timeformat = "%H:%M:%S" [MySQL] mysql.allow_local_infile = On mysql.allow_persistent = On mysql.cache_size = 2000 mysql.max_persistent = -1 mysql.max_links = -1 mysql.default_port = mysql.default_socket = mysql.default_host = mysql.default_user = mysql.default_password = mysql.connect_timeout = 60 mysql.trace_mode = Off [MySQLi] mysqli.max_persistent = -1 mysqli.allow_persistent = On mysqli.max_links = -1 mysqli.cache_size = 2000 mysqli.default_port = 3306 mysqli.default_socket = mysqli.default_host = mysqli.default_user = mysqli.default_pw = mysqli.reconnect = Off [mysqlnd] mysqlnd.collect_statistics = On mysqlnd.collect_memory_statistics = On [OCI8] [PostgreSQL] pgsql.allow_persistent = On pgsql.auto_reset_persistent = Off pgsql.max_persistent = -1 pgsql.max_links = -1 pgsql.ignore_notice = 0 pgsql.log_notice = 0 [Sybase-CT] sybct.allow_persistent = On sybct.max_persistent = -1 sybct.max_links = -1 sybct.min_server_severity = 10 sybct.min_client_severity = 10 [bcmath] bcmath.scale = 0 [browscap] [Session] session.save_handler = files session.use_strict_mode = 0 session.use_cookies = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440 session.referer_check = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.hash_function = 0 session.hash_bits_per_character = 5 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" [MSSQL] mssql.allow_persistent = On mssql.max_persistent = -1 mssql.max_links = -1 mssql.min_error_severity = 10 mssql.min_message_severity = 10 mssql.compatibility_mode = Off mssql.secure_connection = Off [Assertion] [COM] [mbstring] [gd] [exif] [Tidy] tidy.clean_output = Off [soap] soap.wsdl_cache_enabled=1 soap.wsdl_cache_dir="/tmp" soap.wsdl_cache_ttl=86400 soap.wsdl_cache_limit = 5 [sysvshm] [ldap] ldap.max_links = -1 [mcrypt] [dba] [opcache] [curl] [openssl] extension_dir = "$_extensions_dir" extension = "curl.so" extension = "openssl.so" extension = "mcrypt.so" extension = "gd.so" extension = "zip.so" extension = "redis.so" EOF cat>/usr/local/php/etc/php-fpm.conf<<EOF [global] pid = run/php-fpm.pid error_log = log/php-fpm.log [www] user = nginx group = nginx listen = 127.0.0.1:9000 pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 rlimit_files = 65535 EOF } function php5_6_install(){ yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel libmcrypt-devel mhash mcrypt cd /usr/local/src/ wget http://cn2.php.net/get/php-5.6.35.tar.gz/from/this/mirror mv mirror php-5.6.35.tar.gz tar xf php-5.6.35.tar.gz wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz tar xf libiconv-1.15.tar.gz cd libiconv-1.15 ./configure --prefix=/usr/local/libiconv make && make install cd /usr/local/src/php-5.6.35 ./configure \ --prefix=/usr/local/php \ --with-gd \ --with-zlib \ --with-mysql=mysqlnd \ --with-config-file-path=/usr/local/php \ --enable-mbstring \ --enable-fpm \ --enable-sockets \ --enable-sigchild \ --with-iconv-dir=/usr/local/libiconv \ --with-jpeg-dir \ --with-png-dir \ --enable-ftp \ --with-freetype-dir \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd make && make install cp -a /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/src/php-5.6.30/php.ini-development /usr/local/php/php.ini /usr/local/php/sbin/php-fpm if [ `echo $?` -ne 0 ];then action "php5.6 install False" /bin/false exit 3 else action "php5.6 install Success" /bin/true php_optimization fi } cat<<EOF -n nginx1.15.2安装 php5.6安装 mysql5.6安装 nginx+php安装 lnmp安装(全部安装) EOF read -p '输入服务的编号:' number case $number in 1) nginx_install ;; 2) php5_6_install ;; 3) mysql5_6_install ;; 4) nginx_install php5_6_install ;; 5) nginx_install php5_6_install mysql5_6_install ;; *) echo "number 1-5 !!!" ;; esac

 

简单优化后的脚本(为测试,先记录)

#!/bin/bash
 . /etc/init.d/functions 
 
 
function nginx_optimization(){
#nginx配置
     cpu_number=`lscpu |awk 'NR==4{print $NF}'`
     _worker_processes=$cpu_number
     c=`for i in {1..$cpu_number};do echo -n "0";done`
     _worker_cpu_affinity=`for i in $(seq $cpu_number);do echo -n "$c "|sed "s#0#1#${i}";done` 
     
     mkdir /usr/local/nginx/conf/vhosts -p
     
    # cp /usr/local/nginx/conf/nginx.conf{,.default.bak}
     cat>/usr/local/nginx/conf/nginx.conf<<'EOF'
user nginx nginx;    
worker_processes ; 
error_log /var/log/nginx/error.log info;
pid   /var/run/nginx.pid; 
worker_rlimit_nofile 65535;  
worker_cpu_affinity  ;
events {
    use epoll;   
    multi_accept on; 
    worker_connections 65535;  
}
http{
    include mime.types; 
    default_type application/octet-stream; 
    server_names_hash_bucket_size 128; 
    client_header_buffer_size 4k;  
    large_client_header_buffers 4 64k; 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"$gzip_ratio" $request_time $bytes_sent $request_length $upstream_addr';
 
    client_max_body_size   100m;  
    sendfile on;     
    server_tokens off;  
    tcp_nopush     on;   
    tcp_nodelay    on;  
    keepalive_timeout 60; 
    request_pool_size 4k; 
    connection_pool_size        256;  
    client_header_timeout  15; 
    send_timeout 15;  
    client_body_timeout 15;
    output_buffers  4 32k;  
    postpone_output  1460; 
    client_body_temp_path  /usr/local/nginx/client_body_temp;
    fastcgi_temp_path /usr/local/nginx/nginx_tmp ;
    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; 
    open_file_cache max=65535 inactive=20s;
    open_file_cache_min_uses 1;  
    open_file_cache_valid 30s;  
    proxy_connect_timeout 90;  
    proxy_read_timeout 180;   
    proxy_send_timeout  180;
    proxy_buffer_size 16K;
    proxy_buffers 4 256k; 
    proxy_temp_path  /usr/local/nginx/proxy_temp_dir;
    proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;
    fastcgi_intercept_errors on;
    gzip on; 
    gzip_min_length 1k; 
    gzip_buffers 4 32k; 
    gzip_comp_level 2;
    gzip_types  text/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml; 
    gzip_vary on; 
    gzip_proxied     any; 
    gzip_disable "MSIE [1-6].(?!.*SV1)"; 
    include vhosts/*.conf; 
}
EOF
    
     if [ $cpu_number -eq 1 ];then
         sed -i "/worker_cpu_affinity/d"  /usr/local/nginx/conf/nginx.conf
     else
         sed -i "s#worker_cpu_affinity#worker_cpu_affinity $_worker_cpu_affinity #g"  /usr/local/nginx/conf/nginx.conf
     fi
     sed -i "s#worker_processes #worker_processes $_worker_processes #"  /usr/local/nginx/conf/nginx.conf
     
}
 

 
function nginx_install(){
     yum -y install zlib zlib-devel openssl openssl-devel pcre-devel gcc gcc-c++ autoconf automake
     cd /usr/local/src
     [ -f nginx-1.15.2.tar.gz ]||wget http://nginx.org/download/nginx-1.15.2.tar.gz
     tar xf nginx-1.15.2.tar.gz     
     cd nginx-1.15.2
     useradd  -s /sbin/nologin  -M nginx
     ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-pcre --with-stream
     make && make install
     mkdir /var/log/nginx -p
     chown nginx.nginx /var/log/nginx
     /usr/local/nginx/sbin/nginx
     if [ `echo $?` -ne 0 ];then
         action "nginx 1.15.2 install False"  /bin/false
         exit 1
     else
         action "nginx 1.15.2 install Success"  /bin/true
         nginx_optimization
     fi
     
}


function mysql5_6_install(){
    cd /usr/local/src/
    wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.40.tar.gz
    tar xf  mysql-5.6.40.tar.gz
    cd mysql-5.6.40
    yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
    useradd  -s /sbin/nologin  -M  mysql
    mkdir  /data/mysqldata -p
    chown -R mysql.mysql  /data/mysqldata
    cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysqldata/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/data/mysqldata/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
    make && make install
    [ `echo $?` -ne 0 ]&& exit 1
    cp support-files/mysql.server /etc/init.d/mysqld
    chmod +x  /etc/init.d/mysqld 
    echo export PATH=`echo $PATH:/usr/local/mysql/bin` >> /etc/profile
    source /etc/profile
    /bin/cp /etc/my.cnf{,.default}
    
    
    _innodb_buffer_pool_size=`free -g|awk 'NR==2{print $2*0.7}'|awk -F"."  '{print $1}'`
    if [ $_innodb_buffer_pool_size -eq 0 ];then
        _innodb_buffer_pool_size=${_innodb_buffer_pool_size}G
    else
        _innodb_buffer_pool_size=120M
    fi
    
    /bin/cat>/etc/my.cnf<<EOF
cat>/etc/my.cnf<<EOF
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
back_log = 50
skip-name-resolve
default-storage-engine = innodb
slow_query_log
slow-query-log-file=/data/mysqldata/localhost-slow.log
datadir = /data/mysqldata
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
EOF
    

cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysqldata --user=mysql 

[ $? -eq 0 ]&&/etc/init.d/mysqld start
 if [ `echo $?` -ne 0 ];then
     action "mysql 5.6 install False"  /bin/false
 else
     action "mysql 5.6 install Success"  /bin/true
     exit 2

 fi
###初始化
#mysql -e "DELETE FROM mysql.user WHERE User='';"
#mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" 
#mysql -e "DROP DATABASE IF EXISTS test;" 
#mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
#mysql -e "FLUSH PRIVILEGES;"
    
        
}

function php_optimization(){
      #常用扩展安装
     #openssl
     cd /usr/local/src/php-5.6.35
     cd /usr/local/src/php-5.6.35/ext/openssl/
     mv config0.m4 config.m4
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install
     
     #curl
     cd  /usr/local/src/php-5.6.35/ext/curl/
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install
     #zip
     cd /usr/local/src/php-5.6.35/ext/zip/
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install
     #redis4.1.1
     cd /usr/local/src/
     wget https://github.com/phpredis/phpredis/archive/4.1.1.tar.gz
     tar xf 4.1.1.tar.gz 
     cd phpredis-4.1.1/
     /usr/local/php/bin/phpize 
      ./configure --with-php-config=/usr/local/php/bin/php-config
      make && make install
     #mcrypt
     cd /usr/local/src/php-5.6.35/ext/mcrypt/
     /usr/local/php/bin/phpize 
     ./configure --with-php-config=/usr/local/php/bin/php-config
     make && make install

#memcache 

cd /usr/local/src/
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar xf memcache-2.2.7.tgz 
cd memcache-2.2.7
/usr/local/php/bin/phpize 
./configure  --with-php-config=/usr/local/php/bin/php-config
make
make install

##memcached

cd /usr/local/src/
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar xf libmemcached-1.0.18.tar.gz 
cd libmemcached-1.0.18/
./configure --prefix=/usr/local/libmemcached
make && make install
cd /usr/local/src/
tar xf memcached-2.1.0.tgz 
cd memcached-2.1.0/
/usr/local/php/bin/phpize 
 ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make 
make install


#gd
cd /usr/local/src/php-5.6.35/ext/gd/
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
cd   /usr/local/php/lib/php/extensions/no-debug-non-zts-*/
_extensions_dir=`pwd`
cp /usr/local/php/php.ini{,.default}
cat>/usr/local/php/php.ini<<EOF
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions = passthru,shell_exec,chroot,chgrp,chown,exec,system,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,readlink,symlink,popen,stream_socket_server,proc_open,syslog
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
error_reporting = E_ALL
display_errors = Off
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = On
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 16M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
date.timezone = "Asia/Shanghai"
[filter]
[iconv]
[intl]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = On
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatibility_mode = Off
mssql.secure_connection = Off
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[opcache]
[curl]
[openssl]
extension_dir = "$_extensions_dir"
extension = "curl.so"
extension = "openssl.so"
extension = "mcrypt.so"
;extension = "gd.so"
extension = "zip.so"
extension = "redis.so"

EOF


     cat>/usr/local/php/etc/php-fpm.conf<<EOF
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
 
 
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
 
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
 
pm.max_requests = 500
rlimit_files = 65535     
EOF

}


function php5_6_install(){
     yum install  -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel libmcrypt-devel mhash mcrypt
     cd /usr/local/src/
     wget http://cn2.php.net/get/php-5.6.35.tar.gz/from/this/mirror
     mv mirror  php-5.6.35.tar.gz
     tar xf php-5.6.35.tar.gz
     wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
     tar xf libiconv-1.15.tar.gz
     cd libiconv-1.15
     ./configure --prefix=/usr/local/libiconv 
     make && make install 
     cd /usr/local/src/php-5.6.35
 ./configure \
--prefix=/usr/local/php \
 --with-gd \
 --with-zlib \
 --with-mysql=mysqlnd \
 --with-config-file-path=/usr/local/php \
 --enable-mbstring \
 --enable-fpm \
 --enable-sockets \
 --enable-sigchild \
 --with-iconv-dir=/usr/local/libiconv \
 --with-jpeg-dir \
 --with-png-dir \
 --enable-ftp \
 --with-freetype-dir \
 --with-mysqli=mysqlnd \
 --with-pdo-mysql=mysqlnd 
 
     make && make install 
     cp -a /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf
     cp /usr/local/src/php-5.6.30/php.ini-development  /usr/local/php/php.ini
     /usr/local/php/sbin/php-fpm 
     if [ `echo $?` -ne 0 ];then
         action "php5.6 install False"  /bin/false
         exit 3
     else
         action "php5.6 install Success"  /bin/true
         php_optimization
     fi
     

     
}



cat<<EOF -n
  nginx1.15.2安装
  php5.6安装
  mysql5.6安装
  nginx+php安装
  lnmp安装(全部安装)
EOF


read -p '输入服务的编号:' number

case  $number in
  1)
     nginx_install   
     ;;
  2)
     php5_6_install
     ;;
  3)
     mysql5_6_install
     ;;
  4)
     nginx_install   
     php5_6_install
     ;;
  5)
     nginx_install
     php5_6_install
     mysql5_6_install
     ;;
  *)
     echo "number 1-5 !!!"
     ;;
     
esac
lnmp_install.sh

 

 

最新lnmp(php7.2+mysql5.7)[已测试]

#!/bin/bash

. /etc/init.d/functions 
 
#nginx安装目录
NGINX_HOME_IDR=/usr/local/nginx
#mysql安装目录 
MYSQL_HOME_DIR=/usr/local/mysql
#mysql数据目录
MYSQL_DATA_DIR=/home/mysql
#php安装目录
PHP_HOME_DIR=/usr/local/php
#编译包存放目录
COMPILE_DIR=/usr/local/src

 
function nginx_optimization(){
#nginx配置
    cpu_number=`lscpu |awk 'NR==4{print $NF}'`
    _worker_processes=$cpu_number
    c=`for i in $(seq $cpu_number);do echo -n "0";done`
    _worker_cpu_affinity=`for i in $(seq $cpu_number);do echo -n "$c "|sed "s#0#1#${i}";done` 
    mkdir ${NGINX_HOME_IDR}/conf/vhosts -p
     
    # cp /usr/local/nginx/conf/nginx.conf{,.default.bak}
    cat>${NGINX_HOME_IDR}/conf/nginx.conf<<'EOF'
user  nginx;   
worker_processes ; 
error_log /var/log/nginx/error.log info;
pid   /var/run/nginx.pid; 
worker_rlimit_nofile 65535;  
worker_cpu_affinity  ;
events {
    use epoll;   
    multi_accept on; 
    worker_connections 65535;  
}
http{
    include mime.types; 
    default_type application/octet-stream; 
    server_names_hash_bucket_size 128; 
    client_header_buffer_size 4k;  
    large_client_header_buffers 4 64k; 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"$gzip_ratio" $request_time $bytes_sent $request_length $upstream_addr';
 
    client_max_body_size   100m;  
    sendfile on;     
    server_tokens off;  
    tcp_nopush     on;   
    tcp_nodelay    on;  
    keepalive_timeout 60; 
    request_pool_size 4k; 
    connection_pool_size        256;  
    client_header_timeout  15; 
    send_timeout 15;  
    client_body_timeout 15;
    output_buffers  4 32k;  
    postpone_output  1460; 
    client_body_temp_path  /usr/local/nginx/client_body_temp;
    fastcgi_temp_path /usr/local/nginx/nginx_tmp ;
    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; 
    open_file_cache max=65535 inactive=20s;
    open_file_cache_min_uses 1;  
    open_file_cache_valid 30s;  
    proxy_connect_timeout 90;  
    proxy_read_timeout 180;   
    proxy_send_timeout  180;
    proxy_buffer_size 16K;
    proxy_buffers 4 256k; 
    proxy_temp_path  /usr/local/nginx/proxy_temp_dir;
    proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;
    fastcgi_intercept_errors on;
    gzip on; 
    gzip_min_length 1k; 
    gzip_buffers 4 32k; 
    gzip_comp_level 2;
    gzip_types  text/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml; 
    gzip_vary on; 
    gzip_proxied     any; 
    gzip_disable "MSIE [1-6].(?!.*SV1)"; 
    include vhosts/*.conf; 
}
EOF
    cat>${NGINX_HOME_IDR}/conf/vhosts/default.conf<<'EOF'
server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
}        
EOF

    #添加service启动文件
    cat>/usr/lib/systemd/system/nginx.service<<EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=${NGINX_HOME_IDR}/sbin/nginx -t
ExecStart=${NGINX_HOME_IDR}/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

    
    if [ $cpu_number -eq 1 ];then
        sed -i "/worker_cpu_affinity/d"  ${NGINX_HOME_IDR}/conf/nginx.conf
    else
        sed -i "s#worker_cpu_affinity#worker_cpu_affinity $_worker_cpu_affinity #g"  ${NGINX_HOME_IDR}/conf/nginx.conf
    fi
    sed -i "s#worker_processes #worker_processes $_worker_processes #"  ${NGINX_HOME_IDR}/conf/nginx.conf
    sed -i "s#/usr/local/nginx#${NGINX_HOME_IDR}#g" ${NGINX_HOME_IDR}/conf/nginx.conf
    
}
 

 
function nginx1_15_install(){
    yum -y install zlib zlib-devel openssl openssl-devel pcre-devel gcc gcc-c++ autoconf automake
    cd ${COMPILE_DIR}
    [ -f nginx-1.15.2.tar.gz ]||wget http://nginx.org/download/nginx-1.15.2.tar.gz
    tar xf nginx-1.15.2.tar.gz     
    cd nginx-1.15.2
    useradd  -s /sbin/nologin  -M nginx
    ./configure --prefix=${NGINX_HOME_IDR} --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-pcre --with-stream
    make && make install
    mkdir /var/log/nginx -p
    ${NGINX_HOME_IDR}/sbin/nginx
    if [ $? -ne 0 ];then
        action "nginx 1.15.2 install False"  /bin/false
        exit 1
    else
        action "nginx 1.15.2 install Success"  /bin/true
        nginx_optimization
        pkill nginx
        sleep 1
        systemctl  start nginx
        systemctl  status nginx
    fi
    
}


function mysql5_7_install(){
    cd ${COMPILE_DIR} 
    [ -f mysql-boost-5.7.28.tar.gz ]|| wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz
    tar xf  mysql-boost-5.7.28.tar.gz
    yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake openssl openssl-devel
    useradd  -s /sbin/nologin  -M  mysql
    mkdir  ${MYSQL_DATA_DIR} -p
    chown -R mysql.mysql  ${MYSQL_DATA_DIR}
    [ -f boost_1_59_0.tar.gz ]||wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
    tar xf boost_1_59_0.tar.gz
    mv boost_1_59_0   /usr/local/
    ln -s /usr/local/boost_1_59_0   /usr/local/boost
    cd mysql-5.7.28
    cmake \
-DCMAKE_INSTALL_PREFIX=${MYSQL_HOME_DIR} \
-DMYSQL_DATADIR=${MYSQL_DATA_DIR}/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=${MYSQL_DATA_DIR}/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
    make && make install
    [ $? -ne 0 ]&& exit 1
    cp support-files/mysql.server /etc/init.d/mysqld
    chmod +x  /etc/init.d/mysqld 
    export PATH=$PATH:${MYSQL_HOME_DIR}/bin
    echo export PATH=`echo $PATH:${MYSQL_HOME_DIR}/bin` >> /etc/profile
    source /etc/profile
    cp /etc/my.cnf{,.default}
    
    _innodb_buffer_pool_size=`free -g|awk 'NR==2{print $2*0.7}'|awk -F"."  '{print $1}'`
    if [ $_innodb_buffer_pool_size -le 1 ];then
        _innodb_buffer_pool_size=120M
    else
        _innodb_buffer_pool_size=${_innodb_buffer_pool_size}G
    fi
    cp /etc/my.cnf{,.default}
    cat>/etc/my.cnf<<EOF
[mysqld]
basedir = ${MYSQL_HOME_DIR}
datadir = ${MYSQL_DATA_DIR}
port = 3306
server_id = 1
sql_mode=only_full_group_by
socket = ${MYSQL_DATA_DIR}/mysql.sock
pid-file = ${MYSQL_DATA_DIR}/mysql.pid
log-error=${MYSQL_DATA_DIR}/mysql.err
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
user=mysql
slow_query_log = 1
slow_query_log_file = ${MYSQL_DATA_DIR}/mysql_slow_query.log
long_query_time = 5
log_queries_not_using_indexes = ON
max_connections=2000
skip-name-resolve
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1
innodb_autoinc_lock_mode = 2
innodb_flush_method=O_DIRECT
innodb_io_capacity=2000
innodb_io_capacity_max=6000
innodb_lru_scan_depth=2000
innodb_thread_concurrency = 0
innodb_buffer_pool_size = ${_innodb_buffer_pool_size}                      
sync_binlog=1
sync_relay_log=1
relay-log-info-repository=TABLE
master-info-repository=TABLE
expire_logs_days=7
binlog_format=ROW
transaction-isolation=READ-COMMITTED
tmp_table_size=512M
skip-external-locking
back_log=1024
key_buffer_size=1024M
thread_stack=256k
read_buffer_size=8M
thread_cache_size=64
query_cache_size=128M
max_heap_table_size=256M
query_cache_type=1
binlog_cache_size = 2M
table_open_cache=128
wait_timeout=300
join_buffer_size = 1024M
sql_mode = ""
sort_buffer_size = 8M
read_rnd_buffer_size = 8M
max-connect-errors=100000
explicit_defaults_for_timestamp=true
EOF
    

    cd ${MYSQL_HOME_DIR}
    #bin/mysql_install_db --basedir=${MYSQL_HOME_DIR} --datadir=${MYSQL_DATA_DIR} --user=mysql 
    cat>/usr/lib/systemd/system/mysql.service<<EOF
[Unit]
Description=mysql
After=network.target
[Service]
Type=forking
User=mysql
Group=mysql
PIDFile=${MYSQL_DATA_DIR}/mysql.pid
ExecStart=/etc/init.d/mysqld start
ExecStop=/etc/init.d/mysqld stop
TimeoutSec=300
PrivateTmp=true

[Install]
WantedBy=multi-user.target

EOF
    bin/mysqld --initialize
    [ $? -eq 0 ]&&systemctl  start mysql||exit 3
    if [  $? -ne 0 ];then
        action "mysql 5.7.28 install False"  /bin/false
            exit 2
    else
            action "mysql 5.7.28 install Success"  /bin/true
            root_password=`grep password ${MYSQL_DATA_DIR}/mysql.err|awk '{print $NF}'`
        echo -e "\033[31mroot初始化密码: \033[0m\033[32m ${root_password} \033[0m"
            echo -e "\033[31mroot修改密码sql语句: \033[0m\033[32m  
            alter user 'root'@'localhost' identified by 'youpassword';
            flush privileges;
            \033[0m 
            "
    fi
        
}

function php_optimization(){
    yum install git -y
    #常用扩展安装
    cd ${COMPILE_DIR}/php-7.2.29/ext
    git clone https://gitee.com/swoole/swoole.git
    cd swoole
    ${PHP_HOME_DIR}/bin/phpize
    ./configure --with-php-config=${PHP_HOME_DIR}/bin/php-config
    make && make install
    #openssl
    cd ${COMPILE_DIR}/php-7.2.29/ext/openssl/
    mv config0.m4 config.m4
    ${PHP_HOME_DIR}/bin/phpize
    ./configure --with-php-config=${PHP_HOME_DIR}/bin/php-config
    make && make install
    
    #curl
    cd ${COMPILE_DIR}/php-7.2.29/ext/curl/
    ${PHP_HOME_DIR}/bin/phpize
    ./configure --with-php-config=${PHP_HOME_DIR}/bin/php-config
    make && make install
    #zip
    cd ${COMPILE_DIR}/php-7.2.29/ext/zip/
    ${PHP_HOME_DIR}/bin/phpize
    ./configure --with-php-config=${PHP_HOME_DIR}/bin/php-config
    make && make install
    #redis4.1.1
    cd ${COMPILE_DIR}/php-7.2.29/ext
    wget https://github.com/phpredis/phpredis/archive/4.1.1.tar.gz
    tar xf 4.1.1.tar.gz 
    cd phpredis-4.1.1/
    ${PHP_HOME_DIR}/bin/phpize
    ./configure --with-php-config=${PHP_HOME_DIR}/bin/php-config
    make && make install
    #gd
    cd ${COMPILE_DIR}/php-7.2.29/ext/gd/
    ${PHP_HOME_DIR}/bin/phpize
    ./configure --with-php-config=${PHP_HOME_DIR}/bin/php-config
    make && make install    
    cd ${PHP_HOME_DIR}/lib/php/extensions/no-debug-*/
    _extensions_dir=`pwd`
cat>${PHP_HOME_DIR}/php.ini<<EOF
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
;disable_functions = passthru,shell_exec,chroot,chgrp,chown,exec,system,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,readlink,symlink,popen,stream_socket_server,proc_open,syslog
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
error_reporting = E_ALL
display_errors = Off
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = On
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 16M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
date.timezone = "Asia/Shanghai"
[filter]
[iconv]
[intl]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = On
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatibility_mode = Off
mssql.secure_connection = Off
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[opcache]
[curl]
[openssl]
extension_dir = "$_extensions_dir"
extension = "curl.so"
extension = "openssl.so"
extension = "gd.so"
extension = "zip.so"
extension = "redis.so"
extension = "swoole.so"

EOF


}


function php7_2_install(){
    yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel 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 ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
    cd ${COMPILE_DIR}
    [ -f php-7.2.29.tar.gz ]|| wget https://www.php.net/distributions/php-7.2.29.tar.gz
    tar xf php-7.2.29.tar.gz
    make && make install 
    cd ${COMPILE_DIR}/php-7.2.29
    ./configure \
--prefix=${PHP_HOME_DIR} \
--enable-fpm \
--with-config-file-path=${PHP_HOME_DIR}/etc \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-pdo \
--with-iconv-dir  \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir= \
--enable-xml \
--enable-session \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-pcntl \
--enable-ftp \
--with-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--enable-opcache \
--enable-maintainer-zts \
--with-xsl \
--enable-tokenizer
 
    make && make install 
    cp ${PHP_HOME_DIR}/etc/php-fpm.conf.default   ${PHP_HOME_DIR}/etc/php-fpm.conf
    cp ${PHP_HOME_DIR}/etc/php-fpm.d/www.conf.default  ${PHP_HOME_DIR}/etc/php-fpm.d/www.conf
    ${PHP_HOME_DIR}/sbin/php-fpm 
    if [  $? -ne 0 ];then
        action "php7.2.29 install False"  /bin/false
        exit 3
    else
        action "php7.2.29 install Success"  /bin/true
        php_optimization
    fi
          
}


cat<<EOF -n
  nginx1.15.2安装
  php7.2.29安装
  mysql5.7.28安装
  nginx+php安装
  lnmp安装(全部安装)
EOF


read -p '输入服务的编号:' number

case  $number in
  1)
     nginx1_15_install   
     ;;
  2)
     php7_2_install
     ;;
  3)
     mysql5_7_install
     ;;
  4)
     nginx1_15_install     
     php7_2_install
     ;;
  5)
     nginx1_15_install
     php7_2_install
     mysql5_7_install
     ;;
  *)
     echo "number 1-5 !!!"
     ;;
     
esac
lnmp_install.sh

 

posted @ 2018-08-10 11:22  巽逸  阅读(128)  评论(0)    收藏  举报