美文网首页
Centos7.3环境部署

Centos7.3环境部署

作者: 唐岭云 | 来源:发表于2017-07-31 10:19 被阅读57次

centos 查看所有运行中的服务的详细信息命令:

    netstat -tunpl
    #中文显示
        LANG="zh_CN.UTF-8"

清理内存:

    free -m
    sync; echo 3 > /proc/sys/vm/drop_caches

更新源

    yum update
    #搜索
        yum search ~

安装JAVA

    yum -y install java
    yum -y install maven

    切换java版本
         alternatives --config java  

安装常用程序

    yum -y install lrzsz
    yum -y install git
    yum -y install vim
    
    yum -y install erlang
    yum -y install nginx

安装Docker

    yum install epel-release -y
    yum install docker-io

    #Docker使用
        service docker start
        #删除docker 容器
            sudo docker ps -a 
            #获取最后字段的NAME
                sudo docker rm NAME

                #删除退出状态的容器
                  docker rm $(docker container ls -f "status=exited" -q)
                #删除所有状态的容器
                 docker rm $(docker ps -aq)

安装MYSQL

mkdir ~/usr/local

# 下载mysql源安装包
    wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# 安装mysql源
    yum localinstall mysql57-community-release-el7-8.noarch.rpm
#检查mysql源是否安装成功
    yum repolist enabled | grep "mysql.*-community.*"
安装#
    yum install mysql-community-server
#启动MySQL服务
    systemctl start mysqld
#查看MySQL的启动状态
    systemctl status mysqld
#开机启动
    systemctl enable mysqld
    systemctl daemon-reload
#修改密码策略
    在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
#选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
        validate_password_policy=0
        #不需要密码策略
            validate_password = off
        #修改字符编码
            character_set_server=utf8
            init_connect='SET NAMES utf8'
            log-bin=mysql-bin
            server-id=master_1   或者  server-id=slave_1
            lower_case_table_names=1
#重启服务mysql
    systemctl restart mysqld
#获取root密码
    grep 'temporary password' /var/log/mysqld.log
#登录修改root密码
    mysql -uroot -p
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'tang0624';       ||     set password for 'root'@'localhost'=password('MyNewPass4!'); 
#添加新用户
    GRANT ALL PRIVILEGES ON *.* TO 'cheer'@'%' IDENTIFIED BY 'cheerrrr' WITH GRANT OPTION;
#创建数据库
    create database dry;
#开启远程端口服务提供给外部
    firewall-cmd --zone=public --add-port=3306/tcp --permanent

MYSQL主从读写分离

#主机
    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'45.32.26.26' IDENTIFIED BY 'tang0624';(指定从机ip)
    ##或者
    GRANT REPLICATION SLAVE ON *.* to 'user'@'%' identified by 'mysql';(所有ip)

#主机查询授权用户
     select * from information_schema.user_privileges;

    show master status;
    #记录 File 的值和 Position 的值。
#从机
    change master to
    master_host='45.32.26.26',
    master_user='slave',
    master_log_file='mysql-bin.000008', 
    master_log_pos=8911,
    master_port=3306,
    master_password='tang0624';

    show slave status\G
    start slave;  修改配置 stop slave;

    http://www.cnblogs.com/hanyucq/p/5524921.html

MYCAT使用(要进行自动读写分离(读写数据连接自动切换) 客户端请连接MYCAT 端口默认8066 用户密码在scheme文件配置 数据库请使用mycat逻辑数据库) 修改如下2个配置文件 server.xml修改如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
    - you may not use this file except in compliance with the License. - You 
    may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
    - - Unless required by applicable law or agreed to in writing, software - 
    distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
    License for the specific language governing permissions and - limitations 
    under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system>
    <property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
    <property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->

        <property name="sequnceHandlerType">2</property>
      <!--  <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议-->
        <!--  <property name="fakeMySQLVersion">5.6.20</property>--> <!--设置模拟的MySQL版本号-->
    <!-- <property name="processorBufferChunk">40960</property> -->
    <!-- 
    <property name="processors">1</property> 
    <property name="processorExecutor">32</property> 
     -->
        <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
        <property name="processorBufferPoolType">0</property>
        <!--默认是65535 64K 用于sql解析时最大文本长度 -->
        <!--<property name="maxStringLiteralLength">65535</property>-->
        <!--<property name="sequnceHandlerType">0</property>-->
        <!--<property name="backSocketNoDelay">1</property>-->
        <!--<property name="frontSocketNoDelay">1</property>-->
        <!--<property name="processorExecutor">16</property>-->
        <!--
            <property name="serverPort">8066</property> <property name="managerPort">9066</property> 
            <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> 
            <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
        <!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志-->
        <property name="handleDistributedTransactions">0</property>
        
            <!--
            off heap for merge/order/group/limit      1开启   0关闭
        -->
        <property name="useOffHeapForMerge">1</property>

        <!--
            单位为m
        -->
        <property name="memoryPageSize">1m</property>

        <!--
            单位为k
        -->
        <property name="spillsFileBufferSize">1k</property>

        <property name="useStreamOutput">0</property>

        <!--
            单位为m
        -->
        <property name="systemReserveMemorySize">384m</property>


        <!--是否采用zookeeper协调切换  -->
        <property name="useZKSwitch">true</property>


    </system>
    
    <!-- 全局SQL防火墙设置 -->
    <!-- 
    <firewall> 
       <whitehost>
          <host host="127.0.0.1" user="mycat"/>
          <host host="127.0.0.2" user="mycat"/>
       </whitehost>
       <blacklist check="false">
       </blacklist>
    </firewall>
    -->
    
    <user name="account">
        <property name="password">123456</property>
        <property name="schemas">dry</property>
        
        <!-- 表级 DML 权限设置 -->
        <!--        
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>       
         -->
    </user>

    <user name="readAccount">
        <property name="password">123456</property>
        <property name="schemas">dry</property>
        <property name="readOnly">true</property>
    </user>

</mycat:server>

schema.xml配置文件修改如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
      <!-- 定义一个MyCat的模式,逻辑数据库名称TestDB -->
      <!-- “checkSQLschema”:描述的是当前的连接是否需要检测数据库的模式 -->
      <!-- “sqlMaxLimit”:表示返回的最大的数据量的行数 -->
      <!-- “dataNode="dn1"”:该操作使用的数据节点是dn1的逻辑名称 -->
      <schema name="dry" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" />
      <!-- 定义个数据的操作节点,以后这个节点会进行一些库表分离使用 -->
      <!-- “dataHost="localhost1"”:定义数据节点的逻辑名称 -->
      <!-- “database="test"”:定义数据节点要使用的数据库名称 -->
      <dataNode name="dn1" dataHost="localhost1" database="dry" />
      <!-- 定义数据节点,包括了各种逻辑项的配置 -->
      <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
          <!-- 配置真实MySQL与MyCat的心跳 -->
          <heartbeat>select user()</heartbeat>
          <!-- 配置真实的MySQL的连接路径 -->
          <writeHost host="hostMaster" url="45.32.26.26:3306" user="cheer" password="cheerrrr">
              <readHost host="hostSlave" url="45.76.105.238:3306" user="cheer" password="cheerrrr"/>
          </writeHost>
          <writeHost host="hostMaster2" url="45.76.105.238:3306" user="cheer" password="cheerrrr">
              <readHost host="hostSlave2" url="45.76.105.238:3306" user="cheer" password="cheerrrr"/>
          </writeHost>
      </dataHost>
</mycat:schema>

MYSQL宕机邮件警报

    # vi /etc/mail.rc
    # 发送邮件邮箱
    set from=345684180@qq.com
    # 外部stmp服务器地址
    set smtp=smtp.126.com
    # 外部smtp服务器认证的用户名
    set smtp-auth-user=345684180
    # 外部smtp服务器认证的用户密码,注意是外部服务器的授权码并非邮箱登录密码
    set smtp-auth-password=123456
    # 邮件认证的方式
    set smtp-auth=login

安装rabbitmq

#安装依赖编程语言包
    yum -y install erlang
#安装rabbitmq服务端
    yum -y install rabbitmq-server
#启动服务   
    sudo service rabbitmq-server start
#查看启动状态 
    sudo service rabbitmq-server status
#开启UI监控
    rabbitmq-plugins enable rabbitmq_management
    firewall-cmd --zone=public --add-port=15672/tcp --permanent
    firewall-cmd --reload
#开启远程客户端连接端口 
    firewall-cmd --zone=public --add-port=5672/tcp --permanent
    firewall-cmd --reload

#创建client用户
    添加用户:rabbitmqctl add_user admin 123456

    添加权限:rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

    修改用户角色:rabbitmqctl set_user_tags admin administrator
#重启服务 访问
    sudo service rabbitmq-server restart
    浏览器登录 127.0.0.1:15672 
#开机启动
    systemctl enable rabbitmq-server
    systemctl daemon-reload 

安装Jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
#修改端口7711
    vim /etc/sysconfig/jenkins
    firewall-cmd --zone=public --add-port=7711/tcp --permanent
    firewall-cmd --reload
#启动Jenkins
    chown -R root:root /var/lib/jenkins
    chown -R root:root /var/cache/jenkins
    chown -R root:root /var/log/jenkins
    service jenkins restart
    ps -ef | grep jenkins
#开机启动
    sudo chkconfig jenkins on

安装redis

yum install epel-release
yum install redis
#启动服务 开机启动
    service redis start
    chkconfig redis on
#开放网络访问
    vim /etc/redis.conf  注释掉bind 127.0.0.1
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --reload

开启一个端口

#添加
    
    firewall-cmd --zone=public --add-port=8066/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
#重新载入
    firewall-cmd --reload
#查看
    firewall-cmd --zone=public --query-port=8081/tcp
#删除
    firewall-cmd --zone=public --remove-port=80/tcp --permanent

MYSQL数据监测 主从状态监控

 #check MySQL Slave's Runnning Status
 #Crontab time 00:10
 MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'`
 MYSQLIP=`ifconfig eth0|grep "inet" | awk ' {print $2}'`
 STATUS=$(/usr/bin/mysql -uroot -ptang0624 -S /var/lib/mysql/mysql.sock -e "show slave status\G" | grep -i "running")
 DELAYED=$(/usr/bin/mysql -uroot -ptang0624 -S /var/lib/mysql/mysql.sock -e "show slave status\G" | grep -i "Seconds_Behind_Master")
 #echo "$STATUS"
 IO_env=`echo $STATUS | grep IO | awk  ' {print $2}'`
 echo "============================="
 echo "$STATUS"
 echo "$DELAYED"
 SQL_env=`echo $STATUS | grep SQL | awk  ' {print $4}'`
 DELAYED_env=`echo $DELAYED | awk  ' {print $2}'`
 DATA=`date +"%y-%m-%d %H:%M:%S"`

 function checkMysqlStatus(){
     if [ "$MYSQLPORT" == "3306" ]
     then
         /usr/bin/mysql -uroot -ptang0624 --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1
         if [ $? -ne 0 ]
         then
             echo "Server: $MYSQLIP mysql is down, please try to restart mysql by manual!" > ~/usr/mysql.err
             #mail -s "WARN! server: $MYSQLIP  mysql is down." WENTAO_Wanna@126.com < /data/mysql/mysql.err
         else
             echo "mysql is running..."
         fi
     else
          echo "发送邮件...WARN!Server: $MYSQLIP mysql is down."
         #mail -s "WARN!Server: $MYSQLIP mysql is down." WENTAO_Wanna@126.com
     fi
 }
 echo "================================="
 echo "$IO_env"
 echo "$SQL_env"
 echo "$DELAYED_env"
 echo "================================="
 checkMysqlStatus

 # 延时大于60s
 if [ "$DELAYED_env" -ge 60 ]
 then
   echo "MySQL Slave is delayed $DELAYED_env s!"
   echo "####### $DATA #########">> /usr/mysql_slave_status.log
   echo "MySQL Slave is delayed $DELAYED_env s!" >>    /usr/mysql_slave_status.log
   #echo "MySQL Slave is delayed $DELAYED_env s!" | mail -s "WARN! $MYSQLIP MySQL Slave is delayed $DELAYED_env s!" WENTAO_Wanna@126.com
 fi
 if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
 then
   echo "MySQL Slave is running!"
 else
   echo "####### $DATA #########">> /usr/mysql_slave_status.log
   echo "MySQL Slave is not running!" >>    /usr/mysql_slave_status.log
   #echo "MySQL Slave is not running!" | mail -s "WARN! $MYSQLIP MySQL Slave is not running." WENTAO_Wanna@126.com
 fi

spring-boot打包成war启动

        <!-- 使用外部tomcat容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
                        <!-- spring-boot打包插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                                  <mainClass>com.learn.order.OrderApplication</mainClass>
                </configuration>
            </plugin>
                        <!-- 打包war插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
                        <!--打包,编译,安装阶段 是否跳过测试-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>false</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

创建tomcat包启动war的目录结构


1527520514341.jpg

web.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1" metadata-complete="true">
</web-app>

JDK1.9 spring-boot运行环境 jar依赖

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
        </dependency>

发布项目:

java -Dspring.profiles.active=test -jar xxxx.jar
nohup java -jar -Xms128m -Xmx256m  -Dspring.profiles.active=8761  eureka-0.0.1-SNAPSHOT.jar  >/dev/null 2>&1 &
nohup java -jar eureka-0.0.1-SNAPSHOT.jar --spring.profile.active=8761 >/dev/null 2>&1 &
mvn spring-boot:run
java -jar xxx.jar
java -jar xxx.war

java -jar  -Dspring.profiles.active=test  -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=端口  xxx.jar    #开启调试模式(用于测试环境)

端口开启:

iptables -nvL --line-number    #查看INPUT 序号和端口
iptables -I INPUT 序号 -p tcp --dport 80  -j ACCEPT -m comment --comment "80 logs"  #开启端口

firewall-cmd --permanent --zone=public --add-port=3306/tcp     #开启端口
firewall-cmd --reload  #重新加载,开始生效

多窗口操作:

yum -y instatll screen

命令:
screen -ls  #查看所有窗口
screen -S 窗口名  #新建窗口
screen -r 窗口名 #切换到指定窗口

Ctrl+A+D  #退出窗口

相关文章

网友评论

      本文标题:Centos7.3环境部署

      本文链接:https://www.haomeiwen.com/subject/wvmllxtx.html