shell脚本:lnmp等源码安装脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本:lnmp等源码安装脚本相关的知识,希望对你有一定的参考价值。
##脚本功能:
#
##脚本说明:
#
##更新记录:
# 1、增加dns、nginx的配置文件
# 2、优化mysql、nginx、dns等安装的部分函数
# 3、增加安装gonet服务的功能函数
--------------------------
#!/bin/bash # by colin on 2016-01-06 # revision on 2016-04-29 ################################## ##脚本功能: # 源码安装dns、nginx、php、memcached、gonet、mysql,并做相关的配置 # ##脚本说明: # ##更新记录: # 1、增加dns、nginx的配置文件 # 2、优化mysql、nginx、dns等安装的部分函数 # 3、增加安装gonet服务的功能函数 # ################################## PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin RUN_LOG=‘/var/log/install_status.log‘ [ -f ${RUN_LOG} ] && rm ${RUN_LOG} echoGoodLog(){ echo -e "\033[32m`date +%F" "%T":"%N` $*\033[0m" | tee -a ${RUN_LOG} } echoBadLog(){ echo -e "\033[31m`date +%F" "%T":"%N` $*\033[0m" | tee -a ${RUN_LOG} } echoLine(){ sleep 3 echo -e "\033[34m================LINE BETWEEN================\033[0m" } echoGoodLog "Now, Script: `basename $0` run." ## # 路径与包变量定义 # SCRIPTPWD=`pwd` IPADDRETH0=`ifconfig eth0|grep "Bcast:"|awk ‘{print $2}‘|awk -F: ‘{print $2}‘` DIRPACKAGE="${SCRIPTPWD}/package/" DIRCONFIG="${SCRIPTPWD}/configs/" NGINXPACKAGENAME=‘nginx-1.8.0.tar.gz‘ PHPPACKAGENAME=‘php-5.5.28.tar.gz‘ MEMCACHED_PHP=‘memcache-3.0.8.tgz‘ MYSQLPACKAGENAME=‘mysql-5.5.44.tar.gz‘ ## # 检查shell环境 # BASHENV=`ls -lh /bin/sh |grep "bash"|wc -l` [ "${BASHENV}" -eq 0 ] && { echoBadLog "Please set shell scripts environment..." echoLine echoBadLog "Usage: ln -fs /bin/bash /bin/sh ; or Usage: dpkg-reconfigure dash" echoGoodLog "And re-run shell-scripts: sh `basename $0` , To install services." exit 0 } ## # 检查/data分区是否挂载 # checkDataPart(){ DEFAULT_DISKPART=‘/data‘ DISKPART=${1:-$DEFAULT_DISKPART} mountpoint ${DISKPART} [ $? -eq 1 ] && { echoBadLog "${DISKPART} is not a mountpoint..." echoBadLog "`basename $0` exit, Please check..." exit } DISKDATATOTAL=`expr $(df -P|grep "${DISKPART}"|awk ‘{print $2}‘) - 104857600` [ ${DISKDATATOTAL} -le 0 ] && { echoBadLog "${DISKPART} total size < 100GB, Please check..." read -n 1 -p "请确认${DISKPART}分区是否挂载正确,正确:Y|y ,输入N|n或其它将退出:" OK echo case ${OK} in Y|y) return 0;; *) echoBadLog "`basename $0` exit, Please check..."; exit;; esac } } ## # 判断IP是否符合标准规则 # judgeIpAddr(){ local $1 2>/dev/null TMP_TXT=/tmp/iptmp$$.txt echo $1 > ${TMP_TXT} IP_ADDR=`grep -Eo ‘([0-9]{1,3}\.){3}[0-9]{1,3}‘ ${TMP_TXT}` if [ ! -z "${IP_ADDR}" ];then local j=0 for ((i=1;i<=4;i++)) do local IP_NUM=`echo "${IP_ADDR}" |awk -F. "{print $"$i"}"` if [ "${IP_NUM}" -ge 0 -a "${IP_NUM}" -le 255 ];then ((j++)) else return 1 fi done if [ "$j" -eq 4 ];then read -n 1 -p "输入的IP地址是:${IP_ADDR} ,确认:Y|y;否则:R|r:" OK echo case ${OK} in Y|y) rm -rf ${TMP_TXT} ; return 0;; R|r) return 1;; *) return 1;; esac else return 1 fi else return 1 fi } ## # 输入IP # readRightIpAddr(){ IP_TYPE=$1 read -p "请输入${IP_TYPE}的IP地址值:" IP_ADDRS judgeIpAddr "${IP_ADDRS}" i=`echo $?` until [ "$i" -eq 0 ];do echoBadLog "你输入了错误的${IP_TYPE}IP地址为:${IP_ADDRS} ====>>>>" read -p "重新输入${IP_TYPE}的IP地址,请输入:" IP_ADDRS echo judgeIpAddr "${IP_ADDRS}" i=`echo $?` done } ## # 传参:$1服务的关键词,$2服务的端口号 # checkInstallStatus(){ KEY_SERVER=$1 KEY_PORT=$2 PIDSTATUS=`ps -ef |grep ${KEY_SERVER} |grep -v "grep"|wc -l` PORTSTATUS=`lsof -i :${KEY_PORT}|wc -l` if [ "${PIDSTATUS}" -ge 1 -a "${PORTSTATUS}" -ge 1 ];then echoGoodLog "Start ${KEY_SERVER} services is successfully." return 0 else echoBadLog "Start ${KEY_SERVER} services was failed, Please check..." return 1 fi } ## # 传参:$1是启动脚本文件,命名格式为:start_服务名 # e.g.: start_nginx # INSTALLTXT=‘/tmp/install_lnmp_result.txt‘ [ -f ${INSTALLTXT} ] && rm ${INSTALLTXT} setStartScripts(){ INITSCRIPTSFILES=$1 SCRIPTSNAME="${INITSCRIPTSFILES#start_}" cd ${SCRIPTPWD} && [ -e ./configs/${INITSCRIPTSFILES} ] && { cp ./configs/${INITSCRIPTSFILES} /etc/init.d/${SCRIPTSNAME} dos2unix /etc/init.d/${SCRIPTSNAME} chmod +x /etc/init.d/${SCRIPTSNAME} sysv-rc-conf --level 2345 ${SCRIPTSNAME} on } echo "Start ${SCRIPTSNAME} services scripts: /etc/init.d/${SCRIPTSNAME}" >> ${INSTALLTXT} return 0 } ## # 优化系统内核 # setSystemKernel(){ [ -f ${DIRCONFIG}sysctl.conf ] && { dos2unix ${DIRCONFIG}sysctl.conf cat ${DIRCONFIG}sysctl.conf > /etc/sysctl.conf } sed -i "/^ulimit/d" /etc/profile && echo "ulimit -SHn 65500" >> /etc/profile cat > /etc/security/limits.conf <<EOF * soft nproc 65500 * hard nproc 65500 * soft nofile 65500 * hard nofile 65500 EOF } ## # 基本工具安装与设置 # installTool(){ echoGoodLog "Install tools." echoLine echo "nameserver 114.114.114.114" > /etc/resolv.conf PINGSTATUS=`ping -c 4 www.baidu.com |grep "packet loss"|awk -F, ‘{print $3}‘|grep -Eo ‘[0-9]+‘` [ "${PINGSTATUS}" -eq 0 ] || { echoBadLog "Please set the network for the system..." exit } # APTSOURCE=‘/etc/apt/sources.list‘ # [ -e ${APTSOURCE}.bak ] || cp ${APTSOURCE} ${APTSOURCE}.bak # cat > ${APTSOURCE} <<EOF # deb http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse # deb http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse # deb http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse # deb http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse # deb http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse # EOF # apt-get update apt-get install unzip wget make cmake lrzsz lsof sysv-rc-conf dos2unix -y if [ $? -eq 0 ];then echoGoodLog "Install unzip wget make cmake lrzsz are successfully." else echoBadLog "Install unzip wget make cmake lrzsz were failed, Please check..." exit 1 fi } setScriptCrontab(){ SCRIPTSRUNDIR=‘/root/train_service/‘ [ -d ${SCRIPTSRUNDIR} ] || mkdir -p ${SCRIPTSRUNDIR} [ -d ${DIRCONFIG}scripts ] && { cp -a ${DIRCONFIG}scripts/* ${SCRIPTSRUNDIR} && chmod +x ${SCRIPTSRUNDIR} -R cat >> /var/spool/cron/crontabs/root <<EOF */5 * * * * /root/train_service/system_status.sh -g >> /var/log/system_status_run_status.log 2>&1 & 0 * * * * /root/train_service/upload_record_gonet.sh >> /var/log/cron_scripts_run.log 2>&1 & EOF } } installBind9(){ echoGoodLog "Install DNS services." echoLine apt-get install bind9 -y [ $? -eq 0 ] && { [ -d ${DIRCONFIG}zones ] && { cp -a ${DIRCONFIG}zones /etc/bind/ || { echoBadLog "Set DNS config was failed, Please check..." return 1 } } DNSCONFOPTIONS=‘/etc/bind/named.conf.options‘ [ -e ${DNSCONFOPTIONS}.bak ] || cp ${DNSCONFOPTIONS} ${DNSCONFOPTIONS}.bak cat > ${DNSCONFOPTIONS} <<EOF options { directory "/var/cache/bind"; forwarders { 114.114.114.114; }; allow-query-cache { any; }; auth-nxdomain no; listen-on-v6 { any; }; }; EOF cat > /etc/bind/named.conf.local <<EOF zone "wonaonao.com" { type master; file "/etc/bind/zones/wonaonao.com.db"; }; zone "githubusercontent.com" { type master; file "/etc/bind/zones/githubusercontent.com.db"; }; zone "hoobanr.com" { type master; file "/etc/bind/zones/hoobanr.com.db"; }; zone "liziapp.com" { type master; file "/etc/bind/zones/liziapp.com.db"; }; EOF #---------------------- sed -i "s/LOCALIPADDR/${IPADDRETH0}/g" /etc/bind/zones/wonaonao.com.db readRightIpAddr ‘WEB端‘ # 调用IP输入函数,设置WEB的IP地址 sed -i "s/WEBIPADDR/${IP_ADDRS}/g" /etc/bind/zones/wonaonao.com.db sed -i "s/WEBIPADDR/${IP_ADDRS}/g" /etc/bind/zones/hoobanr.com.db echo "Start DNS services scripts: /etc/init.d/bind9" >> ${INSTALLTXT} /etc/init.d/bind9 restart checkInstallStatus named 53 } } #-------------------- NGINXPREFIX=‘/usr/local/nginx‘ NGINXLOGDIR=‘/data/store/logs/www‘ NGINXCACHEDIR=‘/var/cache/nginx‘ DIRNGINX=${NGINXPACKAGENAME%.tar.gz} installNginx(){ echoGoodLog "Install nginx services." echoLine apt-get install libpcre3-dev openssl libssl-dev -y [ -d ${NGINXPREFIX} ] && rm ${NGINXPREFIX} -rf cd ${SCRIPTPWD} && [ -d ${DIRNGINX} ] && rm ${DIRNGINX} -rf tar -zxf ${DIRPACKAGE}${NGINXPACKAGENAME} cd ${DIRNGINX} && { ./configure --prefix=${NGINXPREFIX} --user=www-data --group=www-data --conf-path=${NGINXPREFIX}/etc/nginx.conf --with-pcre --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --error-log-path=${NGINXLOGDIR}/error.log --http-log-path=${NGINXLOGDIR}/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=${NGINXCACHEDIR}/client_temp --http-proxy-temp-path=${NGINXCACHEDIR}/proxy_temp --http-fastcgi-temp-path=${NGINXCACHEDIR}/fastcgi_temp --http-uwsgi-temp-path=${NGINXCACHEDIR}/uwsgi_temp --http-scgi-temp-path=${NGINXCACHEDIR}/scgi_temp [ $? -eq 0 ] && make && make install [ -d ${NGINXCACHEDIR} ] || mkdir -p ${NGINXCACHEDIR} } cd ${NGINXPREFIX} && { cp -a ${DIRCONFIG}sites-enabled ./etc/ || { echoBadLog "Set Nginx sites-enabled config was failed, Please check..." return 1 } DIRNAME=( /data/hls /data/www/train /data/www/traindata ) for DIR in ${DIRNAME[@]} do if [ ! -d ${DIR} ];then mkdir -p ${DIR} chown -R www-data:www-data ${DIR} fi done [ -e ./etc/nginx.conf.bak ] || cp ./etc/nginx.conf ./etc/nginx.conf.bak cat > ./etc/nginx.conf <<EOF user www-data; worker_processes auto; error_log ${NGINXLOGDIR}/error.log; pid /var/run/nginx.pid; events { worker_connections 65535; multi_accept on; use epoll; } http { include ${NGINXPREFIX}/etc/mime.types; access_log ${NGINXLOGDIR}/access.log; log_format main ‘\$remote_addr - \$remote_user [\$time_local] "\$request" ‘ ‘\$status \$body_bytes_sent "\$http_referer" ‘ ‘"\$http_user_agent" "\$http_x_forwarded_for"‘; server_names_hash_bucket_size 128; client_header_buffer_size 128k; large_client_header_buffers 4 128k; client_max_body_size 500M; sendfile on; tcp_nopush on; types_hash_max_size 2048; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 256k; fastcgi_buffers 8 128k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; server_tokens off; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml application/json; gzip_vary on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; include ${NGINXPREFIX}/etc/sites-enabled/*.conf; } EOF } #-------------------- # INSTALLENVPATH是为了设置环境变量 # INSTALLENVPATH=":${NGINXPREFIX}/sbin" setStartScripts start_nginx [ $? -eq 0 ] && { /etc/init.d/nginx start checkInstallStatus nginx 80 } } #-------------------- PHPPREFIX=‘/usr/local/php5‘ PHPLOGDIR=‘/data/store/logs/www‘ DIRPHP=${PHPPACKAGENAME%.tar.gz} installPHP(){ echoGoodLog "Install PHP services." echoLine apt-get install gcc g++ curl autoconf automake autotools-dev binutils libxml2 libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev bzip2 libbz2-dev libxpm-dev libfreetype6-dev libedit-dev libxslt-dev libmcrypt-dev libjpeg8-dev libgd2-xpm libfontconfig1 libc6-dev libtool zlib1g-dev manpages-dev libreadline6-dev shtool libevent-dev libmemcached-dev -y [ -d ${PHPPREFIX} ] && rm ${PHPPREFIX} -rf cd ${SCRIPTPWD} && [ -d ${DIRPHP} ] && rm ${DIRPHP} -rf tar -zxf ${DIRPACKAGE}${PHPPACKAGENAME} cd ${DIRPHP} && { ./configure --prefix=${PHPPREFIX} --with-config-file-path=${PHPPREFIX}/etc --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mysqlnd --with-libxml-dir=/usr/lib/ --with-zlib-dir --with-xpm-dir=/usr/lib/ --with-mcrypt=/usr/bin/libmcrypt-config --with-gd --with-jpeg-dir --with-png-dir --with-xpm-dir --with-freetype-dir --enable-mbstring=all --enable-sockets --enable-soap --enable-fpm --enable-bcmath --enable-calendar --enable-dba --enable-exif --enable-ftp --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-opcache --enable-zip --with-xmlrpc --with-readline --with-openssl --with-mhash --with-gettext --with-curl --with-bz2 [ $? -eq 0 ] && make && make install [ $? -eq 0 ] || { echoBadLog "Install PHP services was failed, Please check..." return 1 } cp php.ini-production ${PHPPREFIX}/etc/php.ini sed -i ‘/;date.timezone/{s/;//g;s#=#= Asia/Shanghai#g}‘ ${PHPPREFIX}/etc/php.ini #cp ${PHPPREFIX}/etc/php-fpm.conf.default ${PHPPREFIX}/etc/php-fpm.conf cat > ${PHPPREFIX}/etc/php-fpm.conf <<EOF [global] pid = run/php-fpm.pid error_log = ${PHPLOGDIR}/php-fpm.log log_level = notice emergency_restart_threshold = 60 emergency_restart_interval = 60s [www] user = www-data group = www-data listen = 127.0.0.1:9000 listen.owner = www-data listen.group = www-data pm=static pm.max_children=50 pm.start_servers=20 pm.min_spare_servers=20 pm.max_spare_servers=50 pm.max_requests = 12000 pm.process_idle_timeout = 10s request_terminate_timeout = 120 request_slowlog_timeout = 30s slowlog = ${PHPLOGDIR}/php-fpm.log.slow EOF ${PHPPREFIX}/sbin/php-fpm -t if [ $? -eq 0 ];then echoGoodLog "Install PHP services is successfully." else echoBadLog "Install PHP services was failed, Please check..." fi } ln -s ${PHPPREFIX}/bin/php /usr/bin/php #-------------------- INSTALLENVPATH="${INSTALLENVPATH}:${PHPPREFIX}/bin" setStartScripts start_php-fpm [ $? -eq 0 ] && { /etc/init.d/php-fpm start checkInstallStatus php-fpm 9000 } } #-------------------- DIRMEM=${MEMCACHED_PHP%.tgz} installMemcached(){ echoGoodLog "Install memcached services." echoLine apt-get install libsasl2-dev memcached -y cd ${SCRIPTPWD} && [ -d ${DIRMEM} ] && rm ${DIRMEM} -rf tar -zxf ${DIRPACKAGE}${MEMCACHED_PHP} cd ${DIRMEM} && { ${PHPPREFIX}/bin/phpize ./configure --enable-memcache --with-php-config=${PHPPREFIX}/bin/php-config --with-zlib-dir [ $? -eq 0 ] && make && make install cat >> ${PHPPREFIX}/etc/php.ini <<EOF [memcache] extension_dir = "${PHPPREFIX}/lib/php/extensions/no-debug-non-zts-20121212/" extension = memcache.so EOF } echo "Start memcached services scripts: /etc/init.d/memcached" >> ${INSTALLTXT} /etc/init.d/memcached start checkInstallStatus memcached 11211 } ## # 配置gonet服务 # AC设备厂商:alb:阿鲁巴,at:傲天,rj:锐捷 # installGonet(){ echoGoodLog "Install gonet services." echoLine GONETTYPE=( alb at rj ) GONETPREFIX=‘/data/www/gonet/‘ [ -d ${GONETPREFIX} ] || mkdir -p ${GONETPREFIX} mkdir -p /data/store/logs/yjww && chmod 777 /data/store/logs/yjww readRightIpAddr ‘AC设备‘ echoGoodLog "AC设备厂商:alb:阿鲁巴,at:傲天,rj:锐捷" PS3="Please select AC provider: " select i in ${GONETTYPE[@]} do case $i in ${GONETTYPE[0]}) # alb cp -a ${DIRCONFIG}gonet/${GONETTYPE[0]}/* ${GONETPREFIX} sed -i "s/ACIPADDR/${IP_ADDRS}/g" ${GONETPREFIX}gonet.php [ $? -eq 0 ] && GONETINSTALLSTATUS=0 || GONETINSTALLSTATUS=1 break 2 ;; ${GONETTYPE[1]}) # at cp -a ${DIRCONFIG}gonet/${GONETTYPE[1]}/* ${GONETPREFIX} sed -i -e "s/ACIPADDR/${IP_ADDRS}/g" -e "s/LOCALIPADDR/${IPADDRETH0}/g" ${GONETPREFIX}config.php [ $? -eq 0 ] && GONETINSTALLSTATUS=0 || GONETINSTALLSTATUS=1 break 2 ;; ${GONETTYPE[2]}) # rj cp -a ${DIRCONFIG}gonet/${GONETTYPE[2]}/* ${GONETPREFIX} sed -i -e "s/ACIPADDR/${IP_ADDRS}/g" -e "s/LOCALIPADDR/${IPADDRETH0}/g" ${GONETPREFIX}define.php [ $? -eq 0 ] && GONETINSTALLSTATUS=0 || GONETINSTALLSTATUS=1 break 2 ;; esac done if [ "${GONETINSTALLSTATUS}" -eq 0 ];then echoGoodLog "Install gonet service is successfully." else echoBadLog "Install gonet service was failed, Please check..." fi } #-------------------- MYSQLPREFIX=‘/usr/local/mysql‘ MYSQLLOGDIR=‘/var/log/mysql‘ DIRMYSQL=${MYSQLPACKAGENAME%.tar.gz} MYSQLUSER_GROUP=‘mysql‘ MYSQLDATADIR=‘/data/mysql‘ installMysql(){ echoGoodLog "Install mysql services." echoLine groupadd ${MYSQLUSER_GROUP} && useradd ${MYSQLUSER_GROUP} -g ${MYSQLUSER_GROUP} -M -s /bin/false apt-get install cmake autoconf automake autotools-dev binutils libxml2 libxml2-dev libssl-dev libncurses5-dev libbison-dev build-essential -y [ -d ${MYSQLPREFIX} ] && rm ${MYSQLPREFIX} -rf cd ${SCRIPTPWD} && [ -d ${DIRMYSQL} ] && rm ${DIRMYSQL} -rf tar -zxf ${DIRPACKAGE}${MYSQLPACKAGENAME} cd ${DIRMYSQL} && { cmake . -DCMAKE_INSTALL_PREFIX=${MYSQLPREFIX} -DMYSQL_DATADIR=${MYSQLDATADIR} -DMYSQL_UNIX_ADDR=${MYSQLDATADIR}/mysql.sock -DSYSCONFDIR=${MYSQLPREFIX}/etc -DMYSQL_USER=${MYSQLUSER_GROUP} -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_SSL=system -DWITH_DEBUG=0 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 [ $? -eq 0 ] && make && make install [ $? -eq 0 ] || { echoBadLog "Install mysql services was failed, Please check..." return 1 } cd ${MYSQLPREFIX} && { mkdir -p {etc,${MYSQLDATADIR},${MYSQLLOGDIR}} chown -R ${MYSQLUSER_GROUP}:${MYSQLUSER_GROUP} ${MYSQLPREFIX} ${MYSQLDATADIR} ${MYSQLLOGDIR} cat > ${MYSQLPREFIX}/etc/my.cnf <<EOF [client] port = 3306 socket=/tmp/mysql.sock [mysqld_safe] open-files-limit = 8192 [mysqld] user = ${MYSQLUSER_GROUP} pid-file = ${MYSQLDATADIR}/mysqld.pid port = 3306 socket=/tmp/mysql.sock datadir = ${MYSQLDATADIR} basedir = ${MYSQLPREFIX} log_error = ${MYSQLLOGDIR}/error.log expire_logs_days = 10 back_log = 50 max_connections = 5000 max_connect_errors = 10 table_open_cache = 2048 max_allowed_packet = 16M binlog_cache_size = 1M max_heap_table_size = 64M read_buffer_size = 2M read_rnd_buffer_size = 16M sort_buffer_size = 8M join_buffer_size = 8M thread_cache_size = 8 thread_concurrency = 8 query_cache_size = 64M query_cache_limit = 2M ft_min_word_len = 4 default-storage-engine = INNODB thread_stack = 192K transaction_isolation = REPEATABLE-READ tmp_table_size = 64M log-bin = mysql-bin binlog_format = mixed max_binlog_size = 500M slow_query_log long_query_time = 2 server-id = 1 key_buffer_size = 32M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam-recover-options innodb_additional_mem_pool_size = 16M innodb_file_per_table = 1 #innodb_buffer_pool_size = 2G innodb_buffer_pool_size = 256M innodb_data_home_dir = innodb_data_file_path = ibdata1:10M:autoextend:max:1G innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 8M innodb_log_file_size = 256M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 [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 EOF #---------------- ./scripts/mysql_install_db --user=${MYSQLUSER_GROUP} --basedir=${MYSQLPREFIX} --datadir=${MYSQLDATADIR} --defaults-file=./etc/my.cnf cp ./support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql sysv-rc-conf --level 2345 mysql on } echo "Start mysql services scripts: /etc/init.d/mysql" >> ${INSTALLTXT} INSTALLENVPATH="${INSTALLENVPATH}:${MYSQLPREFIX}/bin" /etc/init.d/mysql start INSTEADNUM=`echo ${IPADDRETH0}|awk -F. ‘{print $NF}‘` MYSQLIPADDR=${IPADDRETH0%$INSTEADNUM} ${MYSQLPREFIX}/bin/mysql << EOF use mysql; delete from user where user=‘‘; grant all on rht_train.* to ‘wifidb‘@‘${MYSQLIPADDR}%‘ identified by ‘密码‘; grant all on rht_tongji.* to ‘wifidb‘@‘${MYSQLIPADDR}%‘; update user set password=password(‘密码‘) where user=‘root‘; flush privileges; EOF checkInstallStatus mysql 3306 #ln -fs ${MYSQLDATADIR}/mysql.sock /tmp/mysql.sock [ -f ${PHPPREFIX}/etc/php.ini ] && { sed -i "977d" ${PHPPREFIX}/etc/php.ini; A="pdo_mysql.default_socket=‘${MYSQLDATADIR}/mysql.sock‘"; sed -i "977i$A" ${PHPPREFIX}/etc/php.ini [ -f /etc/init.d/php-fpm ] && /etc/init.d/php-fpm restart } } } #传参,$1需要被安装服务-自定义的函数名 installServices(){ SERVICESNAME=$1 read -n 1 -p "Are you suer run ${SERVICESNAME#install} services:Y|y or N|n:" IS_INSTALL echo case ${IS_INSTALL} in Y|y) ${SERVICESNAME} ; return 0;; N|n) return 1;; *) return 1;; esac } #安装基础工具 installTool #检查/data分区是否正确挂载 checkDataPart #调用函数installServices,来提示是否安装DNS服务 installServices installBind9 installNginx installPHP installMemcached installServices installGonet installServices installMysql setScriptCrontab setSystemKernel UBUNTUPATH=‘/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games‘ sed -i "/export PATH=/d" /etc/profile echo "export PATH=${UBUNTUPATH}${INSTALLENVPATH}" >> /etc/profile #. /etc/profile source /etc/profile echoLine cat /tmp/install_lnmp_result.txt echoLine echo echoGoodLog "Script run done, But please exec command: source /etc/profile " echoGoodLog "请上传资源、web代码、gonet代码..." echoGoodLog "脚本已优化内核,请手动重启系统,重启之后才能生效!" echo exit 0
----------------------
本文出自 “上山路十八弯” 博客,转载请与作者联系!
以上是关于shell脚本:lnmp等源码安装脚本的主要内容,如果未能解决你的问题,请参考以下文章