美文网首页
基于CentOS7安装MySql、Nginx、Redis及配置J

基于CentOS7安装MySql、Nginx、Redis及配置J

作者: 蓝黑色的梦 | 来源:发表于2019-10-08 19:29 被阅读0次

    安装之后首先升级内核到4.x长期支持版本后进行升级

    # sudo rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    # sudo yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
    仓库启用后,你可以使用下面的命令列出可用的内核相关包:
    # sudo yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    安装最新的主线稳定内核
    # yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64 
    或者长期支持版
    # sudo yum -y --enablerepo=elrepo-kernel install kernel-lt.x86_64 kernel-lt-devel.x86_64
    查看当前有几个内核
    # cat /boot/grub2/grub.cfg |grep menuentry
    设置默认启动内核
    #sudo grub2-set-default "CentOS Linux (4.4.194-1.el7.elrepo.x86_64) 7 (Core)"
    或直接更改内核启动顺序
    # grub2-set-default 0
    重启以更换内核
    # reboot
    查看内核
    # uname -r 
    

    CentOS 7- 配置阿里镜像源

    1、安装wget
    # sudo yum install wget -y
    2、备份原有的repo文件
    # sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.bak
    3、下载新的镜像源
    # sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    # sudo wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
    4、清除缓存并更新yum
    # sudo yum clean all
    # sudo yum makecache
    # sudo yum update -y
    

    配置SSH免密登录

    1、首先再A机器上生成ssh-key
    # sudo ssh-key-gen -t rsa
    2、将生成的key复制到要免密登录的机器
    # sudo ssh-copy-id theusername@B-IP
    3、接下来可以将A机器上的文件复制到B,或者从B复制到A
    # scp /home/yourname/yourfile  theusername@B-IP:/home/theusername/
    4、从远程机器复制到本地用户根目录
    # scp theusername@B-IP:/home/theusername/thefile ~/
    

    调整系统参数

    关闭SELINUX
    # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    # setenforce  0
    
    修改系统限制参数
    # sudo cat >> /etc/security/limits.conf << EOF
    #
    ###custom
    #
    *           soft   nofile       20480
    *           hard   nofile       65535
    *           soft   nproc        20480
    *           hard   nproc        65535
    EOF
    
    修改内核参数
    #sudo cat >>/etc/sysctl.conf <<"EOF"
    vm.swappiness=0
    #增加tcp支持的队列数
    net.ipv4.tcp_max_syn_backlog = 65535
    #减少断开连接时 ,资源回收
    net.ipv4.tcp_max_tw_buckets = 8000
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 10
    #改变本地的端口范围
    net.ipv4.ip_local_port_range = 1024 65535
    #允许更多的连接进入队列
    net.ipv4.tcp_max_syn_backlog = 4096  
    #对于只在本地使用的数据库服务器
    net.ipv4.tcp_fin_timeout = 30
    #端口监听队列
    net.core.somaxconn=65535
    #接受数据的速率
    net.core.netdev_max_backlog=65535
    net.core.wmem_default=87380
    net.core.wmem_max=16777216
    net.core.rmem_default=87380
    net.core.rmem_max=16777216
    EOF
    
    重新加载参数
    sysctl -p
    

    配置JAVA环境

    1、查询当前Java配置
    # rpm -qa|grep java
    如果有安装openjdk则卸载
    # sudo rpm -e --nodeps java-1.7.0-openjdk-xxx等等
    2、从oracle官网下载相应的jdk rpm版本并安装
    # sudo rpm -ivh jdk-8u212-linux-x64.rpm
    
    3、配置环境变量
    # vim /etc/profile
    在文件最后增加如下内容
    export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64/ 
    export JRE_HOME=$JAVA_HOME/jre 
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    保存后执行
    # sudo source /etc/profile
    # java -version
    

    安装MySql(二进制方式)

    1、首先从mysql官网下载Linux-Generic平台的64为版本
    # wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
    2、解压
    # tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
    # mv mysql-8.0.17-linux-glibc2.12-x86_64 /usr/local/mysql
    3、创建mysql用户组及用户
    # sudo groupadd mysql
    # sudo useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
    4、创建相应目录
    # sudo mkdir -p /data/mysql
    5、如果/etc/my.cnf已存在则将其备份
    # sudo mv /etc/my.cnf /etc/my.bak
    # sudo vim /etc/my.cnf
    

    在其中添加如下参数(千万注意data和log要分开,我就是将log与data混到一起结果折腾了半天)

    [client]
    port    = 3306
    socket    = /data/mysql/tmp/mysql_3306.sock
    
    [mysql]
    prompt="\u@\h \R:\m:\s [\d]> "
    no-auto-rehash
    
    [mysqld]
    user    = mysql
    port    = 3306
    #admin_address = 127.0.0.1
    basedir    = /usr/local/mysql
    datadir    = /data/mysql
    socket    = /data/mysql/tmp/mysql_3306.sock
    pid-file = mysql_3306.pid
    character-set-server = utf8mb4
    skip_name_resolve = 1
    
    
    #replicate-wild-ignore-table=mysql.%
    replicate-wild-ignore-table=test.%
    replicate-wild-ignore-table=information_schema.%
    
    # Two-Master configure
    #server-1
    #auto-increment-offset = 1
    #auto-increment-increment = 2
    
    #server-2
    #auto-increment-offset = 2
    #auto-increment-increment = 2
    
    
    # semi sync replication settings #
    #plugin_dir = /usr/local/mysql/lib/mysql/plugin
    #plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
    plugin_dir = /usr/local/mysql/lib/plugin #官方版本的路径
    #plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" #官方版本的路径
    
    slave_parallel_workers = 4
    slave_parallel_type = LOGICAL_CLOCK
    
    open_files_limit    = 65535
    back_log = 1024
    max_connections = 1024
    max_connect_errors = 1000000
    table_open_cache = 1024
    table_definition_cache = 1024
    table_open_cache_instances = 64
    thread_stack = 512K
    external-locking = FALSE
    max_allowed_packet = 32M
    sort_buffer_size = 4M
    join_buffer_size = 4M
    thread_cache_size = 1536
    interactive_timeout = 600
    wait_timeout = 600
    tmp_table_size = 32M
    max_heap_table_size = 32M
    slow_query_log = 1
    log_timestamps = SYSTEM
    slow_query_log_file = /usr/local/mysql/logs/slow.log
    log-error = /usr/local/mysql/logs/error.log
    long_query_time = 0.1
    log_queries_not_using_indexes =1
    log_throttle_queries_not_using_indexes = 60
    min_examined_row_limit = 100
    log_slow_admin_statements = 1
    log_slow_slave_statements = 1
    server-id = 3306
    log-bin = /usr/local/mysql/logs/mysql-bin
    sync_binlog = 1
    binlog_cache_size = 4M
    max_binlog_cache_size = 2G
    max_binlog_size = 1G
    binlog_expire_logs_seconds=2592000
    master_info_repository = TABLE
    relay_log_info_repository = TABLE
    gtid_mode = on
    enforce_gtid_consistency = 1
    log_slave_updates
    slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'
    binlog_format = row
    binlog_row_image=FULL
    binlog_checksum = 1
    relay_log_recovery = 1
    relay-log-purge = 1
    key_buffer_size = 32M
    read_buffer_size = 8M
    read_rnd_buffer_size = 4M
    bulk_insert_buffer_size = 64M
    myisam_sort_buffer_size = 128M
    myisam_max_sort_file_size = 10G
    myisam_repair_threads = 1
    lock_wait_timeout = 3600
    explicit_defaults_for_timestamp = 1
    innodb_thread_concurrency = 0
    innodb_sync_spin_loops = 100
    innodb_spin_wait_delay = 30
    
    #transaction_isolation = REPEATABLE-READ
    transaction_isolation = READ-COMMITTED
    #innodb_additional_mem_pool_size = 16M
    innodb_buffer_pool_size = 2867M
    innodb_buffer_pool_instances = 4
    innodb_buffer_pool_load_at_startup = 1
    innodb_buffer_pool_dump_at_shutdown = 1
    innodb_data_file_path = ibdata1:1G:autoextend
    innodb_flush_log_at_trx_commit = 1
    innodb_log_buffer_size = 32M
    innodb_log_file_size = 2G
    innodb_log_files_in_group = 3
    innodb_max_undo_log_size = 4G
    innodb_undo_directory = /data/mysql/undolog
    innodb_undo_tablespaces = 95
    
    # 根据您的服务器IOPS能力适当调整
    # 一般配普通SSD盘的话,可以调整到 10000 - 20000
    # 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
    innodb_io_capacity = 4000
    innodb_io_capacity_max = 8000
    innodb_flush_sync = 0
    innodb_flush_neighbors = 0
    innodb_write_io_threads = 8
    innodb_read_io_threads = 8
    innodb_purge_threads = 4
    innodb_page_cleaners = 4
    innodb_open_files = 65535
    innodb_max_dirty_pages_pct = 50
    innodb_flush_method = O_DIRECT
    innodb_lru_scan_depth = 4000
    innodb_checksum_algorithm = crc32
    innodb_lock_wait_timeout = 10
    innodb_rollback_on_timeout = 1
    innodb_print_all_deadlocks = 1
    innodb_file_per_table = 1
    innodb_online_alter_log_max_size = 4G
    innodb_stats_on_metadata = 0
    
    # some var for MySQL 8
    log_error_verbosity = 3
    innodb_print_ddl_logs = 1
    binlog_expire_logs_seconds = 2592000
    #innodb_dedicated_server = 0
    
    innodb_status_file = 1
    # 注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log-error文件增长较快
    innodb_status_output = 0
    innodb_status_output_locks = 0
    
    #performance_schema
    performance_schema = 1
    performance_schema_instrument = '%memory%=on'
    performance_schema_instrument = '%lock%=on'
    
    #innodb monitor
    innodb_monitor_enable="module_innodb"
    innodb_monitor_enable="module_server"
    innodb_monitor_enable="module_dml"
    innodb_monitor_enable="module_ddl"
    innodb_monitor_enable="module_trx"
    innodb_monitor_enable="module_os"
    innodb_monitor_enable="module_purge"
    innodb_monitor_enable="module_log"
    innodb_monitor_enable="module_lock"
    innodb_monitor_enable="module_buffer"
    innodb_monitor_enable="module_index"
    innodb_monitor_enable="module_ibuf_system"
    innodb_monitor_enable="module_buffer_page"
    innodb_monitor_enable="module_adaptive_hash"
    
    [mysqldump]
    quick
    max_allowed_packet = 32M
    
    [mysqld_safe]
    #malloc-lib=/usr/local/mysql/lib/jmalloc.so
    nice=-19
    open-files-limit=65535
    

    修改目录权限

    数据目录
    # sudo chown -R mysql.mysql /data/mysql
    日志目录
    # sudo mkdir /usr/local/mysql/logs
    # sudo chown mysql:mysql /usr/local/mysql/logs
    
    

    初始化数据库

    # cd /usr/local/mysql
    # sudo bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql --initialize
    查看初始密码
    # sudo cat logs/error.log | grep -i password
    启动数据库
    # sudo cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql
    # sudo /etc/init.d/mysql start
    登录root用户并修改默认密码
    # sudo bin/mysql -u root -p
    输入初始密码后登录
    # > alter user root@'localhost' identified by '你的新密码';
    创建可以远程登录的用户(可选)
    # > create user root@'%' identified by '你的远程密码';
    # > grant all privileges on *.* to root@'%' with grant option;
    # > flush privileges;
    
    

    设置环境变量及自启动

    # vim /etc/profile.d/mysql.sh
    在其中添加 export PATH=$PATH:/usr/local/mysql/bin
    # sudo chkconfig mysql on
    

    添加端口放行

    # sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
    # sudo firewall-cmd --reload
    

    安装Nginx(yum方式)

    下载-编译-安装
    # cd ~
    # rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    # sudo yum install nginx
    # sudo systemctl enable nginx
    # sudo systemctl start nginx
    # sudo firewall-cmd --zone=public --permanent --add-service=http
    # sudo firewall-cmd --reload
    

    安装MAVEN

    下载Maven包-解压缩-配置环境变量
    # wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
    # tar -xzvf apache-maven-3.6.2-bin.tar.gz 
    # sudo mv apache-maven-3.6.2 /usr/local/
    # cd /usr/local && sudo ln -s apache-maven-3.6.2 maven
    编辑默认配置文件(调整私有库及默认存储位置等)
    # cd maven && sudo vim conf/setting.xml
    添加M2_HOME变量并将其添加到PATH变量中
    # sudo vim /etc/profile
    # sudo source /etc/profile
    # mvn --version
    

    安装Redis(单实例模式)

    下载压缩包
    # wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    # tar xzf redis-5.0.5.tar.gz -C /usr/local/redis
    # cd /usr/local/redis && mv redis-5.0.5/* ./ && rm -rf redis-5.0.5
    
    编译
    # make  MALLOS=libc
    # cd src && make install
    
    编辑配置文件
    # vim redis.conf
    搜索 daemonize no 改为 daemonize yes
    搜索 requirepass  添加 requirepass 你设置的密码
    搜索 bind 127.0.0.1 然后注释掉
    # mkdir /etc/redis
    # mv redis.conf /etc/redis/6379.conf
    
    设置自启动
    # cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis
    - 修改启动脚本
    # vim /etc/init.d/redis
    - 在/etc/init.d/redis文件的头部添加下面两行注释代码,也就是在文件中#!/bin/sh的下方添加
    chkconfig: 2345 10 90  
    description: Start and Stop redis
    - 指定redis的安装路径和pid文件路径
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server  # 指定的执行路径
    CLIEXEC=/usr/local/bin/redis-cli
    PIDFILE=/var/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/${REDISPORT}.conf"
    - 若设置了密码,则需要修改stop脚本
    stop)
            if [ ! -f $PIDFILE ]
            then
                    echo "$PIDFILE does not exist, process is not running"
            else
                    PID=$(cat $PIDFILE)
                    echo "Stopping ..."
                    $CLIEXEC -a 你的密码 -p $REDISPORT shutdown
                    while [ -x /proc/${PID} ]
                    do
                        echo "Waiting for Redis to shutdown ..."
                        sleep 1
                    done
                    echo "Redis stopped"
            fi
            ;;
    - 停止输出结果
    
    
    打开防火墙
    # firewall-cmd --zone=public --add-port=6379/tcp --permanent
    # firewall-cmd --reload
    
    设为开机启动
    # chkconfig redis on
    
    
    
    
    

    相关文章

      网友评论

          本文标题:基于CentOS7安装MySql、Nginx、Redis及配置J

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