一、linux系统初始化操作
1.配置阿里云yum源
(1)创建备份目录
mkdir /etc/yum.repos.d/repos.bak
(2)移动原有目录所有文件至备份目录下
mv /etc/yum.repos.d/* /etc/yum.repos.d/repos.bak
(3)下载阿里yum源和epel源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
(4)清除缓存并建立新缓存
yum clear all
yum makecache
二、数据库
MySQL
1.yum安装方式
(1)下载MySQL
yum -y install mariadb-server mariadb
2.源代码编译安装方式
(1)前期准备工作
编译前安装依赖
yum -y install ncurses-devel openssl-devel bison gcc gcc-c++ make cmake boost
下载Boost_1_59_0
cd /usr/local/src
wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar -xvzf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
新建组和msyql用户禁止登录 shell,创建mysql目录及数据库目录
groupadd -r mysql
useradd -r -g mysql -s /bin/false -M mysql
mkdir -p /usr/local/mysql/data
获取代码源码包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.40.tar.gz
解压下载文件
tar -xvzf mysql-5.7.40.tar.gz
(2)make开始编译安装
执行cmake,生成makefile,用于编译安装
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_SYSTEMD=1 \
-DWITH_BOOST=/usr/local/boost
执行make开始安装
make && make install
修改PATH变量并重新加载profile文件
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
设置权限
cd /usr/local/mysql
chown -R mysql:mysql .
修改my.cnf配置文件
echo -e '[mysqld]\nbasedir=/usr/local/mysql/\ndatadir=/usr/local/mysql/data\npid_file=/usr/local/mysql/data/mysqld.pid\nlog_error=/usr/local/mysql/data/mysql.log\nsocket=/tmp/mysql.sock' > /etc/my.cnf
将MySQL服务器的启动脚本复制到/etc/init.d/mysqld
目录下
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
在mysqld.service,把默认的 pid 文件指定到了/var/run/mysqld/目录,需要修改pid默认文件位置
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
vim /usr/lib/systemd/system/mysqld.service
修改两行pid文件位置
PIDFile=/usr/local/mysql/data/mysqld.pid
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS
重启mysql服务
systemctl enable mysqld
systemctl restart mysqld
(3)登陆MySQL
查看系统默认密码
grep password /usr/local/mysql/data/mysql.log
修改默认密码
alter user root@localhost identified by '123456';
3.rpm包安装方式
(1)解决MySQL安装所需依赖关系并获取rpm包下载地址
所需4个软件包
mysql-client 5.6.50
mysql-devel
mysql-server
mysql-shared
https://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-client-5.6.50-1.el7.x86_64.rpm
https://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-devel-5.6.50-1.el7.x86_64.rpm
https://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-server-5.6.50-1.el7.x86_64.rpm
https://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-shared-5.6.50-1.el7.x86_64.rpm
Redis
1.YUM安装方式
yum -y install redis
# 启动redis
redis-server /etc/redis.conf
# 关闭redis
redis-cli shutdown
# 连接redis
redis-cli
2.编译安装方式
# 环境部署
yum install -y gcc-c++
# 下载redis压缩包
wget https://github.com/redis/redis/archive/7.2.4.tar.gz
# 解压文件
tar -xvzf 7.2.4.tar.gz
#移动文件至opt目录
mv redis-7.2.4/ /opt
# 执行make编译安装
make && makeinstall
# 创建文件夹并将redis配置文件复制到创建的目录
mkdir /usr/local/bin/config
cp /opt/redis-7.2.4/redis.conf /usr/local/bin/config
# 设置redis后台启动
# 修改配置文件的 daemonize no为yes
vim /usr/local/bin/config/redis.conf
3.Redis启停控制
# 启动Redis服务
redis-server /usr/local/bin/config/redis.conf
# 连接redis
redis-cli -p 6379
# 停止Redis服务 连接Redis后执行shutdown
shutdown
4.配置文件详解
# 网络配置
bind 127.0.0.1 # 绑定的IP
protected-mode yes # 保护模式
port 6379 # 端口设置
# 通用配置
daemonize yes # 是否以守护进程开启 默认为no
pidfile /var/run/redis_6379.pid # 如果以后台方式运行,需要指定一个pid文件
# 日志
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
# nothing (nothing is logged)
loglevel notice # 日志文件等级
logfile "" # 日志文件位置名
databases 16 # 数据库数量,默认16个
always-show-logo no # 是否总是显示LOGO
# 快照
save 900 1 # 在900秒内,有1key进行了修改,就进行持久化操作
save 300 10 # 在300秒内,有10key进行了修改,就进行持久化操作
save 60 10000 # 在60秒内,有10000key进行了修改,就进行持久化操作
stop-writes-on-bgsave-error yes #如果持久化出错,是否继续工作
rdbcompression yes # 是否压缩rdb文件,需要消耗cpu资源
rdbchecksum yes # 保存rbd文件时,是否进行校验
dir ./ # rdb文件保存目录
# 限制clients
maxclients 10000 # 设置最大连接数
maxmemory <bytes> # 设置最大内存容量
maxmemory-policy noeviction # 内存达到上限的处理策略
# 1、volatile-lru: 只对设置了过期时间的key进行LRU(默认值)
# 2、a11keys-lru: 删除lru算法的key
# 3、volatile-random: 随机删除即将过期key
# 4、a11keys-random: 随机删除
# 5、volatile-ttl: 删除即将过期的
# 6、noeviction: 永不过期,返回错误
# AOF配置 APPEND ONLY
appendonly no #是否开始AOF模式,默认用rdb方式持久化
appendfilename "appendonly.aof" # 持久化文件名
# appendfsync always # 每次修改都会sync,消耗性能
appendfsync everysec # 每秒执行一次sync,可能会丢失一秒数据
# appendfsync no # 不执行sync,操作系统自己同步,数据最快
5.密码设置
(1)配置文件设置
# 修改配置文件
vim /usr/local/bin/config/redis.conf
# 在security模块中添加
requirepass 123456
(2)命令设置
# 修改redis配置
vim /usr/local/bin/config/redis.conf
# 设置密码为123456
config set requirepass "123456"
6.主从复制搭建
(1)修改配置文件(长效)
# 修改redis配置文件
vim /usr/local/bin/config/redis.conf
# 修改bind为本机IP
bind 192.168.*.*
# 删除replicaof注释
slaveof [主节点IP] [主节点端口]
# 让从机恢复主机身份
slaveof no one
# 停止Redis服务 连接Redis后执行shutdown
shutdown
# 连接redis
redis-cli -h 配置文件指定IP -p 6379
(2)命令配置(短时)
# 查看主从复制状态
info replication
# redis-slave服务器指定某服务器为redis-master节点
slaveof [IP地址] [端口号]
7.哨兵模式
# 新增哨兵配置文件
mkdir /usr/local/bin/config/
vim /usr/local/bin/config/sentinel.conf
# 在哨兵配置文件中输入以下内容
# 被监控的名称 host port 1
sentinel monitor myredis redis的IP 端口号 1
# 启动哨兵
redis-sentinel /usr/local/bin/config/sentinel.conf
MongoDB
1.软件包安装方式
# 下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz
# 解压
tar -xvzf mongodb-linux-x86_64-rhel70-4.2.1.tgz
# 移动mongodb目录到/usr/local/mongo下
mkdir -p /usr/local/mongo
mv mongodb-linux-x86_64-rhel70-4.2.1/* /usr/local/mongo/
# cd到mongo目录并创建数据库目录,日志目录,配置文件目录和进程描述文件目录
cd /usr/local/mongo
mkdir -p data/db
mkdir -p logs
mkdir -p conf
mkdir -p pids
# 在conf目录,增加配置文件,并增加内容
vim /usr/local/mongo/conf/mongo.conf
#数据保存路径
dbpath=/usr/local/mongo/data/db/
#日志保存路径
logpath=/usr/local/mongo/logs/mongo.log
#进程描述文件
pidfilepath=/usr/local/mongo/pids/mongo.pid
#日志追加写入
logappend=true
bind_ip_all=true
#mongo默认端口
port=27017
#操作日志容量
oplogSize=10000
#开启子进程
fork=true
# 启动MongoDB服务端
/usr/local/mongo/bin/mongod -f /usr/local/mongo/conf/mongo.conf
# 启动MongoDB客户端
/usr/local/mongo/bin/mongo --host 127.0.0.1 --port 27017
2.副本集搭建
中间件
Tomcat
1.环境配置
# 下载JDK
yum install -y java-1.8.0-openjdk-devel.x86_64
vim /etc/profile
# 在profile文件中添加如下内容
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat
# 刷新环境配置
source /etc/profile
2.下载安装
# 下载tomcat11
wget wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.82/bin/apache-tomcat-8.5.82.tar.gz --no-check-certificate
# 解压
tar -xvzf apache-tomcat-8.5.82.tar.gz
# 移动tomcat至/usr/local目录下
mv apache-tomcat-8.5.82 /usr/local/tomcat
3.启停控制
sh /usr/local/tomcat/bin/startup.sh
sh /usr/local/tomcat/bin/shutdown.sh
4.配置管理
# 配置文件目录
/usr/local/tomcat/conf/server.xml
# 默认网页文件路径
/usr/local/tomcat/webapps/ROOT
Nginx
1.yum方式安装
yum -y install nginx
systemctl start nginx
2.编译方式安装
(1)安装编译环境及第三方依赖
yum -y install gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
(2)下载Nginx源码包并编译安装
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xvzf nginx-1.24.0.tar.gz
cd nginx-1.24.0/
./configure --prefix=/usr/local/nginx
make && make install
3.启动停止和重载
# 启动
/usr/local/nginx/sbin/nginx
# 停止
/usr/local/nginx/sbin/nginx -s stop
# 重载
/usr/local/nginx/sbin/nginx -s reload
4.配置管理
vim /usr/local/nginx/conf/nginx.conf
5.反向代理
/*修改server_name 后为用户访问的地址
在location中新增一条proxy_pass为代理的目标IP或域名; */
server {
listen 80;
server_name 192.168.126.129;
location / {
root html;
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
6.负载均衡
(1)负载均衡的配置
/*新增upstream模块,并修改proxy_pass*/
upstream myserver{
server 192.168.126.129:8080;
server 192.168.126.131:8080;
}
server {
listen 80;
server_name 192.168.126.129;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
(2)负载均衡的策略
a.轮询(默认策略)
每个请求按时间顺序逐一分配到不同的后端服务器
b.权重
weight 代表权重, 默认为 1,权重越高被分配的客户端越多
upstream myserver{
server 192.168.126.129:8080 weight=10;
server 192.168.126.131:8080 weight=10;
}
c.ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
upstream myserver {
ip_hash;
server 208.208.128.122:8081 ;
server 208.208.128.122:8082 ;
}
7.动静分离
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
location /www/ {
root /data/;
}
location /image/ {
root /data/;
autoindex on;
}
8.高可用架构
(1)安装keepalived
yum install -y keepalived
(2)修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# 本机IP
smtp_server 192.168.126.129
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
#(检测脚本执行的间隔)
interval 2
weight 2
}
vrrp_instance VI_1 {
# 备份服务器上将 MASTER 改为 BACKUP
state MASTER
# 填写网卡信息 ip a
interface ens33
# 主、备机的 virtual_router_id 必须相同,相当于唯一标识
virtual_router_id 51
# 主、备机取不同的优先级,主机值较大,备份机值较小
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# VRRP虚拟地址,需要设置在一个网段下
192.168.126.50
}
}
(3)增加检测脚本
vim /usr/local/src/nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
# nginx启动脚本位置
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
(4)修改hosts文件
vim /etc/hosts
127.0.0.1 LVS_DEVEL
(5)启动keepalived
systemctl start keepalived.service