Linux笔记

CentOS7:查看某个端口被哪个进程占用

# 安装net-tools工具
yum install net-tools
# 查看端口被占用情况
netstat -lnp | grep 8080
# 查看tcp连接状态
netstat -an | grep tcp

Linux 追踪系统调用

# 安装 strace
yum -y install strace
# 追踪 java 程序的系统调用情况,为每个线程生成一个以out开头的追踪日志文件
strace -ff -o out java Main

Linux 网络连接工具

# 安装 nc
yum -y install nc
# 以随机端口号向ip:port发起tcp连接
nc ip port
# 查看mac地址
arp -a

# 查看路由表
route -n

# 抓包
tcpdump 

CentOS7:防火墙配置

  • 关闭防火墙

    systemctl stop firewalld.service #关闭防火墙
    systemctl disable firewalld.service #取消开机启动
    
  • 查看防火墙服务状态

    systemctl status firewalld
    
  • 查看防火墙服的状态

    firewall-cmd --state
    
  • 查看防火墙规则

    firewall-cmd --list-all
    
  • 查询端口是否开放

    firewall-cmd --query-port=8080/tcp
    
  • 添加开放端口

    # --permanent:表示设置为持久
    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --permanent --add-port=8080/udp
    
  • 移除开放端口

    firewall-cmd --permanent --remove-port=8080/tcp
    firewall-cmd --permanent --remove-port=8080/udp
    
  • 重启防火墙 (修改配置后要重启防火墙)

    firewall-cmd --reload
    

安装并配置JDK环境变量

  1. 下载JDK

    https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

  2. 解压到指定目录

    # 查看当前目录下的安装包
    [root@localhost ~]# ll
    total 190428
    -rw-------. 1 root root      1235 Jun  4 07:03 anaconda-ks.cfg
    -rw-r--r--. 1 root root 194990602 Jul 16 20:39 jdk-8u211-linux-x64.tar.gz
    
    # 创建要解压的目标文件夹
    [root@localhost ~]# mkdir -p /usr/local/jdk
    
    # 解压到指定目录
    [root@localhost ~]# tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/jdk/
    
    # 查看解压后的文件夹
    [root@localhost ~]# ll /usr/local/jdk/
    total 0
    drwxr-xr-x. 7 10 143 245 Apr  1  2019 jdk1.8.0_211
    
  3. 修改 /etc/profile 文件

    vim /etc/profile
    
    # 文件末尾加上下面这三行(此处注意jdk版本号/所在目录)
    export JAVA_HOME=/usr/local/jdk/jdk1.8.0_211
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$PATH
    
    # 刷新环境变量
    source /etc/profile
    
  4. 验证安装结果

    [root@localhost ~]# java -version
    java version "1.8.0_211"
    Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
    

安装 Docker

  1. 更新yum到最新

    yum update
    
  2. 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 设置yum源(选择其中一个)

    yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
    
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
    
  4. 查看所有仓库中所有docker版本,并选择特定版本安装

    yum list docker-ce --showduplicates | sort -r
    
  5. 安装Docker,命令:yum install docker-ce-版本号

    yum install docker-ce-18.03.1.ce
    
  6. 启动Docker

    systemctl start docker
    
  7. 加入开机自启

    systemctl enable docker
    

Docker 安装MySQL

  1. 安装 Docker

    如果机器上还没有安装 docker 可参考此文章:Linux 安装 Docker

  2. 拉取 MySQL 镜像

    [root@localhost ~]# docker pull mysql:5.7
    
  3. 查看本地镜像

    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mysql               5.7                 d05c76dbbfcf        33 hours ago        448MB
    
  4. 创建数据卷

    此步骤主要是为了让自己清楚MySQL的数据持久化到哪里了。(可省略,创建容器时不指定数据卷会自动分配一个数据卷)

    # 创建数据卷
    [root@localhost ~]# docker volume create mysqldata
    mysqldata
    
    # 查看数据卷
    [root@localhost ~]# docker volume ls
    DRIVER              VOLUME NAME
    local               mysqldata
    
    # 查看数据卷文件夹所在的目录
    [root@localhost ~]# ll /var/lib/docker/volumes/
    total 24
    -rw-------. 1 root root 32768 Jul 15 07:50 metadata.db
    drwxr-xr-x. 3 root root    19 Jul 15 07:50 mysqldata
    
  5. 创建并运行容器

    # -d 表示后台运行,-p 端口映射,主机端口3306端口到容器3306端口
    # -v 目录映射 “:” 前是主机目录(或数据卷),之后为容器的目录(安装MySQL时此项不指定会默认分配一个数据卷)
    # -e 设置数据库root访问密码
    # --name 设置容器名称(不指定会分配随机字符串)
    # mysql:5.7  创建容器的镜像和镜像版本
    [root@localhost ~]# docker run -d -p 3306:3306 -v mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
    0107b2917e95eadacfa4f94ebeefa00d6cfcd319c63a3bb17fd88737efcfd742
    
  6. 查看容器

    # 查看运行的容器
    [root@localhost ~]# docker ps
    
    # 查看所有容器
    [root@localhost ~]# docker ps -a
    
  7. 容器的启动、停止、重启

    # 停止容器
    [root@localhost ~]# docker stop mysql
    mysql
    
    # 启动容器
    [root@localhost ~]# docker start mysql
    mysql
    
    # 重启容器
    [root@localhost ~]# docker restart mysql
    mysql
    

Docker 安装 Redis

  1. 查看 Redis 的可用版本

    docker search redis
    
  2. 拉取最新版的 Redis 镜像

    docker pull redis:latest
    
  3. 查看本地镜像

    docker images
    
  4. 运行容器

    # 无配置文件
    docker run -itd --name redis -p 6379:6379 redis
    
    # 加载自定义配置文件
    docker run -itd --name redis -v /docker/redis/conf/redis.conf:/etc/redis.conf -v /root/usr/local/redis/data:/data -p 6379:6379 redis redis-server /etc/redis.conf
    
  5. 安装成功,查看docker容器的运行信息

    docker ps
    
  6. 进入容器内部

    docker exec -it redis /bin/bash
    

Docker 命令记录

启动docker:service docker start

查看本地镜像:docker images

后台启动本地镜像(创建容器):docker run -d mysql

重启容器:docker restart mysql

启动容器:docker start mysql

查看正在运行的容器:docker ps

宿主机和容器之间的文件拷贝:docker cp 容器ID或容器名:容器路径 宿主机文件路径

进入docker虚拟机内部:docker exec -it mysql /bin/bash

CentOS7 设置网络

使用vi修改文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=8c2cbd94-e020-4abe-a581-89b1129784c1
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.40.132
GATEWAY=192.168.40.2
DNS1=192.168.40.2
NETMASK=255.255.255.0

重启网络服务:service network restart

CentOS 7 安装 Redis

  1. 使用 wget 下载 redis包,redis-6.0.1.tar.gz

    wget http://download.redis.io/releases/redis-6.0.1.tar.gz
    
  2. 解压redis-6.0.1.tar.gz

    tar -zxvf redis-6.0.1.tar.gz
    
  3. 安装gcc

    yum -y install gcc
    
    # 查看gcc的版本
    gcc -v
    
    # 升级gcc 到5.3及以上
    yum -y install centos-release-scl
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    
    # 临时启用gcc9版本
    scl enable devtoolset-9 bash
    
    # 永久使用gcc9版本
    echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
    
  4. 进入解压后的文件夹redis-6.0.1,然后编译安装到指定目录

    cd redis-6.0.1
    
    # 编译并安装到指定目录
    make PREFIX=/usr/local/redis install
    
  5. 找一个redis配置文件放到安装目录下(其实随便哪里都可以,放在安装目录下好找)

    配置文件在第二步解压后的文件夹里就有一份:redis.conf

    修改配置文件:例如设置密码、主从配置、持久化等等。

    这里有我改好的redis.conf:点此下载

  6. 启动Redis验证安装成果!

    # 先进入redis安装目录下
    cd /usr/local/redis
    
    ./bin/redis-server ./redis.conf &
    # 设置守护线程(daemonize yes)(后台运行)后,不需要在命令结尾加 & 符号
    
  7. 连接 Redis

    # 先进入redis安装目录下
    cd /usr/local/redis
    
    ./bin/redis-cli 
    127.0.0.1:6379> auth 123456 # 如果Redis设置了密码,需要这一步
    OK
    

Redis 的一些命令

redis-cli命令

# 连接到远程服务
redis-cli -h host -p port

查看当前redis的信息,例如节点类型是master还是slave

info replication

设置此redis为另一台redis的slave

SLAVEOF 192.168.40.151 6379

启动redis

# 先进入redis安装目录下
cd /usr/local/redis

./bin/redis-server ./redis.conf &
# 设置守护线程(daemonize yes)(后台运行)后,不需要在命令结尾加 & 符号

停止redis

# 先进入redis安装目录下
cd /usr/local/redis

./bin/redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> shutdown
not connected> exit

连接 Redis

# 先进入redis安装目录下
cd /usr/local/redis

./bin/redis-cli 
127.0.0.1:6379> auth 123456 # 如果Redis设置了密码,需要这一步
OK

设置Redis集群(通过redis-trib.rb创建)已过时

# 安装ruby运行环境
yum -y install ruby

# 使用redis-trib.rb创建集群(redis-trib.rb在源码包的src文件夹中,需要自己拷贝出来)
./bin/redis-trib.rb create --replicas 1 192.168.40.131:6379 192.168.40.134:6379 192.168.40.135:6379

设置Redis集群(通过 redis-cli 方式)

# redis.conf 设置以下三个属性
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000

# 如果集群中的节点使用6379端口,那么集群通讯端口为16379
# 需要打开16379端口
firewall-cmd --permanent --add-port=16379/tcp
firewall-cmd --reload

# 创建集群
./bin/redis-cli --cluster create 192.168.40.131:6379 192.168.40.134:6379 192.168.40.135:6379 -a 123456

# 向集群添加一个节点(第一个参数为要添加的新节点,第二个参数为现有集群中的任意一个节点)
./bin/redis-cli --cluster add-node 192.168.40.135:6380 192.168.40.135:6379 -a 123456

# 集群重新分片

CentOS 7 安装 nginx

  1. 安装依赖

    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
    
  2. 下载安装包

    wget http://nginx.org/download/nginx-1.19.0.tar.gz
    
  3. 解压安装包

    tar -zxvf nginx-1.19.0.tar.gz
    
  4. 进入解压后的文件夹,然后编译安装

    cd nginx-1.19.0
    
    # 创建安装的目录
    mkdir /usr/local/nginx
    
    # 指定配置
    ./configure --prefix=/usr/local/nginx
    
    # 编译 安装
    make
    make install
    
  5. 进入安装后的目录,测试是否安装成功

    cd /usr/local/nginx
    
    # 测试是否安装成功
    ./sbin/nginx -t
    # 安装成功后执行上面的命令会输出以下两行
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    
    # 启动nginx
    ./sbin/nginx
    
    # 别忘了打开80端口
    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --permanent --add-port=80/udp
    firewall-cmd --reload
    
  6. 在浏览器访问nginx

    在地址栏输入服务器IP地址,例:http://192.168.40.137/

    nginx安装成功的访问界面

Nginx 配置解析说明

Nginx 遇到的问题解决方法

反向代理报 400 错误

location 中设置:proxy_set_header Host $http_host;

Linux 常用命令的使用

find

将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

find . -name "*.c"

将目前目录其其下子目录中所有一般文件列出

find . -type f

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

find . -ctime -20

查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

find /var/log -type f -mtime +7 -ok rm {} \;

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

find . -type f -perm 644 -exec ls -l {} \;

为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

find / -type f -size 0 -exec ls -l {} \;

Linux 时间相关操作

设置时区

例如:设置系统时区为亚洲上海

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置系统时间:

date -s "2012-05-23 01:01:01"

查看时间

date +"%Y-%m-%d %H:%M:%S"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值