51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

LNMP环境搭建Zabbix监控平台自动化安装脚本

此脚本是LNMP环境搭建Zabbix监控平台自动化安装脚本,有需要朋友可以参考,脚本内容如下:

系统环境:CentOS 7.9

软件版本:

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:xingzhen.yang@yangxingzhen.com
#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://mirrors.yangxingzhen.com/libzip
ZIP_FILE=libzip-1.2.0.tar.gz
ZIP_FILE_DIR=libzip-1.2.0


#Define PHP path variables
PHP_URL=https://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


function Install_Nginx() {
#Install Nginx Soft
if \[ ! -d ${NGINX_PREFIX} \];then
yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++ wget
cd \~ \&\& 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
exit 1
fi
else
echo -e "\\033\[32m Nginx has been installed \\033\[0m"
fi
}


function Install_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
cd \~ \&\& wget -c ${Boost_URL}/${Boost_File}
tar zxf ${Boost_File} -C /usr/local/


#Install MYSQL
cd \~ \&\& 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
exit 1
fi
else
echo -e "\\033\[31mThe MYSQL already Install...\\033\[0m"
exit 1
fi
}


function Install_PHP() {
#Install Libzip
yum --y install wget gcc gcc-c++
cd \~ \&\& 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
exit 1
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 

--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
exit 1
fi
else
echo -e "\\033\[31mThe PHP already Install...\\033\[0m"
exit 1
fi
}


function LNMP_Config() {
#Nginx config
useradd -s /sbin/nologin ${USER} \>/dev/null 2\>\&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    4 64k;
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 4 32k;
proxy_busy_buffers_size 64k;
large_client_header_buffers 4 4k;
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 4 64k;
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/null 2\>\&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 ~]# sh auto_install_lnmp_zabbix.sh
继续阅读 Shell最后更新:2024-1-24

赞(0)
未经允许不得转载:工具盒子 » LNMP环境搭建Zabbix监控平台自动化安装脚本