此脚本是LNMP环境搭建Zabbix监控平台自动化安装脚本,有需要朋友可以参考,脚本内容如下:
系统环境:CentOS 7.4
软件版本:
Nginx:1.16.1
Mysql:5.7.29
PHP:7.3.7
Zabbix:4.4.3
[root@localhost ~]# vim auto_install_lnmp_zabbix.sh
- #!/bin/bash
- #Date:2018-5-20 14:08:55
- #Author Blog:
- # https://www.yangxingzhen.com
- #Author WeChat:
- # 微信公众号:小柒博客
- #Author mirrors site:
- # https://mirrors.yangxingzhen.com
- #About the Author
- # BY:YangXingZhen
- # Mail:[email protected]
- #Auto Install LNMP Environment And Zabbix
- source /etc/rc.d/init.d/functions
- #Define Nginx path variables
- NGINX_URL=http://nginx.org/download
- NGINX_FILE=nginx-1.16.1.tar.gz
- NGINX_FILE_DIR=nginx-1.16.1
- NGINX_PREFIX=/usr/local/nginx
- #Define Boost path variables
- Boost_URL=https://mirrors.yangxingzhen.com/mysql
- Boost_File=boost_1_59_0.tar.gz
- #Define Mysql path variables
- MYSQL_URL=http://mirrors.163.com/mysql/Downloads/MySQL-5.7
- MYSQL_FILES=mysql-5.7.29.tar.gz
- MYSQL_FILES_DIR=mysql-5.7.29
- MYSQL_PREFIX=/usr/local/mysql
- MYSQL_DIR=/data/mysql
- MYSQL_USER=mysql
- #Define ZIP path variables
- ZIP_URL=https://nih.at/libzip
- ZIP_FILE=libzip-1.2.0.tar.gz
- ZIP_FILE_DIR=libzip-1.2.0
- #Define PHP path variables
- PHP_URL=http://mirrors.sohu.com/php
- PHP_FILE=php-7.3.7.tar.gz
- PHP_FILE_DIR=php-7.3.7
- PHP_PREFIX=/usr/local/php
- USER=www
- #Define Zabbix path variables
- ZABBIX_URL=http://mirrors.yangxingzhen.com/zabbix
- ZABBIX_FILES=zabbix-4.4.3.tar.gz
- ZABBIX_FILES_DIR=zabbix-4.4.3
- ZABBIX_PREFIX=/usr/local/zabbix
- functionInstall_Nginx(){
- #Install Nginx Soft
- if[!-d ${NGINX_PREFIX}];then
- yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++ wget
- wget -c ${NGINX_URL}/${NGINX_FILE}
- tar zxf ${NGINX_FILE}
- cd ${NGINX_FILE_DIR}
- sed -i 's/1.16.1/ /;s/nginx\//nginx/' src/core/nginx.h
- useradd -s /sbin/nologin www
- ./configure --prefix=${NGINX_PREFIX} \
- --user=www \
- --group=www \
- --with-http_ssl_module \
- --with-http_stub_status_module
- if[ $?-eq 0];then
- make && make install
- action "NGINX Install Success..."/bin/true
- else
- action "NGINX Install Failed..."/bin/false
- exit1
- fi
- else
- echo -e "\033[32m Nginx has been installed \033[0m"
- fi
- }
- functionInstall_Mysql(){
- if[!-d ${MYSQL_PREFIX}];then
- #Install Package
- yum -y install ncurses-devel perl perl-devel cmake wget gcc gcc-c++ bison* autoconf openssl-devel openssl
- #Install Boost
- wget -c ${Boost_URL}/${Boost_File}
- tar zxf ${Boost_File}-C /usr/local/
- #Install MYSQL
- wget -c ${MYSQL_URL}/${MYSQL_FILES}
- tar zxf ${MYSQL_FILES}
- cd ${MYSQL_FILES_DIR}
- cmake .-DCMAKE_INSTALL_PREFIX=${MYSQL_PREFIX} \
- -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
- -DMYSQL_DATADIR=${MYSQL_DIR} \
- -DSYSCONFDIR=/etc \
- -DEXTRA_CHARSETS=all \
- -DDEFAULT_CHARSET=utf8 \
- -DDEFAULT_COLLATION=utf8_general_ci \
- -DWITH_MYISAM_STORAGE_ENGINE=1 \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DWITH_MEMORY_STORAGE_ENGINE=1 \
- -DWITH_PARTITION_STORAGE_ENGINE=1 \
- -DDOWNLOAD_BOOST=1 \
- -DWITH_BOOST=/usr/local/boost_1_59_0 \
- -DENABLED_LOCAL_INFILE=1 \
- -DMYSQL_TCP_PORT=3306 \
- -DWITH_READLINE=1 \
- -DMYSQL_USER=${MYSQL_USER} \
- -DWITH_SSL=yes
- if[ $?-eq 0];then
- make && make install
- action "The MYSQL Install Sussess..."/bin/true
- else
- action "The MYSQL Install Failed..."/bin/false
- exit1
- fi
- else
- echo -e "\033[31mThe MYSQL already Install...\033[0m"
- exit1
- fi
- }
- functionInstall_PHP(){
- #Install Libzip
- yum –y install wget gcc gcc-c++
- wget -c ${ZIP_URL}/${ZIP_FILE}
- tar zxf ${ZIP_FILE}
- cd ${ZIP_FILE_DIR}
- ./configure
- if[ $?-eq 0];then
- make && make install
- action "The Libzip Install Sussess..."/bin/true
- else
- action "The Libzip Install Failed..."/bin/false
- exit1
- fi
- cat >/etc/ld.so.conf <<EOF
- /usr/local/lib64
- /usr/local/lib
- /usr/lib
- /usr/lib64
- EOF
- ldconfig -v
- #Install PHP
- if[!-d ${PHP_PREFIX}];then
- #Install Package
- yum -y install epel-release
- yum -y install wget gcc gcc-c++ pcre pcre-devel openssl openssl-devel libxml2 libxml2-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel cmake
- cd ~&& wget -c ${PHP_URL}/${PHP_FILE}
- tar zxf ${PHP_FILE}
- cd ${PHP_FILE_DIR}
- ./configure --prefix=${PHP_PREFIX} \
- --with-config-file-path=/etc \
- --enable-fpm \
- --with-fpm-user=${USER} \
- --with-fpm-group=${USER} \
- --enable-inline-optimization \
- --disable-debug \
- --disable-rpath \
- --enable-shared \
- --enable-soap \
- --with-libxml-dir \
- --with-xmlrpc \
- --with-openssl \
- --with-mhash \
- --with-pcre-regex \
- --with-sqlite3 \
- --with-zlib \
- --enable-bcmath \
- --with-iconv \
- --with-bz2 \
- --enable-calendar \
- --with-curl \
- --with-cdb \
- --enable-dom \
- --enable-exif \
- --enable-fileinfo \
- --enable-filter \
- --with-pcre-dir \
- --enable-ftp \
- --with-gd \
- --with-openssl-dir \
- --with-jpeg-dir \
- --with-png-dir \
- --with-zlib-dir \
- --with-freetype-dir \
- --enable-gd-jis-conv \
- --with-gettext \
- --with-gmp \
- --with-mhash \
- --enable-json \
- --enable-mbstring \
- --enable-mbregex \
- --enable-mbregex-backtrack \
- --with-onig \
- --enable-pdo \
- --with-mysqli=mysqlnd \
- --with-pdo-mysql=mysqlnd \
- --with-zlib-dir \
- --with-pdo-sqlite \
- --with-readline \
- --enable-session \
- --enable-shmop \
- --enable-simplexml \
- --enable-sockets \
- --enable-sysvmsg \
- --enable-sysvsem \
- --enable-sysvshm \
- --enable-wddx \
- --with-libxml-dir \
- --with-xsl \
- --enable-zip \
- --enable-mysqlnd-compression-support \
- --with-pear \
- --enable-opcache
- if[ $?-eq 0];then
- \cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
- make && make install
- action "The PHP Install Sussess..."/bin/true
- else
- action "The PHP Install Failed..."/bin/false
- exit1
- fi
- else
- echo -e "\033[31mThe PHP already Install...\033[0m"
- exit1
- fi
- }
- function LNMP_Config(){
- #Nginx config
- useradd -s /sbin/nologin ${USER}>/dev/null2>&1
- ln -sf ${NGINX_PREFIX}/sbin/nginx /usr/sbin
- cat >${NGINX_PREFIX}/conf/nginx.conf <<EOF
- user ${USER} ${USER};
- worker_processes auto;
- pid logs/nginx.pid;
- events {
- use epoll;
- worker_connections 10240;
- multi_accept on;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" '
- '\$status \$body_bytes_sent "\$http_referer" '
- '"\$http_user_agent" "\$http_x_forwarded_for"';
- access_log logs/access.log main;
- error_log logs/error.log warn;
- sendfile on;
- tcp_nopush on;
- keepalive_timeout 120;
- tcp_nodelay on;
- server_tokens off;
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 464k;
- gzip_http_version 1.1;
- gzip_comp_level 4;
- gzip_types text/plain application/x-javascript text/css application/xml;
- gzip_vary on;
- client_max_body_size 10m;
- client_body_buffer_size 128k;
- proxy_connect_timeout 90;
- proxy_send_timeout 90;
- proxy_buffer_size 4k;
- proxy_buffers 432k;
- proxy_busy_buffers_size 64k;
- large_client_header_buffers 44k;
- client_header_buffer_size 4k;
- open_file_cache_valid 30s;
- open_file_cache_min_uses 1;
- server {
- listen 80;
- server_name localhost;
- location /{
- root html/zabbix;
- index index.php index.html index.htm;
- }
- location ~* \.php$ {
- root html/zabbix;
- fastcgi_connect_timeout 300s;
- fastcgi_send_timeout 300s;
- fastcgi_read_timeout 300s;
- fastcgi_buffer_size 64k;
- fastcgi_buffers 464k;
- fastcgi_busy_buffers_size 128k;
- fastcgi_temp_file_write_size 256k;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
- include fastcgi_params;
- }
- }
- }
- EOF
- #Config PHP
- \cp php.ini-production /etc/php.ini
- \cp ${PHP_PREFIX}/etc/php-fpm.conf.default ${PHP_PREFIX}/etc/php-fpm.conf
- \cp ${PHP_PREFIX}/etc/php-fpm.d/www.conf.default ${PHP_PREFIX}/etc/php-fpm.d/www.conf
- \cp sapi/fpm/php-fpm.service /usr/lib/systemd/system
- cat >/usr/local/php/etc/php-fpm.d/www.conf <<EOF
- [www]
- listen =0.0.0.0:9000
- listen.mode =0666
- user = www
- group= www
- pm =dynamic
- pm.max_children =128
- pm.start_servers =20
- pm.min_spare_servers =5
- pm.max_spare_servers =35
- pm.max_requests =10000
- rlimit_files =1024
- slowlog = log/\$pool.log.slow
- EOF
- #Mysql Config
- useradd -s /sbin/nlogin mysql >/dev/null2>&1
- mkdir -p ${MYSQL_DIR}
- chown -R ${MYSQL_USER}.${MYSQL_USER} ${MYSQL_DIR}
- cat >/etc/my.cnf <<EOF
- [mysqld]
- #数据存储目录
- datadir = ${MYSQL_DIR}
- #socket通信文件
- socket =/tmp/mysql.sock
- #使用mysql用户启动
- user = ${MYSQL_USER}
- #MYSQL服务运行的端口号
- port =3306
- #开启bin-log日志
- log-bin = mysql-bin
- #MYSQL服务ID号
- server-id =1
- #定义error错误文件
- log-error = ${MYSQL_DIR}/mysqld.log
- #PID文件路径
- pid-file = mysqld.pid
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
- #设置字符集为utf8
- character-set-server = utf8
- [client]
- default-character-set= utf8
- port =3306
- socket =/tmp/mysql.sock
- [mysql]
- default-character-set= utf8
- EOF
- #Initialization Mysql
- /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql/--basedir=/usr/local/mysql
- ln -sf ${MYSQL_PREFIX}/bin/* /usr/bin
- \cp ${MYSQL_PREFIX}/support-files/mysql.server /etc/init.d/mysqld
- chmod o+x /etc/init.d/mysqld
- #Config iptables(firewalld)、selinux
- SYS_VERSION=$(awk -F. '{print $1}' /etc/redhat-release |awk '{print $NF}')
- if [ ${SYSTEM_VERSION} -eq 6 ];then
- service iptables stop
- chkconfig iptables off
- sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- setenforce 0
- else
- systemctl stop firewalld.service
- systemctl disable firewalld.service
- sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- setenforce 0
- fi
- #Start MYSQL、php-fpm、nginx and Add MySQL、php-fpm、nginx boot self start
- ${NGINX_PREFIX}/sbin/nginx
- systemctl start php-fpm
- /etc/init.d/mysqld start
- grep -qw "${NGINX_PREFIX}" /etc/rc.d/rc.local
- if [ $? -ne 0 ];then
- echo "${NGINX_PREFIX}/sbin/nginx" >>/etc/rc.d/rc.local
- chmod +x /etc/rc.d/rc.local
- fi
- systemctl enable php-fpm
- chkconfig --add mysqld
- chkconfig mysqld on
- chmod +x /etc/rc.d/rc.local
- }
- function Install_Zabbix_Server (){
- #Install Zabbix_Server
- if [ ! -d ${ZABBIX_PREFIX} ];then
- #Install Package
- yum -y install net-snmp net-snmp-devel perl-DBI curl curl-devel libevent libevent-devel wget gcc gcc-c++ pcre pcre-devel
- cd ${HOME} && wget -c ${ZABBIX_URL}/${ZABBIX_FILES}
- tar xf ${ZABBIX_FILES}
- cd ${ZABBIX_FILES_DIR}
- ./configure --prefix=${ZABBIX_PREFIX} --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl
- if [ $? -eq 0 ];then
- make && make install
- echo -e "\033[32mThe Zabbix_Server Install sussess...\033[0m"
- else
- echo -e "\033[31mThe Zabbix_Server Install fail,Please check...\033[0m"
- exit 1
- fi
- else
- echo -e "\033[31mThe Zabbix_Server already Install...\033[0m"
- exit 1
- fi
- #Create Mysql
- mysql -e "create database zabbix charset=utf8;"
- mysql -e "grant all on zabbix.* to zabbix@'localhost' identified by 'www.yangxingzhen.com';"
- mysql -e "flush privileges"
- #Import the SQL file to the Zabbix Database
- cd database/mysql
- mysql -uzabbix -pwww.yangxingzhen.com 2>/dev/null zabbix < schema.sql
- mysql -uzabbix -pwww.yangxingzhen.com 2>/dev/null zabbix < images.sql
- mysql -uzabbix -pwww.yangxingzhen.com 2>/dev/null zabbix < data.sql
- #Copy File
- mkdir -p ${NGINX_PREFIX}/html/zabbix
- \cp -a ${HOME}/zabbix-4.4.3/frontends/php/* ${NGINX_PREFIX}/html/zabbix
- chown -R ${USER}.${USER} ${NGINX_PREFIX}/html/zabbix
- ln -sf /${MYSQL_PREFIX}/lib/libmysqlclient.so.20 /usr/lib64
- mkdir -p /var/lib/mysql
- ln -sf /tmp/mysql.sock /var/lib/mysql
- #Backup Configuration File
- \cp ${ZABBIX_PREFIX}/etc/zabbix_server.conf ${ZABBIX_PREFIX}/etc/zabbix_server.conf.bak
- \cp ${ZABBIX_PREFIX}/etc/zabbix_agentd.conf ${ZABBIX_PREFIX}/etc/zabbix_agentd.conf.bak
- ln -sf ${ZABBIX_PREFIX}/sbin/zabbix_* /usr/local/sbin/
- #Config Zabbix_Server File
- cat >${ZABBIX_PREFIX}/etc/zabbix_server.conf <<EOF
- LogFile=/tmp/zabbix_server.log
- PidFile=/tmp/zabbix_server.pid
- DBHost=localhost
- DBName=zabbix
- DBUser=zabbix
- DBPassword=www.yangxingzhen.com
- Timeout=30
- LogSlowQueries=3000
- EOF
- #Config Zabbix_Server File
- cat >${ZABBIX_PREFIX}/etc/zabbix_agentd.conf <<EOF
- LogFile=/tmp/zabbix_agentd.log
- Server=localhost
- ServerActive=localhost
- Hostname=localhost
- EnableRemoteCommands=1
- UnsafeUserParameters=1
- LogFileSize=10
- Timeout=30
- EOF
- #Configuring system services
- \cp ${HOME}/zabbix-4.4.3/misc/init.d/tru64/zabbix_* /etc/init.d/
- chmod o+x /etc/init.d/zabbix_*
- #Create zabbix user
- useradd -s /sbin/nologin zabbix >/dev/null 2>&1
- #PHP Config
- sed -i 's/post_max_size = 8M/post_max_size = 16M/' /etc/php.ini
- sed -i 's/max_execution_time = 30/max_execution_time = 300/' /etc/php.ini
- sed -i 's/max_input_time = 60/max_input_time = 300/' /etc/php.ini
- sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/' /etc/php.ini
- sed -i 's/;always_populate_raw_post_data = -1/always_populate_raw_post_data = -1/' /etc/php.ini
- #Start Zabbix_Server And Zabbix_Agentd
- /etc/init.d/zabbix_server start
- /etc/init.d/zabbix_agentd start
- systemctl restart php-fpm
- #Configure power on self start
- grep -qw "/etc/init.d/zabbix_server" /etc/rc.d/rc.local
- if [ $? -ne 0 ];then
- echo "/etc/init.d/zabbix_server start" >>/etc/rc.d/rc.local
- chmod +x /etc/rc.d/rc.local
- fi
- grep -qw "/etc/init.d/zabbix_agentd" /etc/rc.d/rc.local
- if [ $? -ne 0 ];then
- echo "/etc/init.d/zabbix_agentd start" >>/etc/rc.d/rc.local
- chmod +x /etc/rc.d/rc.local
- fi
- }
- function Main (){
- Install_Nginx
- Install_Mysql
- Install_PHP
- LNMP_Config
- Install_Zabbix_Server
- }
- Main
脚本执行方式:
[root@localhost ~]# vim auto_install_lnmp_zabbix.sh
- 输入编号:6766,直达文章
- 输入m|M,直达目录列表