文章目录
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环境变量
-
下载JDK
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
-
解压到指定目录
# 查看当前目录下的安装包 [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
-
修改 /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
-
验证安装结果
[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
-
更新yum到最新
yum update
-
安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
-
设置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(阿里仓库)
-
查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
-
安装Docker,命令:yum install docker-ce-版本号
yum install docker-ce-18.03.1.ce
-
启动Docker
systemctl start docker
-
加入开机自启
systemctl enable docker
Docker 安装MySQL
-
安装 Docker
如果机器上还没有安装 docker 可参考此文章:Linux 安装 Docker
-
拉取 MySQL 镜像
[root@localhost ~]# docker pull mysql:5.7
-
查看本地镜像
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 d05c76dbbfcf 33 hours ago 448MB
-
创建数据卷
此步骤主要是为了让自己清楚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
-
创建并运行容器
# -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
-
查看容器
# 查看运行的容器 [root@localhost ~]# docker ps # 查看所有容器 [root@localhost ~]# docker ps -a
-
容器的启动、停止、重启
# 停止容器 [root@localhost ~]# docker stop mysql mysql # 启动容器 [root@localhost ~]# docker start mysql mysql # 重启容器 [root@localhost ~]# docker restart mysql mysql
Docker 安装 Redis
-
查看 Redis 的可用版本
docker search redis
-
拉取最新版的 Redis 镜像
docker pull redis:latest
-
查看本地镜像
docker images
-
运行容器
# 无配置文件 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
-
安装成功,查看docker容器的运行信息
docker ps
-
进入容器内部
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
-
使用 wget 下载 redis包,redis-6.0.1.tar.gz
wget http://download.redis.io/releases/redis-6.0.1.tar.gz
-
解压redis-6.0.1.tar.gz
tar -zxvf redis-6.0.1.tar.gz
-
安装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
-
进入解压后的文件夹redis-6.0.1,然后编译安装到指定目录
cd redis-6.0.1 # 编译并安装到指定目录 make PREFIX=/usr/local/redis install
-
找一个redis配置文件放到安装目录下(其实随便哪里都可以,放在安装目录下好找)
配置文件在第二步解压后的文件夹里就有一份:redis.conf
修改配置文件:例如设置密码、主从配置、持久化等等。
这里有我改好的redis.conf:点此下载
-
启动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 # 如果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
-
安装依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
-
下载安装包
wget http://nginx.org/download/nginx-1.19.0.tar.gz
-
解压安装包
tar -zxvf nginx-1.19.0.tar.gz
-
进入解压后的文件夹,然后编译安装
cd nginx-1.19.0 # 创建安装的目录 mkdir /usr/local/nginx # 指定配置 ./configure --prefix=/usr/local/nginx # 编译 安装 make make install
-
进入安装后的目录,测试是否安装成功
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
-
在浏览器访问nginx
在地址栏输入服务器IP地址,例:http://192.168.40.137/
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"