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(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

浙公网安备 33010602011771号