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

5 篇文章 0 订阅
1 篇文章 0 订阅


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变绿色即可。

  • 35
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以帮你解答关于在Linux环境部署JDKTomcatNginxMySQL的问题。以下是基本的步骤: 1. 部署JDK 首先,你需要从Oracle官网上下载JDK安装包,将其上传到Linux服务器上。然后,在Linux服务器上使用以下命令进行安装: ``` tar -zxvf jdk-xxx-linux-x64.tar.gz -C /usr/local/ ``` 接着,在`/etc/profile`文件中添加以下环境变量: ``` export JAVA_HOME=/usr/local/jdk-xxx export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin ``` 最后,使用以下命令使环境变量立即生效: ``` source /etc/profile ``` 2. 部署Tomcat 先从Tomcat官网上下载Tomcat安装包,将其上传到Linux服务器上。然后,在Linux服务器上使用以下命令进行安装: ``` tar -zxvf apache-tomcat-xxx.tar.gz -C /usr/local/ ``` 接着,在`/usr/local/apache-tomcat-xxx/bin`目录下使用以下命令启动Tomcat: ``` ./startup.sh ``` 3. 部署Nginx 首先,使用以下命令安装Nginx: ``` sudo apt-get install nginx ``` 接着,在`/etc/nginx/nginx.conf`文件中配置Nginx: ``` worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /usr/local/nginx/html; index index.html index.htm; } } } ``` 最后,使用以下命令启动Nginx: ``` sudo nginx ``` 4. 部署MySQL 首先,使用以下命令安装MySQL: ``` sudo apt-get install mysql-server ``` 接着,在MySQL中创建用户并授权: ``` mysql -u root -p CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION; ``` 最后,使用以下命令启动MySQL: ``` sudo service mysql start ``` 希望我的回答能够帮助到你。如果你有其他问题,可以继续问我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lqcbj_IT老混混

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值