基于CentOS7安装MySql、Nginx、Redis及配置Java、Maven和Git

安装之后首先升级内核到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及配置Java、Maven和Git)