Centos7

基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
who 登录日志
who am i 当前登录用户
ifconfig 查看ip地址
clear 清屏
sed -n '5,10p' filename 查看指定文件5到10行


rpm 安装
rpm -ivh * 安装某软件(ivh显示安装进度)
tar 解压
tar -zxvf * 使用gz解压显示进度

ps -ef 查看进程
ps -ef | grep redis 查看redis的进程

systemctl status/stop/disable firewalld.service 防火墙

网络配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# vi /etc/sysconfig/network-scripts/ifcfg-ens33

[root@localhost network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="6d1accaa-7419-498a-9551-a473c183b8f4"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.45.128"
PREFIX="24"
GATEWAY="192.168.45.2"
IPV6_PRIVACY="no"

常用配置

Jdk1.8

1.解压

1
tar -zxvf jdk-8u144-linux-x64.tar.gz # 这里指定解压到哪里

2.环境配置

image-20200904174801153

.bash_profile或者/etc/profile中配置

1
2
export JAVA_HOME=/root/envs/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH

执行source .bash_profile使环境变量生效

Tomcat 9.0.37

解压安装即可

Nginx

安装

  • 首先安装zlib-devel-1.2.7-17.el7.x86_64.rpm

image-20200904175931416

  • 解压pcre-8.38.tar.gz

    1
    tar -zxvf pcre-8.38.tar.gz -C /www/server
  • 安装pcre-8.38.tar.gz

1
2
3
cd ~/envs/pcre-8.38/
./configure
make && make install

image-20200904180813524

image-20200904181053400

image-20200904181132870

  • 解压

image-20200904181344206

  • 安装

    1
    2
    3
    cd ~/envs/nginx-1.15.6/ 
    ./configure
    make && make install

跟上面一样

  • 启动Nginx
1
2
cd /usr/local/nginx/sbin/
./nginx

image-20200904181700719

启动成功

测试:http://192.168.45.111/

image-20200904181903480

反向代理&&负载均衡(Load Balance)

1
2
cd /usr/local/nginx/conf
vi nginx.conf

配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#1
upstream local.this52.cn{
server 192.168.45.112:8080;
server 192.168.45.113:8080;
}

server {
listen 80;
server_name localhost;
#基于反向代理访问tomcat服务器
location / {
proxy_pass http://local.this52.cn;
}

}

#2
upstream tomcatserver {
server 192.168.45.122:8080 ;
server 192.168.45.123:8080 ;
}
server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
# root html;
# index index.html index.htm;
#
proxy_pass http://tomcatserver;
}

location路径映射

1
2
3
4
# 1. 精准匹配
location =/ {
#精准匹配
}
1
2
3
4
# 2.通用匹配
location / {
# 匹配所有以/开头的路径
}
1
2
3
4
5
6
7
# 2.正则匹配
location ~ /xx {
# 匹配所有以/xx开头的路径(区分大小写)
}
location ~* /xx{
# 匹配所有以/xx开头的路径(不区分大小写)
}

动静分离

动态资源代理
1
2
3
location / {
proxy_pass 路径;
}

静态资源代理

1
2
3
4
5
6
7
8
location / {
root 静态资源路径;
index 默认访问路径下的资源;
autoindex on; # 开启目录浏览(索引)
autoindex_exact_size off; # 显示文件大小
autoindex_localtime on; # 显示时间
charset utf-8; # 解决中文乱码
}

集群

解决单点故障,避免nginx宕机

使用keepalived监听nginx状况

使用haproxy,提供虚拟路径,接受用户请求

yum源

1
2
3
sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

sudo yum install nginx

set_header

1
2
3
4
5
6
proxy_pass http://abc.com;
proxy_set_header Host $host;#保留代理之前的host
proxy_set_header X-Real-IP $remote_addr;#保留代理之前的真实客户端ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;#在多级代理的情况下,记录每次代理之前的客户端真实ip
proxy_redirect default;#指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值

反向代理静态资源404

1
2
3
4
# 单独处理
location ~ .*\.(js|css)$ {
proxy_pass http://149.28.31.159:65432;
}

问题

1
2
3
4
5
6
7
# nginx转发请求异常的解决办法 failed (13: Permission denied) while connecting to upstream

# 两种方法
1. 开启httpd网络连接 执行
setsebool httpd_can_network_connect=1 (重启后失效)
setsebool -P httpd_can_network_connect 1 (重启后保留)
2. 修改nginx.conf中user nginx为 user root

image-20201128125941903

MySQL5.7安装(基于Centos7)

1.安装Yum Repo

1
2
3
4
5
6
7
8
# 下载
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

# 安装yum源
yum localinstall -y mysql57-community-release-el7-9.noarch.rpm

# 或者
yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

检查yum源是否安装成功

1
yum repolist enabled | grep "mysql.*-community.*"

image-20201027135906324

2.安装MySQL

1
2
3
4
5
6
7
8
yum install -y mysql-community-server

# 启动
systemctl start mysqld

# 开机自启
systemctl enable mysqld
# 查看状态

image-20201027144604710

查看密码

1
grep 'temporary password' /var/log/mysqld.log

image-20201027144706027

登录mysql -uroot -pqLqMjAj3q2-J

修改密码

1
2
3
4
5
6
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

# 默认不能设置简单密码,更改全局策略
set global validate_password_policy=0;
set global validate_password_length=1;

3.其他配置

1
2
3
4
5
6
7
8
# 配置字符集
编辑/etc/my.cnf,在[mysqld]配置
character-set-server=utf8

# 开启远程控制
grant all privileges on *.* to root@"root" identified by "root";

flush privileges; #刷新

5.卸载MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rpm -qa |grep -i mysql # 查看mysql安装的依赖
# 卸载
yum remove mysql...


# 查找mysql相关目录
find / -name mysql
# 删除
rm -rf

# 删除/etc/my.cnf
rm -rf /etc/my.cnf

# 删除/var/log/mysqld.log
rm -rf /var/log/mysqld.log

MySql5.7主从复制(基于Docker)

1.安装

这里使用Docker创建三个个mysql容器

架构划分

192.168.56.10:3306 master节点

192.168.56.10:3307 slave节点

192.168.56.10:3308 slave节点

1
2
3
4
5
6
7
8
9
10
11
# 拉取镜像
docker pull mysql:5.7
# 创建两个mysql容器并挂载配置文件以及数据以及设置环境
#master
docker run -d -p3306:3306 -v /home/mysql/master-conf:/etc/mysql/conf.d -v /home/mysql/master-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql-master ef08065b0a30

#slave1
docker run -d -p3307:3306 -v /home/mysql/slave1-conf:/etc/mysql/conf.d -v /home/mysql/slave1-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql-slave1 ef08065b0a30

#slave2
docker run -d -p3308:3306 -v /home/mysql/slave2-conf:/etc/mysql/conf.d -v /home/mysql/slave2-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql-slave2 ef08065b0a30

容器ok,卷挂载ok

2.测试连接

image-20201007153436525连接ok!

3.配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#master
vim master-conf/my.cnf

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

server-id=1 #唯一标识
log-bin=mysql-bin #日志名
log-slave-updates #日志变化时从节点自动更新
slave-skip-errors=all #跳过错误日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#slave1
vim slave1-conf/my.cnf

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

server-id=2
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#slave2
vim slave1-conf/my.cnf

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

server-id=3
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all

重启mysql容器

1
docker restart CONTAINER_ID

查看配置是否生效

1
SHOW VARIABLES like 'server_id';

image-20201007165945606

slave节点也都ok

登录master查看状态

1
show master status;

image-20201007170504180

登录slave节点设置对应master

1
2
3
4
5
6
change master to 
master_host='172.17.0.4',
master_user='root',
master_password='root',
master_log_file='mysql-bin.000001',
master_log_pos=154;

开启/关闭从节点

1
start/stop slave;

登录slave查看状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> show slave status\G; # 加上\G可以格式化查看
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.17.0.4
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: 3fb4da57e759-relay-bin.000004
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

4.测试主从复制

image-20201007195031809master创建表和数据库后slave节点都同步过去了

MySql读写分离

评论