CRM系统环境搭建部署(nginx、jdk、tomcat、keepalived、mysql、zabbix)

这篇具有很好参考价值的文章主要介绍了CRM系统环境搭建部署(nginx、jdk、tomcat、keepalived、mysql、zabbix)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


CRM系统环境搭建部署(nginx、jdk、tomcat、keepalived、mysql、zabbix)

crm.XXX.com    #CRM系统使用的域名,已注册并做好DNS解析

两台应用服务器(主、备):172.16.38.172、172.16.38.173
两台数据库服务器(主、备):172.16.38.174、172.16.38.175
操作系统:CentOS 7.9

各服务器准备工作:
关闭selinux 、firewalld、设置好hostname
服务器时间同步
yum -y install ntp ntpdate
ntpdate asia.pool.ntp.org  #设置系统时间与网络时间同步
hwclock --systohc    #将系统时间写入硬件时间,这里是为了防止系统重启后时间被还原,因此需要写到硬件设备中去

CRM系统要求:
nginx 日志分割
tomcat 日志分割
zabbix监控
mysql本地备份和远程备份的脚本配置,任务计划设置

一、CRM系统应用服务器配置

172.16.38.172  应用服务器(主)
172.16.38.173  应用服务器(备)

应用服务器使用域名访问数据库:crm.mysql.com,所以两台应用服务器需要设置hosts解析:
vim /etc/hosts
172.16.38.174 crm.mysql.com
172.16.38.175 crm.mysql.com


安装nginx、jdk、tomcat、keepalived

(一)、编译安装nginx服务

1、创建www用户和组

groupadd www
useradd www -g www 
passwd www www   #设置www用户密码为www
mkdir /home/www
chown www.www /home/www
chmod 700 /home/www

2、更新源和环境所需插件安装

yum update                #更新yum源
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel      #先安装nginx依赖包

3、下载nginx-1.18.0.tar.gz 存放在/data/software 目录下

cd /data/software
wget -c http://nginx.org/download/nginx-1.18.0.tar.gz        #从nginx官网下载nginx-1.18.0.tar.gz
tar -xf nginx-1.18.0.tar.gz -C /data/server/                          #解压nginx到/data/server/
cd /data/server/nginx-1.18.0

4、编译安装nginx,指定执行的用户主和用户组(使用前面创建的www用户和组)

./configure --prefix=/data/server/nginx  --with-http_ssl_module   --user=www --group=www
make
make install

cd /data/server/nginx    #查看nginx目录下的文件情况
/data/server/nginx/sbin/nginx -?            #查看nginx相关参数
/data/server/nginx/sbin/nginx -v            #查看nginx的版本
/data/server/nginx/sbin/nginx -t            #检查配置文件语法是否正确
/data/server/nginx/sbin/nginx                # 启动nginx服务
/data/server/nginx/sbin/nginx -s stop    #停止nginx服务
netstat -nltp                                        #查看端口
ps -ef |grep nginx                                 #查看nginx进程

pgrep nginx | xargs kill -9   ##如何用一条Linux命令干掉所有nginx进程,通过 pgrep 指令,根据名字找出所有包含该名字的进程号


设置nginx自启
在rc.local中添加启动代码
vim /etc/rc.local
# 在文件末尾添加一句 /data/server/nginx/sbin/nginx
# 重新赋予权限
chmod 755 /etc/rc.local

重启nginx服务

/data/server/nginx/sbin/nginx -s reload


在浏览器中输入nginx 服务器IP地址,查看nginx的默认页面

5、配置负载均衡

172.16.38.172、172.16.38.173 设置免密登录

在172上执行:
ssh-keygen     # 一路回车
ssh-copy-id 172.16.38.173   #输入173的密码

在173上执行:
ssh-keygen     # 一路回车
ssh-copy-id 172.16.38.172    #输入172的密码

在172上执行:
vim nginx.conf            #修改部分内容

vim /data/server/nginx/conf/nginx.conf

user www www;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  10240;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    gzip on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_buffers 4 8k;
    gzip_min_length 1024;
    gzip_types text/plain text/xml text/css application/x-javascript text/javascript image/jpeg;

    proxy_buffer_size 64k;
    proxy_buffers   32 32k;
    proxy_ignore_client_abort on;
    client_header_buffer_size 4k;
    #open_file_cache max=10240 inactive=20s;
    #open_file_cache_valid 30s;
    #open_file_cache_min_uses 1;
    #add_header Cache-Control max-age=604800;

#    log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
#
#                      '$status $body_bytes_sent "$http_referer" '
#                      '"$http_user_agent" "$http_x_forwarded_for"';
  log_format main '$remote_addr - $remote_user [$time_local] '
                         'fwf[$http_x_forwarded_for] tip[$http_true_client_ip] '
                         '$upstream_addr $upstream_response_time $request_time '
                         '$http_host $request '
                         '"$status" $body_bytes_sent "$http_referer" '
                         '"$http_accept_language" "$http_user_agent" ';

#    access_log logs/access.log  main;
#    error_log   logs/error.log;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    server_tokens off;

    client_max_body_size 5m;

   include vhost/*.conf;
 upstream api{
        server  172.16.38.172:8080;
        server  172.16.38.173:8080;
    }

    upstream oa{
       server  172.16.38.172:8081;
       server  172.16.38.173:8081;
    }


}


保存退出

scp /data/server/nginx/conf/nginx.conf root@172.16.38.173:/data/server/nginx/conf/     #将172上的/data/server/nginx/conf/nginx.conf拷贝到173上

mkdir -p /data/server/nginx/conf/ssl          #若CRM系统要使用SSL证书,则需要创建ssl证书目录,并把制作好的XXX.crt、XXX.key这两个SSL证书上传到/data/server/nginx/conf/ssl目录下
mkdir -p /data/server/nginx/conf/vhost      #创建vhost目录


vim /data/server/nginx/conf/vhost/crm.conf     #编辑crm 虚拟机的配置文件

server {
  listen          80;
  server_name    localhost crm.XXX.com;
        rewrite ^(.*)$  https://crm.XXX.com$1 permanent;
    }
server {
    listen       443 ssl;
    server_name  localhost crm.XXX.com;
    access_log  logs/crm.access.log main;
    error_log  logs/crm.error.log;

  #ssl on;
   ssl_certificate      /data/server/nginx/conf/ssl/XXX.crt;
   ssl_certificate_key  /data/server/nginx/conf/ssl/XXX.key;

   ssl_session_cache    shared:SSL:1m;
   ssl_session_timeout  5m;
   ssl_ciphers  HIGH:!aNULL:!MD5;
   ssl_prefer_server_ciphers  on;

   client_max_body_size 50m;   # 设置客户端请求体大小限制
  # location /{
  #    root /data/htdoc/www;
  #    index index.html index.htm;
  #    try_files $uri $uri/ /index.html;
  #    add_header X-Frame-Options SAMEORIGIN;

  #      }

    location ^~ /api/auth/cas-app/login {
    rewrite ^/api/auth/cas-app/login(.*)$ /auth/cas-app/login$1 last;
        }

    location ^~ /api/humanResources/StaffManagementMobile/getCurrentUser {
        rewrite ^(.*)$  /humanResources/StaffManagementMobile/getCurrentUser last;
        }

    location ^~ /api/crm/appVersion/getAppNewVersion {
        rewrite ^(.*)$  /crm/appVersion/getAppNewVersion last;
       }


  location   /{
        proxy_pass http://oa;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        #proxy_set_header X-Forwarded-For $remote_addr;
        proxy_redirect off;
        proxy_connect_timeout      240;
        proxy_send_timeout         240;
        proxy_read_timeout         240;
        # note, there is not SSL here! plain HTTP is used

        }
#   location ^~ /api {
#       proxy_pass http://api;
#        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#        proxy_set_header Host $http_host;
#        proxy_set_header X-Forwarded-Proto https;
#       #proxy_set_header X-Forwarded-For $remote_addr;
#        proxy_redirect off;
#        proxy_connect_timeout      240;
#        proxy_send_timeout         240;
#        proxy_read_timeout         240;
#        # note, there is not SSL here! plain HTTP is used
#
#       }

#        location ~ \.(jpg|png|js|css|gif|ico)$ {
#              root /opt/tomcat/web/online;
#              expires 12h;
#              }

        error_page  403  404       /404.html;
        error_page 500 502 503 504 /50x.html;

}


重启nginx
/data/server/nginx/sbin/nginx -s reload

在173服务器创建

将172上的nginx.conf 拷贝到173服务器的/data/server/nginx/sbin/nginx/conf目录下

scp -r /data/server/nginx/conf/ssl root@172.16.38.173:/data/server/nginx/conf/        #在172上将ssl目录拷贝到173上
scp -r /data/server/nginx/conf/vhost root@172.16.38.173:/data/server/nginx/conf/   #将vhost目录拷贝到173上

173上重启nginx
/data/server/nginx/sbin/nginx -s reload


验证nginx默认页面是否可以正常打开

6、nginx 日志分割

mkdir -p /data/server/nginx/logs   #根据脚本提示,创建logs目录
mkdir -p /data/sh                         #创建脚本存放目录
chown -R www. /data/sh             #修改sh目录属主权限

vim /data/sh/nginx-cutlog.sh      #编辑nginx 日志分割脚本

#!/bin/bash
d=`date -d '1 day ago' +%Y%m%d`

d15=`date -d'15 day ago' +%Y%m%d`
logs_path="/data/server/nginx/logs"            #要切割的日志路径


mv ${logs_path}/crm.access.log ${logs_path}/crm.access_${d}.log

kill -USR1 $(cat /data/server/nginx/logs/nginx.pid)

rm -rf ${logs_path}/crm.access_${d15}.log

保存退出

chmod +x /data/sh/nginx-cutlog.sh    #授权执行权限
scp /data/sh/nginx-cutlog.sh root@172.16.38.173:/data/sh/    #将nginx-cutlog.sh拷贝到173的/data/sh/目录下
chmod +x /data/sh/nginx-cutlog.sh    #在172、173赋予执行权限

在172.16.38.172、172.16.38.173服务器上添加任务计划:
crontab -e

5 0 * * * /bin/sh /data/sh/cut_log/nginx-cutlog.sh
0 5 * * * /usr/sbin/ntpdate asia.pool.ntp.org;hwclock -w

(二)、安装jdk

安装路径:
/data/server/jdk1.8.0_231

创建数据、日志路径

tar xf jdk-8u231-linux-x64.tar.gz -C /data/server   #将安装包上传到/data/server,然后解压jdk二进制压缩包

配置环境变量
vim /etc/profile

export JAVA_HOME=/data/server/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile  #使配置生效

java -version    #查看java版本

javac

(三)、安装部署tomcat服务

tomcat 目录结构:

bin:服务启动,关闭等可以执行文件.
conf:         配置文件目录,server.xml是tomcat主配置文件,web.xml为webapps提供默认的配置。
lib:            库目录.
logs:         日志目录.
webapps:   应用程序部署目录.
work:       jsp编译后的结果文件.


tomcat核心组件:


server:即tomcat进程实例,多个server,就是启动多个tomcat实例。
service:service服务用于关联connector与engine,connector可以使用不同的协议绑定不同的端口,进而处理不同的客户端连接请求。
engine:引擎可以定义多个虚拟主机,并对请求头进行分析,将请求发给对应的虚拟主机。
host:定义虚拟主机,以及资源路径context.


1、解压apache-tomcat-9.0.36.tar.gz压缩包

安装路径:/data/server/tomcat9
将apache-tomcat-9.0.36.tar.gz上传到 /data/server目录下

tar -xf apache-tomcat-9.0.36.tar.gz -C /data/server/   #将apache-tomcat-9.0.36.tar.gz 解压到/data/server/目录下
cd /data/server/
mv apache-tomcat-9.0.36 tomcat9    #将解压出来的apache-tomcat-9.0.36 重命名为tomcat9
chown -R www. /data/server/tomcat9  #将tomcat目录修改为www的属主权限


2、配置环境变量

vim /etc/profile

CATALINA_BASE=/data/server/tomcat9
PATH=$CATALINA_BASE/bin:$PATH
export PATH CATALINA_BASE

source /etc/profile   #使配置生效

catalina.sh version   #进到相应的目录下执行该命令,查看tomcat版本

catalina.sh start    #进到相应的目录下执行该命令,前台启动tomcat服务

nohup ./startup.sh &  #后台运行tomcat服务


3、设置tomcat服务开机启动

cd /usr/lib/systemd/system   #进入system目录
vim tomcat.service      #创建tomcat.service 文件

[Unit]
Description=Tomcat9
After=syslog.target network.target remote-fs.target nss-lookup.target
   
[Service]
Type=forking
Environment='JAVA_HOME=/data/server/jdk1.8.0_231'
Environment='CATALINA_PID=/data/server/tomcat9/bin/tomcat.pid'
Environment='CATALINA_HOME=/data/server/tomcat9/'
Environment='CATALINA_BASE=/data/server/tomcat9/'
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
 
WorkingDirectory=/data/server/tomcat9/
 
ExecStart=/data/server/tomcat9/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
   
[Install]
WantedBy=multi-user.target


保存退出

systemctl enable tomcat.service   #先执行此命令设置为tomcat开机启动,再执行后续以下命令

随后可以使用以下命令操作tomcat服务:

systemctl start tomcat.service    # 启动tomcat

systemctl stop tomcat.service    # 关闭tomcat   

systemctl restart tomcat.service    # 重启tomcat 


mkdir -p /data/crm/log                 #创建CRM系统日志存放路径(在/data/web/oa/WEB-INF/classes/properties/config.properties此文件里配置,也是开发部署的发布目录)
chown -R www.www /data/crm    #修改crm目录属主权限
 

vim /data/server/tomcat9/conf/server.xml    #在server.xml文件,根据nginx.conf 中upstream oa的端口信息将端口8080改为8081:

<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

再增加“/data/web/oa/”发布路径:

    <Context path="" docBase="/data/web/oa/" debug="0" reloadable="true" />

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"


4、tomcat 日志分割设置

分别用www用户登录172.16.38.172、172.16.38.173应用服务器上操作

/data/sh 目录下文件的属组均是www

vim /data/sh/tomcat9-cutlog.sh   #编辑tomcat 日志分割脚本,保留60天的日志文件

#!/bin/bash
#cd  `dirname $0`
#d=`date +%Y%m%d`
d=`date -d '1 day ago' +%Y%m%d`
d60=`date -d'60 day ago' +%Y%m%d`
cd  /data/server/tomcat9/logs/
cp catalina.out catalina.out.${d}
echo "" > catalina.out
rm -rf catalina.out.${d60}
#chown www.www *

保存退出
chmod +x /data/sh/tomcat9-cutlog.sh
crontabl -e   #添加到任务计划中
20 0 * * * /bin/sh /data/sh/tomcat9-cutlog.sh   #每天20点执行


另外在Tomcat的logs目录,每天都会产生很多日志文件,我们也可以定期手工或使用定时任务来删除60天前的日志文件,这里使用手工的方式进行演示,

cd /data/server/tomcat9/logs            #进入data/server/tomcat9/logs目录
find -mtime +60 -exec rm -f {} \;      #删除60天前的日志
find -mtime +7 -exec rm -f {} \;        #删除7天前的日志

(四)、安装配置keepalived(可以等到应用都调试完成,没有问题了再部署keepalived服务)

根据自己的网络情况规划好VIP地址,这里设置keepalived的VIP 为172.16.38.201,然后在防火墙上映射公网IP(目的NAT)124.XXX.154.XXX的80和443端口,在防火墙策略里添加允许124.XXX.154.XXX的80、433端口出去,在阿里云上将crm.XXX.com 解析124.XXX.154.XXX

yum install keepalived -y      #172.16.38.172、172.16.38.173两台服务器均需安装keepalived
cd /etc/keepalived/
cp keepalived.conf keepalived.conf_bak
vim keepalived.conf    #配置MASTER的编辑内容如下:

global_defs {
   notification_email {
     admin@centos.bz
   }
   notification_email_from keepalived@domain.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                script "/etc/keepalived/keepalived_check.sh"
                interval 2
                weight 2
}
vrrp_instance VI_1 {
    state MASTER        ############ 辅机为 BACKUP
    interface em1        ######根据服务器网卡名称设置
    virtual_router_id 50 ####MASTER和BACKUP设置同一个virtual_router_id
    mcast_src_ip 172.16.38.172  ###设置MASTER的IP地址
    priority 102                  ########### 权值要比BACKUP 高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
        chk_http_port ### 执行监控的服务
        }
    virtual_ipaddress {
       172.16.38.201
    }
}

scp /etc/keepalived/keepalived.conf root@172.16.38.173:/etc/keepalived/      #修改完后拷贝到BACKUP,然后编辑内容做相应的修改即可

编辑检测脚本
vim /etc/keepalived/keepalived_check.sh
内容如下:

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
                /data/server/nginx/sbin/nginx
                sleep 3
                if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
                       killall keepalived
                fi
fi

保存退出

chmod +x /etc/keepalived/keepalived_check.sh    #授权
scp /etc/keepalived/keepalived_check.sh root@172.16.38.173:/etc/keepalived/    #拷贝到172.16.38.173服务器的相应目录下
chmod +x /etc/keepalived/keepalived_check.sh   #再进行授权
yum install psmisc -y           #脚本中用到killall 命令,需要安装pamisc
systemctl start keepalived   # 启动keepalived 服务
systemctl enable keepalived   #设置开机启动keepalived服务

ip a # 查看虚拟IP172.16.38.201是否在MASTER 服务器上

[root@localhost keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 34:63:5a:9e:de:84 brd ff:ff:ff:ff:ff:ff
    inet 172.16.38.172/24 brd 172.16.38.255 scope global noprefixroute em1
       valid_lft forever preferred_lft forever
    inet 172.16.38.201/32 scope global em1
       valid_lft forever preferred_lft forever
    inet6 fe80::e3a4:2c6d:b1ca:96f/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: em2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 34:73:5b:9e:de:35 brd ff:ff:ff:ff:ff:ff
4: em3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 34:73:5b:9e:de:35 brd ff:ff:ff:ff:ff:ff
5: em4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 34:73:5b:9e:de:35 brd ff:ff:ff:ff:ff:ff


虚拟IP172.16.38.201,对外解析124.XXX.154.XXX

在我们的电脑上绑定host,进行测试

172.16.38.201 crm.XXX.com

在浏览器中访问VIP 地址172.16.38.201,均能直接跳转到tomcat默认页面,等待研发提供程序代码部署即可,正式访问CRM 系统页面


二、CRM系统数据库服务器配置

(一)、安装mysql数据库

172.16.38.174  数据库服务器(主)
172.16.38.175  数据库服务器(备)

分别在174、175服务器上执行

创建/data/software目录
mkdir -p /data/software
cd /data/software

下载mysql-5.7.28二进制安装包

wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

也可从别的服务器上找个mysql-5.7.28.tar.gz

yum install libaio -y

redhat系列需要卸载自带的mariadb

[root@localhost server]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost server]#  rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64


创建一个mysql用户和组   (根据实际情况看,是否需要允许mysql用户可以登录)

groupadd mysql     #添加mysql组
useradd -r -g mysql -s /bin/false mysql       #添加mysql用户设置其不允许登录


解压文件
#解压下载的二进制包到需要安装mysql的目录
mkdir -p /data/server
tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz  -C /data/server


开始安装
以下目录(path)为/data/server

1、创建一个mysql的软链接

cd /data/server 
ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql

2、添加mysql环境变量

vim /etc/profile
#添加下面一行
export PATH=$PATH:/data/server/mysql/bin
source /etc/profile     #使环境变量生效


3、创建数据目录

cd /data/server/mysql
mkdir data
chown mysql.mysql data
chmod 750 data
mkdir -p /data/server/mysql/logs
touch /data/server/mysql/logs/error.log
chown -R mysql.mysql /data/server/mysql/logs

4、初始化mysql

cd /data/server/mysql
bin/mysqld --initialize  --user=mysql  --basedir=/data/server/mysql  --datadir=/data/server/mysql/data

#完成之后会有一个临时密码

Gqd:!@1kiCO*UA

5、配置ssl

#bin/mysql_ssl_rsa_setup
bin/mysql_ssl_rsa_setup --datadir=/data/server/mysql/data

6、编辑配置文件(主、备库my.cnf文件做相应的配置log-bin、server-id)

主库:
log-bin = master-bin
server-id=1

备库:
server-id=2

vim /etc/my.cnf  #以下是主库的my.cnf文件配置信息

[client]
port = 3306
socket = /data/server/mysql/data/mysql.sock
#net_buffer_length = 300000
#max_allowed_packet = 1G
default-character-set=utf8
[mysqld]
#skip-grant-tables 
port = 3306
socket = /data/server/mysql/data/mysql.sock
basedir = /data/server/mysql
datadir = /data/server/mysql/data
pid-file = /data/server/mysql/data/mysql.pid
user = mysql
bind-address = 0.0.0.0
log_error = /data/server/mysql/logs/error.log
relay-log=relay-log
relay-log-index=relay-log.index
log-bin = master-bin
server-id=1
innodb_file_per_table=ON
skip_name_resolve=ON
interactive_timeout = 12000
wait_timeout = 12000
net_buffer_length = 300000
max_allowed_packet = 1G
innodb_buffer_pool_size = 6G
innodb_log_buffer_size = 1G
innodb_log_file_size = 2G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
max_connections = 5120
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
max_heap_table_size = 67108864
character-set-server=utf8
lower_case_table_names = 1
#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES
[mysqld_safe]
port = 3306
socket = /data/server/mysql/data/mysql.sock
basedir = /data/server/mysql
datadir = /data/server/mysql/data
pid-file = /data/server/mysql/data/mysql.pid
user = mysql
bind-address = 0.0.0.0
log_error = /data/server/mysql/logs/error.log
relay-log=relay-log
relay-log-index=relay-log.index
log-bin = master-bin
server-id=1
#innodb_file_per_table=ON
skip_name_resolve=ON
interactive_timeout = 12000
wait_timeout = 12000
net_buffer_length = 300000
max_allowed_packet = 1G
innodb_buffer_pool_size = 6G
innodb_log_buffer_size = 1G
innodb_log_file_size = 2G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
max_connections = 5120
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
max_heap_table_size = 67108864
default-character-set=utf8

7、启动mysql

bin/mysqld_safe --user=mysql &


8、复制mysql启动脚本

cp support-files/mysql.server /etc/init.d/mysqld   #将服务文件拷贝到init.d下,并重命名为mysql

#之后可以使用 /etc/init.d/mysqld start|stop|restart 来启动、关闭、重启mysql

/etc/init.d/mysqld start     #启动
service mysql status     #查看mysql状态
/etc/init.d/mysqld status  #查看mysql状态

9、设置开机自启动mysql服务

chmod +x /etc/init.d/mysqld  #赋予可执行权限
chkconfig --add mysqld     #添加服务
chkconfig --list     #显示服务列表,如果看到mysql的服务,并且3,4,5都是on的话则成功,
chkconfig --level 345 mysqld on    #如果是off,则键入此命令
reboot    #重启电脑
netstat -na | grep 3306    #验证电脑重启后mysql服务是否启动
ps -ef | grep mysql    # 查看mysql服务进程
service mysql status     #查看mysql状态
/etc/init.d/mysqld status  #查看mysql状态

10、登录mysql并修改临时密码

mysql -u root -p   #输入刚才的临时密码Gqd:!@1kiCO*UA

> set password for root@localhost = password('174p5ffdr7s.Z');     #在172.16.38.174服务器上修改主数据库root新密码
> set password for root@localhost = password('174p5ffdr7s.Z');     #在172.16.38.175服务器上修改172.16.38.175备库的root新密码


11、配置数据库主从

(1)部署master主库服务器:

登录mysql,接下来进行验证二进制功能开启是否成功
mysql -u root -p 

方法1、查看主库状态
show master status;
方法2、查询主库日志文件
show master logs;
方法3、查询二进制变量
show variables like '%log_bin';

授权,指定哪些机器(网段)可以连接这台主库服务器,建立复制所要使用的用户

useradd repl -g repl
passwd repl   #设置repl的用户密码,输入123456

grant replication slave on *.* to 'repl'@'172.16.38.%' identified by '123456';
grant replication slave on *.* to 'repl'@'172.20.%' identified by '123456';

mysql> flush privileges;   # 刷新权限生效

mysql> show master status;     #查看File、Position 信息,一会用到

 File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000004 |      154 


查看数据库用户、主机访问权限
use mysql;
select Host,User from user;
select host,user,authentication_string from user;

(2)部署slave从库服务器:

可以将主库的my.cnf文件拷贝过来,去掉log-bin = master-bin,server-id=1 更改为server-id=2

修改my.cnf文件后,重启mysql 服务
/etc/init.d/mysqld restart

登录mysql,连接主库:

change master to master_host='172.16.38.174',master_user='repl',master_password='123456',master_log_file='master-bin.000004',master_log_pos=154;


mysql> start slave;    #启动slave从库 
mysql> show slave status\G     #查看主从连接状态

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。


查看主、备库数据库数量及名称是否一致
mysql> show databases;

主库上查看二进制日志文件
mysql> show binlog events in 'master-bin.000004';

12、在172.16.38.174主库上创建数据库用户

在master主库上创建数据库用户:
创建mysql用户crm,并授权crm远程和数据库的访问权限:

mysql -u root -p 
CREATE USER 'crm'@'localhost'  IDENTIFIED BY '149fdjsqqdYeph';    #创建crm用户,授权本地登录 
grant all privileges on zl9_crm.* to 'crm'@'172.16.38.%' identified by '174OnSdfevhYeph';      #授权crm用户访问zl9_crm 数据库权限
grant all privileges on zl9_crm.* to 'crm'@'172.20.%' identified by '174OnSdfevhYeph';          #授权crm用户访问zl9_crm 数据库权限

flush privileges;
quit


配置数据库root用户远程访问权限:

grant all privileges on *.* to 'root'@'172.16.38.%' identified by '174p5ffdr7s.Z';
grant all privileges on *.* to 'root'@'172.20.%' identified by '174p5ffdr7s.Z';
flush privileges;

###如果要删除MySQL用户账号crm

mysql> DROP USER IF EXISTS 'crm'@'localhost';

###撤销已经赋予给 MySQL 用户权限的权限。

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

grant  all on *.* to   dba@localhost;   #授权dba用户本地访问所有数据库的权限
revoke all on *.* from dba@localhost;   #撤销dba用户本地访问所有数据库的权限
revoke all on zl9_crm.* from 'crm'@'%';   #撤销mysql用户crm的访问zl9_crm数据库的权限
revoke all on *.* from 'crm'@'%';  #撤销mysql用户crm的所有访问权限

mysql> REVOKE ALL PRIVILEGES ON zl9_crm.* TO 'crm'@'localhost';     #撤销crm用户访问zl9_crm数据库的权限


mysql> SHOW GRANTS FOR 'crm'@'localhost';       #显示MySQL用户权限


查看数据库用户、主机访问权限
use mysql;
select Host,User from user;
select host,user,authentication_string from user;

13、创建数据库

在master主库上创建CRM系统的数据库(zl9_crm):

创建一个zl9_crm数据库:
mysql> create database zl9_crm;      # 创建数据库
mysql> use zl9_crm;                         # 使用已创建的数据库 
mysql> set names utf8;                   # 设置编码

在slave从库上查看,数据库数量及名称是否与master主库一致
mysql> show databases;


问题排查例子(Slave_SQL_Running: No):
因在master 上删除了jfedu数据库(drop database jfedu;),在slave上show slave status\G 查看slave的状态时发现Slave_SQL_Running: No,
处理方法:
1、在master服务器上设置set sql_log_bin=0; 然后删除要删除的数据库,再设置set sql_log_bin=1; 刷新生效 flush privileges; 
2、查看master 的pos点,show master status;
3、这时需要在slave上执行stop slave,根据master 的pos点信息,快速重新连接主库change master to
change master to master_host='172.20.26.37',master_user='tongbu',master_password='123456',master_log_file='master-bin.000001',master_log_pos=2760;
4、成功运行change master to后,执行start slave;,再执行show slave status\G 查看slave的状态,
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
5、再在master创建新的数据库,就能同步到slave 上了。


###如果有老系统的数据库需要导入的话,可以先在老系统中将数据库备份导出,再导到新数据库中

###数据库备份mysqldump命令


mysqldump --skip-opt  -q -uroot -p --databases zl8 | gzip > zl8.sql.gz     #将数据库zl8导出到名为zl8.sql.gz的压缩包,拷贝到新服务器中


###在新服务器中进行数据库导入

gunzip -c zl8.sql.gz >zl8.sql     #对zl8.sql.gz、进行解压

导入数据库:

mysql -uroot -p zl9_crm <  /data/zl8.sql     #将zl8.sql数据库导入到zl9_crm 数据库中

或者通过数据库连接工具Navicat Premium 15进行备份和还原


###mysql 主从数据库重启顺序:

停数据库  先备后主 
启数据库  先主后备

(二)、数据库备份设置

将数据库备份文件存放在172.20.26.193备份服务器上

1、创建数据库备份文件存放目录,编辑备份脚本内容
在172.16.38.175从库服务器上
mkdir -p /data/database_bak  #在CRM的从库服务器上创建database_bak数据库本地备份目录


cd /data/sh   #进入sh目录,根据CRM系统的数据库zl9_crm,修改备份脚本名称及内容


vim zl9_crm_backup.sh   ###修改root数据库密码、数据库名称zl9_crm以及远程备份路径:

#!/bin/bash
 user="root"
 password="175VDFEWddQiTakYWGeQRSJ"
 host="localhost"
 db_name="zl9_crm"
 backup_path="/data/database_bak/zl9_crm"
 date=$(date +"%Y%m%d%H")
# Dump数据库到SQL文件
##因为有一个大写表dict_appType 所以加了 -f;数据库配置文件改了后 再改回来去掉 -f
/data/server/mysql/bin/mysqldump -f --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql
gzip $backup_path/$db_name-$date.sql
##传到远端备份服务器
scp $backup_path/$db_name-$date.sql.gz root@172.20.26.193:/data/data_bak/crm_databak/zl9_crm
# 删除30天之前的就备份文件
find $backup_path/* -mtime +30 -exec rm {} \;


保存退出


2、在172.16.38.175、172.20.26.193上创建相应的备份存放目录,并将172.16.38.175与172.20.26.193两台服务器配置好免密

在172.16.38.175服务器上

mkdir -p /data/database_bak/zl9_crm


在172.20.26.193服务器上

mkdir -p /data/data_bak/crm_databak/zl9_crm


配置172.16.38.175与172.20.26.193两台服务器之间的免密访问

在172.16.38.175从库上

ssh-keygen -t rsa 
chmod 700 ~/.ssh/
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cd ~/.ssh/

chmod 600  authorized_keys

在172.20.26.193备份服务器上

vim authorized_keys    #打开authorized_keys,把内容追加到172.20.26.193上的authorized_keys 文件下面,做好备注

systemctl restart sshd  或者  service sshd restart     #重启175、193各台的sshd 服务

scp -r /data/sh root@172.20.26.193:/data/share   #测试把一个文件从172.16.38.175 scp拷贝到172.20.26.193服务器,不提示输入密码即可


3、添加任务计划

在172.16.38.175服务器上------CRM系统上线后开启任务计划

crontab -e

0 1 * * * /bin/sh /data/sh/zl9_crm_backup.sh  >/dev/null
0 5 * * * /usr/sbin/ntpdate asia.pool.ntp.org;hwclock --systohc


三、安装zabbix3.4客户端(172.20.26.136为zabbix监控系统服务器端)

我们要将172.16.38.172-175这4台服务器添加到我们的zabbix监控系统里,所以需要这四台服务器依次安装配置zabbix客户端。

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm   #下载zabbix3.4源

报错警告(也可以不处理此警告,直接yum install ):
警告:/var/tmp/rpm-tmp.f38CWl: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY

 #这是由于yum安装了旧版本的GPG keys造成的,执行如下:
rpm --import /etc/pki/rpm-gpg/RPM*  
rpm -qa | grep zabbix    #查询已安装的rpm源
zabbix-release-3.4-2.el7.noarch

yum install -y zabbix-agent   #安装zabbix客户端
#修改/etc/zabbix/zabbix_agentd.conf

#Server=127.0.0.1
Server=172.20.26.136
#ServerActive=127.0.0.1
ServerActive=172.20.26.136           //server端ip
HostName=CRM_NEW_APP1                    //主机名唯一的
HostMetadataItem=system.uname          //设置默认模板,server端


systemctl start zabbix-agent   #启动agent服务
systemctl enable zabbix-agent  #开机启动agent服务

4台服务器依次添加主机到zabbix服务器中
zabbix 服务器web管理界面,添加主机,群组添加到“Linux servers”,模板选择“Template Dell Raid Card”和“Template OS Linux”,等待zabbix变绿色即可。文章来源地址https://www.toymoban.com/news/detail-818135.html

到了这里,关于CRM系统环境搭建部署(nginx、jdk、tomcat、keepalived、mysql、zabbix)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 负载均衡的综合部署练习(hproxy+keepalived和lvs-DR+keepalived+nginx+Tomcat)

    一、haproxy+keepalived haproxy 2台 20.0.0.21 20.0.0.22 nginx 2台 20.0.0.23 20.0.0.24 客户机 1台 20.0.0.30 这里没有haproxy不是集群的概念,他只是代理服务器。 访问他直接可以直接访问后端服务器 关闭防火墙 安装haproxy和环境: yum install -y pcre-devel bzip2-devel gcc gcc-c++ make tar zxvf haproxy-1.5.19.tar.g

    2024年02月06日
    浏览(31)
  • 创建网站教程:服务器环境搭建(MySQL+Jdk+Nginx...),前后端项目部署(技术栈:SSM+Vue),域名+备案【全网最简单】

    【如有建站方面的需求欢迎 添加微信 ,接私单 】 2024/4/26记,本文写于1年前,当时建站经验不够丰富,文章逻辑混乱,近期重新编写,希望能帮助更多小伙伴,搭建属于自己的网站。 我主要以我部署的个人网站:www.pbjlovezjy.com 为例,来讲解如何搭建一个网站,源码如果需要

    2024年04月26日
    浏览(45)
  • 使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

    image 镜像名称,可去镜像市场查找自己需要的 hostname 容器内服务名 container_name 容器名 volumes 可以把自己电脑的路径映射到容器中的文件夹中 networks 写同一个网络可以让容器之间进行通信 启动 在项目根目录的命令行中输入 docker-compose up 停止 在项目根目录的命令行中输入 d

    2024年02月12日
    浏览(38)
  • (Linux)Centos7.*版本安装配置Java环境、Tomcat、Nginx并打包部署SSM框架web系统

    目录 一、准备软件与安装包 (一)、必须的软件 1、点击下载Xshell 2、点击下载FileZilla (二)、准备安装包 1、点击下载JDK1.8Linux版本 2、点击下载Nginx 3、点击下载Tomcat   二、关于FileZilla软件的使用说明 (一)、FileZilla软件的打开和说明 (二)、配置服务器地址去连接服务器  三、X

    2023年04月25日
    浏览(49)
  • linux常见命令以及jdk,tomcat环境搭建

    目录 Is  pwd  cd   touch cat echo vim  复制粘贴  mkdir  rm cp   jdk部署 1. yum list | grep jdk进行查找​编辑 2.安装​编辑 3.再次确认 4.判断是否安装成功 tomcat安装 1.下载压缩包,把压缩包上传至linux(可能需要yum install lrzsz)  2.解压缩unzip 压缩包名(可能要 yum install unzip) 3.进入bin目

    2024年02月07日
    浏览(33)
  • 【Linux】- Linux下搭建Java环境[IDEA,JDK8,Tomcat]

    /usr/local:存放用户自行安装的软件,默认情况下不会被系统软件包管理器管理 发现解压后的文件已经整体移动到/usr/local/java 文件夹下 打开bin目录,可以看到java的版本信息,可是不在bin目录下就执行不了./java -version命令 说明需要配置环境变量 输出一下环境变量 在 /etc/prof

    2024年02月09日
    浏览(32)
  • Linux搭建实验环境搭建(nginx,mysql,java.tomcat)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月15日
    浏览(35)
  • 【Linux】jdk、tomcat、MySQL环境搭建的配置安装,Linux更改后端端口

    工具的组合为开发者和系统管理员提供了构建和运行Java应用程序以及存储和管理数据的完整环境。 JDK(Java Development Kit):JDK是Java开发工具包,它提供了开发和运行Java应用程序所需的工具和库。通过安装JDK,您可以在Linux上编译、调试和运行Java程序。 Tomcat:Tomcat是一个开源

    2024年02月06日
    浏览(34)
  • 阿里云服务器部署文档(jdk+ nginx + node + git + maven + tomcat + jenkins + mysql + redis等)

    1阿里云服务器网址上开放22端口,443端口和80端口,80端口用来nginx域名映射。 2用命令行工具登录上服务器后,首先开启防火墙,并开放需要的端口。 如果没有开启用这个命令:systemctl start firewalld 3查看系统版本,对随后安装需要的版本有所了解 4安装jdk 一、下载JDK jdk-11.0.18_

    2024年03月20日
    浏览(35)
  • 【Linux】配置JDK&Tomcat开发环境及MySQL安装和后端项目部署

    目录 一、jdk安装配置 1. 传入资源  2. 解压  3. 配置  二、Tomcat安装 1. 解压开启 2. 开放端口 三、MySQL安装 1. 解压安装 2. 登入配置  四、后端部署 1. 数据库 2. 导入.war包 3. 修改端口 4.开启访问 打开虚拟机 Centos 登入账号,并且使用 MobaXterm 进行连接 不知道使用及连接到 Moba

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包