一个通过Shell 脚本部署 lnmp + zabbix-server 的示例~

基本环境 centos7.9     centos7x不支持通过yum安装zabbix-server-6.0, 在主机上安装的话就需要通过编译源码包进行安装.

shell脚本和 zabbix源码包 路径如下:

具体脚本内容如下:

#!/bin/bash
set -e

centos_base_repo_url="http://mirrors.aliyun.com/repo/Centos-7.repo"
epel_repo_url="http://mirrors.aliyun.com/repo/epel-7.repo"
webtatic_repo_url="https://mirror.webtatic.com/yum/el7/webtatic-release.rpm"
nginx_repo_url="http://nginx.org/packages/centos/\$releasever/\$basearch/"
nginx_gpgkey_url="https://nginx.org/keys/nginx_signing.key"

# 安装 CentOS Base 源
curl -o /etc/yum.repos.d/CentOS-Base.repo $centos_base_repo_url
yum install epel-release.noarch -y
curl -o /etc/yum.repos.d/epel.repo $epel_repo_url
if [ $? -eq 0 ];then
    echo "epel源安装成功"
else
    echo "epel源安装失败,请检查"
fi

# 安装 webtatic 源
echo "#########开始安装webtatic源#########"
if [ ! -f /etc/yum.repos.d/webtatic.repo ]; then
    rpm -Uvh $webtatic_repo_url
    echo "########webtatic源安装成功########"
else
    echo "webtatic源已经安装,跳过安装步骤"
fi
sleep 5

# 安装 PHP 7.2
echo "########开始安装php72########"
yum install php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd  -y
echo "########php72安装成功########"
sleep 5

# 设置 nginx yum 源
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=$nginx_repo_url
gpgcheck=1
enabled=1
gpgkey=$nginx_gpgkey_url
module_hotfixes=true
EOF

# 安装 Nginx
echo "########开始安装nginx########"
yum install nginx -y
echo "########安装nginx成功########"
sleep 5

# 配置 Nginx
mkdir -p /app/code/zbx
NGINX_CONF='
server {
    listen 80;
    server_name localhost;
    root /app/code/zbx;

    access_log /var/log/nginx/host.access.log main;

    location / {
        index index.php;
    }

    location ~ \.php$ {
        # root html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
'

echo "$NGINX_CONF" > /etc/nginx/conf.d/app.zabbix.conf
echo "导入nginx配置文件成功"
sleep 3

# 修改 PHP-FPM 的用户和组
sed -ri '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf
echo "修改www.conf用户组成功"

# 配置 PHP
index_php='
<?php
phpinfo();
?>
'
echo "$index_php" > /app/code/zbx/index.php
echo "导入php配置文件成功"
systemctl restart nginx
sleep 3
systemctl restart php-fpm
echo "nginx && php 启动成功"
sleep 3

# 添加Mariadb的yum源
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name=MariaDB
baseurl=http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey=http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
enable=1
EOF

# 安装Mariadb
yum -y install mariadb-server

# 启动Mariadb服务
systemctl start mariadb

# 设置Mariadb开机自启动
systemctl enable mariadb

# 执行mysql_secure_installation初始化
mysql_secure_installation <<EOF

n
admin
admin
y
y
y
y
EOF

# 创建zabbix数据库并授权
mysql -e "create database zabbix charset utf8 collate utf8_bin;"
mysql -e "grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';"

# 重启Mariadb服务
systemctl restart mariadb


sql_dir="/opt/zabbix-6.0.16/database/mysql"
tar -zxvf zabbix-6.0.16.tar.gz
sleep 3

mysql -uroot -padmin zabbix < $sql_dir/schema.sql
mysql -uroot -padmin zabbix < $sql_dir/images.sql
mysql -uroot -padmin zabbix < $sql_dir/data.sql
mysql -uroot -padmin zabbix < $sql_dir/double.sql
mysql -uroot -padmin zabbix < $sql_dir/history_pk_prepare.sql
echo "mysql数据导入成功!"
sleep 3


echo "开始编译安装zabbix6"
#安装 zabbix-server 依赖
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel gcc-c++
sleep 3

cd zabbix-6.0.16
export CFLAGS="-std=gnu99"
./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre
make install
echo $?
echo "Mariadb&&zabbix6安装和配置完成!"
sleep 3

useradd -s /sbin/nologin -M zabbix

echo "zabbix系统用户添加成功!"

#cd zabbix-6.0.16/ui/ && cp -r ./* /app/code/zbx/
#chown -R nginx.nginx /app/code/zbx
#echo "复制web ui数据成功!"
#sleep 3

sed -i 's/# DBPassword=/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf
echo "修改zabbix配置文件成功"
sleep 3

echo "开始书写zabbix"
cat > /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix Server with Mysql DB
After=syslog.target network.target mysqld.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
echo "启动文件 成功配置"
sleep 3


cp -r /opt/zabbix-6.0.16/ui/* /app/code/zbx/
chown -R nginx.nginx /app/code/zbx
echo "复制web ui数据成功!"

systemctl restart zabbix-server
echo "启动zabbix-server成功"

脚本流程大概如下:

  1. 配置CentOS Base、EPEL、Webtatic 软件源, 以及安装php72和相关依赖.
  2. 配置nginx源, 安装nginx服务, 然后创建工作目录,再进行nginx+php的相关配置.
  3. 安装mariadb10.5数据库, zabbix6不再支持mariadb5.5版本的数据库.
  4. 安装完之后,执行 mysql_secure_installation 命令进行 MariaDB 的安全初始化。 然后创建zabbix相关的数据库用户与授权.
  5. 解压zabbix源码包, 从源码包导入zabbix要求的sql文件, 注意导入顺序.
  6. 接着开始安装zabbix编译安装所需依赖, 然后进入zabbix目录,开始进行编译安装.
  7. 编译安装完成之后,就是进行一些常规的配置了, 比如书写Service文件,让zabbix能够通过systemctl start,stop相关命令来执行. 并且需要复制ui文件到 /app/code/zbx工作目录里来安装 Zabbix Web 界面,并配置 Nginx 以支持 Zabbix Web.

建议在网络状态良好的环境里执行该脚本, 不然安装相关服务的话可能因为网络问题容易反复报错.

这只是一个简化的示例脚本,实际部署 Zabbix 时,可能需要根据具体环境和需求进行适当的修改和配置。在运行脚本之前,请确保已经备份了重要的数据,并对脚本中的命令和配置进行了充分的了解和确认,以避免意外的数据丢失或系统配置错误。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值